diff --git a/CMakeLists.txt b/CMakeLists.txt index bbd9598780d..3cc935939f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1089,6 +1089,10 @@ elseif(APPLE) if(NOT 3D_CONNEXION_CLIENT_LIBRARY) set(WITH_INPUT_NDOF OFF) endif() + + if(WITH_INPUT_NDOF) + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework 3DconnexionClient") + endif() endif() else() diff --git a/GNUmakefile b/GNUmakefile index b6741d7e5f0..8446541cfae 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -35,17 +35,33 @@ OS_NCASE:=$(shell uname -s | tr '[A-Z]' '[a-z]') # Source and Build DIR's BLENDER_DIR:=$(shell pwd -P) BUILD_DIR:=$(shell dirname $(BLENDER_DIR))/build/$(OS_NCASE) +BUILD_TYPE:=Release +BUILD_CMAKE_ARGS:="" +# ----------------------------------------------------------------------------- +# additional targets for the build configuration + # support 'make debug' ifneq "$(findstring debug, $(MAKECMDGOALS))" "" BUILD_DIR:=$(BUILD_DIR)_debug BUILD_TYPE:=Debug -else - BUILD_TYPE:=Release +endif +ifneq "$(findstring lite, $(MAKECMDGOALS))" "" + BUILD_DIR:=$(BUILD_DIR)_lite + BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C$(BLENDER_DIR)/build_files/cmake/config/blender_lite.cmake +endif +ifneq "$(findstring headless, $(MAKECMDGOALS))" "" + BUILD_DIR:=$(BUILD_DIR)_bpy + BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C$(BLENDER_DIR)/build_files/cmake/config/blender_headless.cmake +endif +ifneq "$(findstring bpy, $(MAKECMDGOALS))" "" + BUILD_DIR:=$(BUILD_DIR)_bpy + BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C$(BLENDER_DIR)/build_files/cmake/config/bpy_module.cmake endif +# ----------------------------------------------------------------------------- # Get the number of cores for threaded build NPROCS:=1 ifeq ($(OS), Linux) @@ -61,14 +77,14 @@ ifeq ($(OS), NetBSD) NPROCS:=$(shell sysctl -a | grep "hw.ncpu " | cut -d" " -f3 ) endif - +# ----------------------------------------------------------------------------- # Build Blender all: @echo @echo Configuring Blender ... if test ! -f $(BUILD_DIR)/CMakeCache.txt ; then \ - cmake -H$(BLENDER_DIR) -B$(BUILD_DIR) -DCMAKE_BUILD_TYPE:STRING=$(BUILD_TYPE) ; \ + cmake $(BUILD_CMAKE_ARGS) -H$(BLENDER_DIR) -B$(BUILD_DIR) -DCMAKE_BUILD_TYPE:STRING=$(BUILD_TYPE); \ fi @echo @@ -80,9 +96,40 @@ all: @echo debug: all - # pass +lite: all +headless: all +bpy: all -# package types +# ----------------------------------------------------------------------------- +# Helo for build targets +help: + @echo "" + @echo "Convenience targets provided for building blender, (multiple at once can be used)" + @echo " * debug - build a debug binary" + @echo " * lite - disable non essential features for a smaller binary and faster build" + @echo " * headless - build without an interface (renderfarm or server automation)" + @echo " * bpy - build as a python module which can be loaded from python directly" + @echo "" + @echo "Project Files for IDE's" + @echo " * project_qtcreator - QtCreator Project Files" + @echo " * project_netbeans - NetBeans Project Files" + @echo " * project_eclipse - Eclipse CDT4 Project Files" + @echo "" + @echo "Package Targets" + @echo " * package_debian - build a debian package" + @echo " * package_pacman - build an arch linux pacmanpackage" + @echo " * package_archive - build an archive package" + @echo "" + @echo "Testing Targets (not assosiated with building blender)" + @echo " * test - run ctest, currently tests import/export, operator execution and that python modules load" + @echo " * test_cmake - runs our own cmake file checker which detects errors in the cmake file list definitions" + @echo " * test_pep8 - checks all python script are pep8 which are tagged to use the stricter formatting" + @echo " * test_deprecated - checks for deprecation tags in our code which may need to be removed" + @echo "" + +# ----------------------------------------------------------------------------- +# Packages +# package_debian: cd build_files/package_spec ; DEB_BUILD_OPTIONS="parallel=$(NPROCS)" sh ./build_debian.sh @@ -93,7 +140,10 @@ package_archive: make -C $(BUILD_DIR) -s package_archive @echo archive in "$(BUILD_DIR)/release" -# forward build targets + +# ----------------------------------------------------------------------------- +# Tests +# test: cd $(BUILD_DIR) ; ctest . --output-on-failure @@ -111,6 +161,21 @@ test_cmake: test_deprecated: python3 source/tests/check_deprecated.py + +# ----------------------------------------------------------------------------- +# Project Files +# + +project_qtcreator: + python3 build_files/cmake/cmake_qtcreator_project.py $(BUILD_DIR) + +project_netbeans: + python3 build_files/cmake/cmake_netbeans_project.py $(BUILD_DIR) + +project_eclipse: + cmake -G"Eclipse CDT4 - Unix Makefiles" -H$(BLENDER_DIR) -B$(BUILD_DIR) + + clean: $(MAKE) -C $(BUILD_DIR) clean diff --git a/SConstruct b/SConstruct index 4f920190276..81c12c7c318 100644 --- a/SConstruct +++ b/SConstruct @@ -253,14 +253,23 @@ if 'blenderlite' in B.targets: if k not in B.arguments: env[k] = v -# detect presence of 3D_CONNEXION_CLIENT_LIBRARY for OSX +# Extended OSX_SDK and 3D_CONNEXION_CLIENT_LIBRARY detection for OSX if env['OURPLATFORM']=='darwin': - envi = Environment() - conf = Configure(envi) - if not conf.CheckCHeader('ConnexionClientAPI.h'): # CheckCXXHeader if it is c++ ! + print B.bc.OKGREEN + "Detected Xcode version: -- " + B.bc.ENDC + env['XCODE_CUR_VER'][:9] + " --" + print "Available " + env['MACOSX_SDK_CHECK'] + if not 'Mac OS X 10.5' in env['MACOSX_SDK_CHECK']: + print B.bc.OKGREEN + "MacOSX10.5.sdk not available:" + B.bc.ENDC + " using MacOSX10.6.sdk" + else: + print B.bc.OKGREEN + "Found recommended sdk :" + B.bc.ENDC + " using MacOSX10.5.sdk" + + # for now, Mac builders must download and install the driver framework from 3Dconnexion + # necessary header file lives here when installed: + # /Library/Frameworks/3DconnexionClient.framework/Versions/Current/Headers/ConnexionClientAPI.h + if env['WITH_BF_3DMOUSE'] == 1 and not os.path.exists('/Library/Frameworks/3DconnexionClient.framework'): print "3D_CONNEXION_CLIENT_LIBRARY not found, disabling WITH_BF_3DMOUSE" # avoid build errors ! env['WITH_BF_3DMOUSE'] = 0 - envi = conf.Finish() + else: + env.Append(LINKFLAGS=['-weak_framework','3DconnexionClient']) if env['WITH_BF_OPENMP'] == 1: diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg index 1e70ec5e13e..5aa5a43abf7 100644 --- a/build_files/buildbot/master.cfg +++ b/build_files/buildbot/master.cfg @@ -116,7 +116,7 @@ add_builder(c, 'linux_x86_64_scons', '', generic_builder) add_builder(c, 'salad_linux_x86_64_scons', '', generic_builder, 'soc-2011-salad') add_builder(c, 'win32_scons', 'windows', generic_builder) add_builder(c, 'salad_win32_scons', 'windows', generic_builder, 'soc-2011-salad') -add_builder(c, 'win64_scons', 'windows', generic_builder) +add_builder(c, 'win64_scons', 'win64', generic_builder) #add_builder(c, 'freebsd_i386_cmake', '', generic_builder) #add_builder(c, 'freebsd_x86_64_cmake', '', generic_builder) diff --git a/build_files/buildbot/slave_compile.py b/build_files/buildbot/slave_compile.py index 9dd39ccd308..b83a65f2466 100644 --- a/build_files/buildbot/slave_compile.py +++ b/build_files/buildbot/slave_compile.py @@ -134,7 +134,7 @@ else: scons_options.append('BF_FFMPEG_LIB=' + (' '.join(ffmpeg_lib))) scons_options.append('BF_FFMPEG_DLL=' + (' '.join(ffmpeg_dll))) - scons_options.append('BF_BITNESS='+bitness) + scons_options.append('BF_BITNESS=' + bitness) retcode = subprocess.call(['python', 'scons/scons.py'] + scons_options) sys.exit(retcode) diff --git a/build_files/buildbot/slave_pack.py b/build_files/buildbot/slave_pack.py index e779b10bd2a..5fdeb4a8ad5 100644 --- a/build_files/buildbot/slave_pack.py +++ b/build_files/buildbot/slave_pack.py @@ -98,7 +98,7 @@ if builder.find('scons') != -1: scons_options.append('BF_FFMPEG_LIB=' + (' '.join(ffmpeg_lib))) scons_options.append('BF_FFMPEG_DLL=' + (' '.join(ffmpeg_dll))) - scons_options.append('BF_BITNESS='+bitness) + scons_options.append('BF_BITNESS=' + bitness) retcode = subprocess.call(['python', 'scons/scons.py'] + scons_options) sys.exit(retcode) diff --git a/build_files/cmake/config/blender_headless.cmake b/build_files/cmake/config/blender_headless.cmake new file mode 100644 index 00000000000..bd69eed30dd --- /dev/null +++ b/build_files/cmake/config/blender_headless.cmake @@ -0,0 +1,24 @@ +# headless configuration, useful in for servers or renderfarms +# builds without a windowing system (X11/Windows/Cocoa). +# +# Example usage: +# cmake -C../blender/build_files/cmake/config/blender_headless.cmake ../blender +# + +set(WITH_HEADLESS ON CACHE FORCE BOOL) +set(WITH_GAMEENGINE OFF CACHE FORCE BOOL) + +# disable audio, its possible some devs may want this but for now disable +# so the python module doesnt hold the audio device and loads quickly. +set(WITH_AUDASPACE OFF CACHE FORCE BOOL) +set(WITH_SAMPLERATE OFF CACHE FORCE BOOL) +set(WITH_FFTW3 OFF CACHE FORCE BOOL) +set(WITH_JACK OFF CACHE FORCE BOOL) +set(WITH_SDL OFF CACHE FORCE BOOL) +set(WITH_OPENAL OFF CACHE FORCE BOOL) +set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL) +set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL) + +# other features which are not especially useful as a python module +set(WITH_X11_XINPUT OFF CACHE FORCE BOOL) +set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL) diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake new file mode 100644 index 00000000000..d2b791baede --- /dev/null +++ b/build_files/cmake/config/blender_lite.cmake @@ -0,0 +1,43 @@ +# turn everything OFF CACHE FORCE BOOL) except for python which defaults to ON +# and is needed for the UI +# +# Example usage: +# cmake -C../blender/build_files/cmake/config/blender_lite.cmake ../blender +# + +set(WITH_INSTALL_PORTABLE ON CACHE FORCE BOOL) + +set(WITH_BUILDINFO OFF CACHE FORCE BOOL) +set(WITH_BUILTIN_GLEW OFF CACHE FORCE BOOL) +set(WITH_BULLET OFF CACHE FORCE BOOL) +set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL) +set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL) +set(WITH_FFTW3 OFF CACHE FORCE BOOL) +set(WITH_GAMEENGINE OFF CACHE FORCE BOOL) +set(WITH_IK_ITASC OFF CACHE FORCE BOOL) +set(WITH_IMAGE_CINEON OFF CACHE FORCE BOOL) +set(WITH_IMAGE_DDS OFF CACHE FORCE BOOL) +set(WITH_IMAGE_FRAMESERVER OFF CACHE FORCE BOOL) +set(WITH_IMAGE_HDR OFF CACHE FORCE BOOL) +set(WITH_IMAGE_OPENEXR OFF CACHE FORCE BOOL) +set(WITH_IMAGE_OPENJPEG OFF CACHE FORCE BOOL) +set(WITH_IMAGE_REDCODE OFF CACHE FORCE BOOL) +set(WITH_IMAGE_TIFF OFF CACHE FORCE BOOL) +set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL) +set(WITH_INTERNATIONAL OFF CACHE FORCE BOOL) +set(WITH_JACK OFF CACHE FORCE BOOL) +set(WITH_LZMA OFF CACHE FORCE BOOL) +set(WITH_LZO OFF CACHE FORCE BOOL) +set(WITH_MOD_BOOLEAN OFF CACHE FORCE BOOL) +set(WITH_MOD_DECIMATE OFF CACHE FORCE BOOL) +set(WITH_MOD_FLUID OFF CACHE FORCE BOOL) +set(WITH_MOD_SMOKE OFF CACHE FORCE BOOL) +set(WITH_AUDASPACE OFF CACHE FORCE BOOL) +set(WITH_OPENAL OFF CACHE FORCE BOOL) +set(WITH_OPENCOLLADA OFF CACHE FORCE BOOL) +set(WITH_OPENMP OFF CACHE FORCE BOOL) +set(WITH_PYTHON_INSTALL OFF CACHE FORCE BOOL) +set(WITH_RAYOPTIMIZATION OFF CACHE FORCE BOOL) +set(WITH_SAMPLERATE OFF CACHE FORCE BOOL) +set(WITH_SDL OFF CACHE FORCE BOOL) +set(WITH_X11_XINPUT OFF CACHE FORCE BOOL) diff --git a/build_files/cmake/config/bpy_module.cmake b/build_files/cmake/config/bpy_module.cmake new file mode 100644 index 00000000000..5392705f0dc --- /dev/null +++ b/build_files/cmake/config/bpy_module.cmake @@ -0,0 +1,34 @@ +# defaults for building blender as a python module 'bpy' +# +# Example usage: +# cmake -C../blender/build_files/cmake/config/bpy_module.cmake ../blender +# + +set(WITH_PYTHON_MODULE ON CACHE FORCE BOOL) + +# install into the systems python dir +set(WITH_INSTALL_PORTABLE OFF CACHE FORCE BOOL) + +# no point int copying python into python +set(WITH_PYTHON_INSTALL OFF CACHE FORCE BOOL) + +# dont build the game engine +set(WITH_GAMEENGINE OFF CACHE FORCE BOOL) + +# disable audio, its possible some devs may want this but for now disable +# so the python module doesnt hold the audio device and loads quickly. +set(WITH_AUDASPACE OFF CACHE FORCE BOOL) +set(WITH_SAMPLERATE OFF CACHE FORCE BOOL) +set(WITH_FFTW3 OFF CACHE FORCE BOOL) +set(WITH_JACK OFF CACHE FORCE BOOL) +set(WITH_SDL OFF CACHE FORCE BOOL) +set(WITH_OPENAL OFF CACHE FORCE BOOL) +set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL) +set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL) + +# other features which are not especially useful as a python module +set(WITH_X11_XINPUT OFF CACHE FORCE BOOL) +set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL) +set(WITH_OPENCOLLADA OFF CACHE FORCE BOOL) +set(WITH_INTERNATIONAL OFF CACHE FORCE BOOL) +set(WITH_BULLET OFF CACHE FORCE BOOL) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index b991edcd5d4..ffc920da473 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -62,6 +62,10 @@ macro(blender_include_dirs foreach(_INC ${ARGV}) get_filename_component(_ABS_INC ${_INC} ABSOLUTE) list(APPEND _ALL_INCS ${_ABS_INC}) + # for checking for invalid includes, disable for regular use + ##if(NOT EXISTS "${_ABS_INC}/") + ## message(FATAL_ERROR "Include not found: ${_ABS_INC}/") + ##endif() endforeach() include_directories(${_ALL_INCS}) unset(_INC) @@ -75,6 +79,9 @@ macro(blender_include_dirs_sys foreach(_INC ${ARGV}) get_filename_component(_ABS_INC ${_INC} ABSOLUTE) list(APPEND _ALL_INCS ${_ABS_INC}) + ##if(NOT EXISTS "${_ABS_INC}/") + ## message(FATAL_ERROR "Include not found: ${_ABS_INC}/") + ##endif() endforeach() include_directories(SYSTEM ${_ALL_INCS}) unset(_INC) diff --git a/build_files/scons/config/darwin-config.py b/build_files/scons/config/darwin-config.py index 97e8e90e574..ec6a3b082b8 100644 --- a/build_files/scons/config/darwin-config.py +++ b/build_files/scons/config/darwin-config.py @@ -21,17 +21,23 @@ cmd = 'uname -p' MAC_PROC=commands.getoutput(cmd) cmd = 'uname -r' cmd_res=commands.getoutput(cmd) -MAC_CUR_VER='10.5' # by default (test below fails on my 10.5 PowerPC) -if cmd_res[:2]=='7': + +if cmd_res[:1]=='7': MAC_CUR_VER='10.3' -elif cmd_res[:2]=='8': +elif cmd_res[:1]=='8': MAC_CUR_VER='10.4' -elif cmd_res[:2]=='9': +elif cmd_res[:1]=='9': MAC_CUR_VER='10.5' elif cmd_res[:2]=='10': MAC_CUR_VER='10.6' elif cmd_res[:2]=='11': MAC_CUR_VER='10.7' +cmd = 'xcodebuild -version' +cmd_xcode=commands.getoutput(cmd) +XCODE_CUR_VER=cmd_xcode +cmd = 'xcodebuild -showsdks' +cmd_sdk=commands.getoutput(cmd) +MACOSX_SDK_CHECK=cmd_sdk if MACOSX_ARCHITECTURE == 'x86_64' or MACOSX_ARCHITECTURE == 'ppc64': USE_QTKIT=True # Carbon quicktime is not available for 64bit @@ -60,21 +66,23 @@ elif MACOSX_ARCHITECTURE == 'i386' and MAC_CUR_VER == '10.4': LCGDIR = '#../lib/darwin-8.x.i386' CC = 'gcc-4.0' CXX = 'g++-4.0' -elif MAC_CUR_VER >= '10.6': - # OSX 10.6 and 10.7 developer tools do not come with sdk < 10.6 anymore ! - MAC_MIN_VERS = '10.6' - MACOSX_DEPLOYMENT_TARGET = '10.6' - MACOSX_SDK='/Developer/SDKs/MacOSX10.6.sdk' - LCGDIR = '#../lib/darwin-9.x.universal' - CC = 'llvm-gcc-4.2' - CXX = 'llvm-g++-4.2' else : - MAC_MIN_VERS = '10.5' - MACOSX_DEPLOYMENT_TARGET = '10.5' - MACOSX_SDK='/Developer/SDKs/MacOSX10.5.sdk' - LCGDIR = '#../lib/darwin-9.x.universal' - CC = 'gcc-4.2' - CXX = 'g++-4.2' + if 'Mac OS X 10.5' in MACOSX_SDK_CHECK: + # OSX 10.5/6 with Xcode 3.x + MAC_MIN_VERS = '10.5' + MACOSX_DEPLOYMENT_TARGET = '10.5' + MACOSX_SDK='/Developer/SDKs/MacOSX10.5.sdk' + LCGDIR = '#../lib/darwin-9.x.universal' + CC = 'gcc-4.2' + CXX = 'g++-4.2' + else: + # OSX 10.6/7 with Xcode 4.x + MAC_MIN_VERS = '10.6' + MACOSX_DEPLOYMENT_TARGET = '10.6' + MACOSX_SDK='/Developer/SDKs/MacOSX10.6.sdk' + LCGDIR = '#../lib/darwin-9.x.universal' + CC = 'gcc-4.2' + CXX = 'g++-4.2' LIBDIR = '${LCGDIR}' @@ -199,8 +207,8 @@ BF_GETTEXT_INC = '${BF_GETTEXT}/include' BF_GETTEXT_LIB = 'intl' BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' -WITH_BF_GAMEENGINE=True -WITH_BF_PLAYER = False +WITH_BF_GAMEENGINE = True +WITH_BF_PLAYER = True WITH_BF_BULLET = True BF_BULLET = '#extern/bullet2/src' @@ -251,7 +259,7 @@ BF_OPENGL_LIBPATH = '/System/Library/Frameworks/OpenGL.framework/Libraries' BF_OPENGL_LINKFLAGS = ['-framework', 'OpenGL'] #OpenCollada flags -WITH_BF_COLLADA = False +WITH_BF_COLLADA = True BF_COLLADA = '#source/blender/collada' BF_COLLADA_INC = '${BF_COLLADA}' BF_COLLADA_LIB = 'bf_collada' @@ -276,8 +284,8 @@ if MACOSX_ARCHITECTURE == 'i386': elif MACOSX_ARCHITECTURE == 'x86_64': BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-msse2'] -# SpaceNavigator and related 3D mice -WITH_BF_3DMOUSE = False +# SpaceNavigator and related 3D mice, driver must be 3DxWare 10 Beta 4 (Mac OS X) or later ! +WITH_BF_3DMOUSE = True ############################################################################# ################### various compile settings and flags ################## @@ -296,31 +304,28 @@ CPPFLAGS = []+ARCH_FLAGS CCFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS CXXFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS -if WITH_GHOST_COCOA==True: +if WITH_GHOST_COCOA: PLATFORM_LINKFLAGS = ['-fexceptions','-framework','CoreServices','-framework','Foundation','-framework','IOKit','-framework','AppKit','-framework','Cocoa','-framework','Carbon','-framework','AudioUnit','-framework','AudioToolbox','-framework','CoreAudio','-framework','OpenAL']+ARCH_FLAGS else: PLATFORM_LINKFLAGS = ['-fexceptions','-framework','CoreServices','-framework','Foundation','-framework','IOKit','-framework','AppKit','-framework','Carbon','-framework','AGL','-framework','AudioUnit','-framework','AudioToolbox','-framework','CoreAudio','-framework','OpenAL']+ARCH_FLAGS -if WITH_BF_QUICKTIME == True: - if USE_QTKIT == True: +if WITH_BF_QUICKTIME: + if USE_QTKIT: PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS+['-framework','QTKit'] else: PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS+['-framework','QuickTime'] -if WITH_BF_3DMOUSE: - PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS + ['-weak_framework','3DconnexionClient'] - #note to build succesfully on 10.3.9 SDK you need to patch 10.3.9 by adding the SystemStubs.a lib from 10.4 LLIBS = ['stdc++', 'SystemStubs'] -# some flags shuffling for different Os versions +# some flags shuffling for different OS versions if MAC_MIN_VERS == '10.3': CFLAGS = ['-fuse-cxa-atexit']+CFLAGS CXXFLAGS = ['-fuse-cxa-atexit']+CXXFLAGS PLATFORM_LINKFLAGS = ['-fuse-cxa-atexit']+PLATFORM_LINKFLAGS LLIBS.append('crt3.o') -if USE_SDK==True: +if USE_SDK: SDK_FLAGS=['-isysroot', MACOSX_SDK,'-mmacosx-version-min='+MAC_MIN_VERS,'-arch',MACOSX_ARCHITECTURE] PLATFORM_LINKFLAGS = ['-mmacosx-version-min='+MAC_MIN_VERS,'-Wl','-isysroot',MACOSX_SDK,'-arch',MACOSX_ARCHITECTURE]+PLATFORM_LINKFLAGS CCFLAGS=SDK_FLAGS+CCFLAGS diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index 9b911b9d6f0..25e0582c536 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -149,7 +149,7 @@ def validate_arguments(args, bc): 'BF_PROFILE_CFLAGS', 'BF_PROFILE_CCFLAGS', 'BF_PROFILE_CXXFLAGS', 'BF_PROFILE_LINKFLAGS', 'BF_DEBUG_CFLAGS', 'BF_DEBUG_CCFLAGS', 'BF_DEBUG_CXXFLAGS', 'C_WARN', 'CC_WARN', 'CXX_WARN', - 'LLIBS', 'PLATFORM_LINKFLAGS','MACOSX_ARCHITECTURE', + 'LLIBS', 'PLATFORM_LINKFLAGS','MACOSX_ARCHITECTURE', 'MACOSX_SDK_CHECK', 'XCODE_CUR_VER', ] @@ -462,6 +462,8 @@ def read_opts(env, cfg, args): ('LLIBS', 'Platform libs', []), ('PLATFORM_LINKFLAGS', 'Platform linkflags', []), ('MACOSX_ARCHITECTURE', 'python_arch.zip select', ''), + ('MACOSX_SDK_CHECK', 'detect available OSX sdk`s', ''), + ('XCODE_CUR_VER', 'detect XCode version', ''), (BoolVariable('BF_PROFILE', 'Add profiling information if true', False)), ('BF_PROFILE_CFLAGS', 'C only profiling flags', []), diff --git a/doc/doxygen/Doxyfile b/doc/doxygen/Doxyfile index 79b3f1a4160..b4d3b14b9dd 100644 --- a/doc/doxygen/Doxyfile +++ b/doc/doxygen/Doxyfile @@ -31,7 +31,7 @@ PROJECT_NAME = Blender # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = "V2.58" +PROJECT_NUMBER = "V2.59" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer diff --git a/doc/python_api/rst/bge.logic.rst b/doc/python_api/rst/bge.logic.rst index 128f87f76bd..798491b4710 100644 --- a/doc/python_api/rst/bge.logic.rst +++ b/doc/python_api/rst/bge.logic.rst @@ -217,6 +217,12 @@ General functions Loads a scene into the game engine. + .. note:: + + This function is not effective immediately, the scene is queued + and added on the next logic cycle where it will be available + from `getSceneList` + :arg name: The name of the scene :type name: string :arg overlay: Overlay or underlay (optional) diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index d7658c50a36..bdda0f3382e 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -149,6 +149,10 @@ if(WITH_HEADLESS OR WITH_GHOST_SDL) intern/GHOST_SystemPathsX11.cpp intern/GHOST_SystemPathsX11.h ) + + if(NOT WITH_INSTALL_PORTABLE) + add_definitions(-DPREFIX="${CMAKE_INSTALL_PREFIX}") + endif() elseif(WIN32) list(APPEND SRC @@ -204,10 +208,6 @@ elseif(APPLE) elseif(UNIX) - if(WITH_X11_XINPUT) - add_definitions(-DWITH_X11_XINPUT) - endif() - list(APPEND INC_SYS ${X11_X11_INCLUDE_PATH} ) @@ -224,10 +224,6 @@ elseif(UNIX) intern/GHOST_WindowX11.h ) - if(NOT WITH_INSTALL_PORTABLE) - add_definitions(-DPREFIX="${CMAKE_INSTALL_PREFIX}") - endif() - if(X11_XF86keysym_INCLUDE_PATH) add_definitions(-DWITH_XF86KEYSYM) list(APPEND INC_SYS @@ -243,6 +239,14 @@ elseif(UNIX) ) endif() + if(NOT WITH_INSTALL_PORTABLE) + add_definitions(-DPREFIX="${CMAKE_INSTALL_PREFIX}") + endif() + + if(WITH_X11_XINPUT) + add_definitions(-DWITH_X11_XINPUT) + endif() + elseif(WIN32) if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX") diff --git a/intern/ghost/intern/GHOST_NDOFManager.cpp b/intern/ghost/intern/GHOST_NDOFManager.cpp index 855e27b9964..a24ccc3ff6c 100644 --- a/intern/ghost/intern/GHOST_NDOFManager.cpp +++ b/intern/ghost/intern/GHOST_NDOFManager.cpp @@ -375,7 +375,7 @@ void GHOST_NDOFManager::setDeadZone(float dz) static bool atHomePosition(GHOST_TEventNDOFMotionData* ndof) { -#define HOME(foo) (ndof->foo == 0) +#define HOME(foo) (ndof->foo == 0.f) return HOME(tx) && HOME(ty) && HOME(tz) && HOME(rx) && HOME(ry) && HOME(rz); #undef HOME } @@ -386,9 +386,9 @@ static bool nearHomePosition(GHOST_TEventNDOFMotionData* ndof, float threshold) return atHomePosition(ndof); } else { -#define HOME1(foo) (fabsf(ndof->foo) < threshold) - return HOME1(tx) && HOME1(ty) && HOME1(tz) && HOME1(rx) && HOME1(ry) && HOME1(rz); -#undef HOME1 +#define HOME(foo) (fabsf(ndof->foo) < threshold) + return HOME(tx) && HOME(ty) && HOME(tz) && HOME(rx) && HOME(ry) && HOME(rz); +#undef HOME } } @@ -423,17 +423,17 @@ bool GHOST_NDOFManager::sendMotionEvent() data->dt = 0.001f * (m_motionTime - m_prevMotionTime); // in seconds - bool handMotion = !nearHomePosition(data, m_deadZone); + bool weHaveMotion = !nearHomePosition(data, m_deadZone); // determine what kind of motion event to send (Starting, InProgress, Finishing) // and where that leaves this NDOF manager (NotStarted, InProgress, Finished) switch (m_motionState) { case GHOST_kNotStarted: case GHOST_kFinished: - if (handMotion) { + if (weHaveMotion) { data->progress = GHOST_kStarting; m_motionState = GHOST_kInProgress; - // prev motion time will be ancient, so just make up something reasonable + // prev motion time will be ancient, so just make up a reasonable time delta data->dt = 0.0125f; } else { @@ -443,9 +443,9 @@ bool GHOST_NDOFManager::sendMotionEvent() } break; case GHOST_kInProgress: - if (handMotion) { + if (weHaveMotion) { data->progress = GHOST_kInProgress; - // keep InProgress state + // remain 'InProgress' } else { data->progress = GHOST_kFinishing; @@ -453,7 +453,7 @@ bool GHOST_NDOFManager::sendMotionEvent() } break; default: - break; + ; // will always be one of the above } #ifdef DEBUG_NDOF_MOTION diff --git a/intern/ghost/intern/GHOST_NDOFManagerCocoa.h b/intern/ghost/intern/GHOST_NDOFManagerCocoa.h index 27397b711b7..e9897f30104 100644 --- a/intern/ghost/intern/GHOST_NDOFManagerCocoa.h +++ b/intern/ghost/intern/GHOST_NDOFManagerCocoa.h @@ -22,10 +22,12 @@ * * ***** END GPL LICENSE BLOCK ***** */ - + #ifndef _GHOST_NDOFMANAGERCOCOA_H_ #define _GHOST_NDOFMANAGERCOCOA_H_ +#ifdef WITH_INPUT_NDOF + #include "GHOST_NDOFManager.h" // Event capture is handled within the NDOF manager on Macintosh, @@ -47,4 +49,5 @@ private: }; -#endif +#endif // WITH_INPUT_NDOF +#endif // #include guard diff --git a/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm b/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm index 53a991a7396..409ed953134 100644 --- a/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm +++ b/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm @@ -22,7 +22,9 @@ * * ***** END GPL LICENSE BLOCK ***** */ - + +#ifdef WITH_INPUT_NDOF + #include "GHOST_NDOFManagerCocoa.h" #include "GHOST_SystemCocoa.h" @@ -157,16 +159,22 @@ GHOST_NDOFManagerCocoa::GHOST_NDOFManagerCocoa(GHOST_System& sys) GHOST_NDOFManagerCocoa::~GHOST_NDOFManagerCocoa() { - UnregisterConnexionClient(m_clientID); - CleanupConnexionHandlers(); - ghost_system = NULL; - ndof_manager = NULL; + if (available()) + { + UnregisterConnexionClient(m_clientID); + CleanupConnexionHandlers(); + ghost_system = NULL; + ndof_manager = NULL; + } } - -bool GHOST_NDOFManagerCocoa::available() -{ - // extern OSErr InstallConnexionHandlers() __attribute__((weak_import)); - // ^^ not needed since the entire framework is weak-linked - return InstallConnexionHandlers != NULL; - // this means that the driver is installed and dynamically linked to blender +extern "C" { + bool GHOST_NDOFManagerCocoa::available() + { + extern OSErr InstallConnexionHandlers() __attribute__((weak_import)); + // Make the linker happy for the framework check (see link below for more info) + // http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html + return InstallConnexionHandlers != NULL; + // this means that the driver is installed and dynamically linked to blender + } } +#endif // WITH_INPUT_NDOF diff --git a/intern/ghost/intern/GHOST_NDOFManagerX11.cpp b/intern/ghost/intern/GHOST_NDOFManagerX11.cpp index 099fa15d179..4dd53319039 100644 --- a/intern/ghost/intern/GHOST_NDOFManagerX11.cpp +++ b/intern/ghost/intern/GHOST_NDOFManagerX11.cpp @@ -22,7 +22,9 @@ * * ***** END GPL LICENSE BLOCK ***** */ - + +#ifdef WITH_INPUT_NDOF + #include "GHOST_NDOFManagerX11.h" #include "GHOST_SystemX11.h" #include @@ -34,14 +36,14 @@ GHOST_NDOFManagerX11::GHOST_NDOFManagerX11(GHOST_System& sys) GHOST_NDOFManager(sys), m_available(false) { - setDeadZone(0.1f); // how to calibrate on Linux? throw away slight motion! + setDeadZone(0.1f); /* how to calibrate on Linux? throw away slight motion! */ if (spnav_open() != -1) { - // determine exactly which device (if any) is plugged in + /* determine exactly which device (if any) is plugged in */ #define MAX_LINE_LENGTH 100 - // look for USB devices with Logitech's vendor ID + /* look for USB devices with Logitech's vendor ID */ FILE* command_output = popen("lsusb -d 046d:","r"); if (command_output) { char line[MAX_LINE_LENGTH] = {0}; @@ -50,15 +52,15 @@ GHOST_NDOFManagerX11::GHOST_NDOFManagerX11(GHOST_System& sys) if (sscanf(line, "Bus %*d Device %*d: ID %hx:%hx", &vendor_id, &product_id) == 2) if (setDevice(vendor_id, product_id)) { m_available = true; - break; // stop looking once the first 3D mouse is found + break; /* stop looking once the first 3D mouse is found */ } } pclose(command_output); } } else { - printf("ndof: spacenavd not found\n"); - // This isn't a hard error, just means the user doesn't have a 3D mouse. + puts("ndof: spacenavd not found"); + /* This isn't a hard error, just means the user doesn't have a 3D mouse. */ } } @@ -73,11 +75,6 @@ bool GHOST_NDOFManagerX11::available() return m_available; } -//bool GHOST_NDOFManagerX11::identifyDevice() -//{ -// -//} - bool GHOST_NDOFManagerX11::processEvents() { GHOST_TUns64 now = m_system.getMilliSeconds(); @@ -88,7 +85,7 @@ bool GHOST_NDOFManagerX11::processEvents() switch (e.type) { case SPNAV_EVENT_MOTION: { - // convert to blender view coords + /* convert to blender view coords */ short t[3] = {e.motion.x, e.motion.y, -e.motion.z}; short r[3] = {-e.motion.rx, -e.motion.ry, e.motion.rz}; @@ -104,3 +101,5 @@ bool GHOST_NDOFManagerX11::processEvents() } return anyProcessed; } + +#endif /* WITH_INPUT_NDOF */ diff --git a/intern/ghost/intern/GHOST_NDOFManagerX11.h b/intern/ghost/intern/GHOST_NDOFManagerX11.h index 82bd256c707..0a549753756 100644 --- a/intern/ghost/intern/GHOST_NDOFManagerX11.h +++ b/intern/ghost/intern/GHOST_NDOFManagerX11.h @@ -26,6 +26,8 @@ #ifndef _GHOST_NDOFMANAGERX11_H_ #define _GHOST_NDOFMANAGERX11_H_ +#ifdef WITH_INPUT_NDOF + #include "GHOST_NDOFManager.h" /* Event capture is handled within the NDOF manager on Linux, @@ -40,10 +42,9 @@ public: bool processEvents(); private: - // bool identifyDevice(); - bool m_available; }; -#endif +#endif /* WITH_INPUT_NDOF */ +#endif /* #include guard */ diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 17f0f2d6ecd..303c2b24497 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -21,8 +21,8 @@ * * The Original Code is: all of this file. * - * Contributor(s): Maarten Gribnau 05/2001 - * Damien Plisson 09/2009 + * Contributors: Maarten Gribnau 05/2001 + * Damien Plisson 09/2009 * * ***** END GPL LICENSE BLOCK ***** */ @@ -43,16 +43,17 @@ #include "GHOST_EventButton.h" #include "GHOST_EventCursor.h" #include "GHOST_EventWheel.h" -#include "GHOST_EventNDOF.h" #include "GHOST_EventTrackpad.h" #include "GHOST_EventDragnDrop.h" #include "GHOST_EventString.h" - #include "GHOST_TimerManager.h" #include "GHOST_TimerTask.h" #include "GHOST_WindowManager.h" #include "GHOST_WindowCocoa.h" +#ifdef WITH_INPUT_NDOF #include "GHOST_NDOFManagerCocoa.h" +#endif + #include "AssertMacros.h" #pragma mark KeyMap, mouse converters diff --git a/intern/ghost/intern/GHOST_SystemPathsX11.cpp b/intern/ghost/intern/GHOST_SystemPathsX11.cpp index dd8935732c5..135f5c42dc5 100644 --- a/intern/ghost/intern/GHOST_SystemPathsX11.cpp +++ b/intern/ghost/intern/GHOST_SystemPathsX11.cpp @@ -43,7 +43,11 @@ #include // for fprintf only #include // for exit -using namespace std; +#ifdef PREFIX +static const char *static_path= PREFIX "/share" ; +#else +static const char *static_path= NULL; +#endif GHOST_SystemPathsX11::GHOST_SystemPathsX11() { @@ -56,21 +60,12 @@ GHOST_SystemPathsX11::~GHOST_SystemPathsX11() const GHOST_TUns8* GHOST_SystemPathsX11::getSystemDir() const { /* no prefix assumes a portable build which only uses bundled scripts */ -#ifdef PREFIX - return (GHOST_TUns8*) PREFIX "/share"; -#else - return NULL; -#endif + return (const GHOST_TUns8 *)static_path; } const GHOST_TUns8* GHOST_SystemPathsX11::getUserDir() const { - const char* env = getenv("HOME"); - if(env) { - return (GHOST_TUns8*) env; - } else { - return NULL; - } + return (const GHOST_TUns8 *)getenv("HOME"); } const GHOST_TUns8* GHOST_SystemPathsX11::getBinaryDir() const diff --git a/intern/ghost/intern/GHOST_SystemSDL.cpp b/intern/ghost/intern/GHOST_SystemSDL.cpp index 69a9f936cf6..f2cc45731fa 100644 --- a/intern/ghost/intern/GHOST_SystemSDL.cpp +++ b/intern/ghost/intern/GHOST_SystemSDL.cpp @@ -146,7 +146,7 @@ convertSDLKey(SDL_Scancode key) if ((key >= SDL_SCANCODE_A) && (key <= SDL_SCANCODE_Z)) { type= GHOST_TKey( key - SDL_SCANCODE_A + int(GHOST_kKeyA)); } else if ((key >= SDL_SCANCODE_1) && (key <= SDL_SCANCODE_0)) { - type= GHOST_TKey(key - SDL_SCANCODE_1 + int(GHOST_kKey0)); + type= (key == SDL_SCANCODE_0) ? GHOST_kKey0 : GHOST_TKey(key - SDL_SCANCODE_1 + int(GHOST_kKey1)); } else if ((key >= SDL_SCANCODE_F1) && (key <= SDL_SCANCODE_F12)) { type= GHOST_TKey(key - SDL_SCANCODE_F1 + int(GHOST_kKeyF1)); } else if ((key >= SDL_SCANCODE_F13) && (key <= SDL_SCANCODE_F24)) { @@ -167,6 +167,8 @@ convertSDLKey(SDL_Scancode key) GXMAP(type,SDL_SCANCODE_APOSTROPHE, GHOST_kKeyQuote); GXMAP(type,SDL_SCANCODE_GRAVE, GHOST_kKeyAccentGrave); GXMAP(type,SDL_SCANCODE_MINUS, GHOST_kKeyMinus); + GXMAP(type,SDL_SCANCODE_EQUALS, GHOST_kKeyEqual); + GXMAP(type,SDL_SCANCODE_SLASH, GHOST_kKeySlash); GXMAP(type,SDL_SCANCODE_BACKSLASH, GHOST_kKeyBackslash); GXMAP(type,SDL_SCANCODE_KP_EQUALS, GHOST_kKeyEqual); @@ -198,6 +200,7 @@ convertSDLKey(SDL_Scancode key) GXMAP(type,SDL_SCANCODE_CAPSLOCK, GHOST_kKeyCapsLock); GXMAP(type,SDL_SCANCODE_SCROLLLOCK, GHOST_kKeyScrollLock); GXMAP(type,SDL_SCANCODE_NUMLOCKCLEAR, GHOST_kKeyNumLock); + GXMAP(type,SDL_SCANCODE_PRINTSCREEN, GHOST_kKeyPrintScreen); /* keypad events */ @@ -382,8 +385,26 @@ GHOST_SystemSDL::processEvent(SDL_Event *sdl_event) GHOST_TKey gkey= convertSDLKey(sdl_sub_evt.keysym.scancode); /* note, the sdl_sub_evt.keysym.sym is truncated, for unicode support ghost has to be modified */ + /* printf("%d\n", sym); */ if(sym > 127) { - sym= 0; + switch(sym) { + case SDLK_KP_DIVIDE: sym= '/'; break; + case SDLK_KP_MULTIPLY: sym= '*'; break; + case SDLK_KP_MINUS: sym= '-'; break; + case SDLK_KP_PLUS: sym= '+'; break; + case SDLK_KP_1: sym= '1'; break; + case SDLK_KP_2: sym= '2'; break; + case SDLK_KP_3: sym= '3'; break; + case SDLK_KP_4: sym= '4'; break; + case SDLK_KP_5: sym= '5'; break; + case SDLK_KP_6: sym= '6'; break; + case SDLK_KP_7: sym= '7'; break; + case SDLK_KP_8: sym= '8'; break; + case SDLK_KP_9: sym= '9'; break; + case SDLK_KP_0: sym= '0'; break; + case SDLK_KP_PERIOD: sym= '.'; break; + default: sym= 0; break; + } } else { if(sdl_sub_evt.keysym.mod & (KMOD_LSHIFT|KMOD_RSHIFT)) { diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index 105f71b514f..d5100e589f2 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -42,8 +42,10 @@ #include "GHOST_EventKey.h" #include "GHOST_EventButton.h" #include "GHOST_EventWheel.h" -#include "GHOST_NDOFManagerX11.h" #include "GHOST_DisplayManagerX11.h" +#ifdef WITH_INPUT_NDOF +#include "GHOST_NDOFManagerX11.h" +#endif #include "GHOST_Debug.h" @@ -815,22 +817,6 @@ GHOST_SystemX11::processEvent(XEvent *xe) } } -#if 0 // obsolete SpaceNav code - - void * -GHOST_SystemX11:: -prepareNdofInfo(volatile GHOST_TEventNDOFData *currentNdofValues) -{ - const vector& v(m_windowManager->getWindows()); - if (v.size() > 0) - sNdofInfo.window = static_cast(v[0])->getXWindow(); - sNdofInfo.display = m_display; - sNdofInfo.currValues = currentNdofValues; - return (void*)&sNdofInfo; -} - -#endif - GHOST_TSuccess GHOST_SystemX11:: getModifierKeys( diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp index 1ba51376ff9..0c8c0adf041 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.cpp +++ b/intern/ghost/intern/GHOST_WindowWin32.cpp @@ -612,7 +612,6 @@ GHOST_TSuccess GHOST_WindowWin32::setState(GHOST_TWindowState state) wp.showCmd = SW_SHOWMINIMIZED; break; case GHOST_kWindowStateMaximized: - ShowWindow(m_hWnd, SW_HIDE); wp.showCmd = SW_SHOWMAXIMIZED; SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW); break; @@ -629,12 +628,12 @@ GHOST_TSuccess GHOST_WindowWin32::setState(GHOST_TWindowState state) break; case GHOST_kWindowStateNormal: default: - ShowWindow(m_hWnd, SW_HIDE); wp.showCmd = SW_SHOWNORMAL; SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW); break; } - return ::SetWindowPlacement(m_hWnd, &wp) == TRUE ? GHOST_kSuccess : GHOST_kFailure; + SetWindowPos(m_hWnd, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); /*Clears window cache for SetWindowLongPtr */ + return ::SetWindowPlacement(m_hWnd, &wp) == TRUE ? GHOST_kSuccess : GHOST_kFailure; } diff --git a/intern/guardedalloc/MEM_guardedalloc.h b/intern/guardedalloc/MEM_guardedalloc.h index a4beea6d8d5..f96a49b9f4a 100644 --- a/intern/guardedalloc/MEM_guardedalloc.h +++ b/intern/guardedalloc/MEM_guardedalloc.h @@ -61,18 +61,6 @@ #ifndef MEM_MALLOCN_H #define MEM_MALLOCN_H -#ifndef LIBEXPORT -#ifdef _WIN32 -#ifdef BLENDER_PLUGIN -#define LIBEXPORT __declspec(dllimport) -#else -#define LIBEXPORT __declspec(dllexport) -#endif -#else -#define LIBEXPORT -#endif -#endif - #include /* needed for FILE* */ #include "MEM_sys_types.h" /* needed for uintptr_t */ @@ -107,7 +95,7 @@ extern "C" { /** * Duplicates a block of memory, and returns a pointer to the * newly allocated block. */ - LIBEXPORT void *MEM_dupallocN(void *vmemh) WARN_UNUSED; + void *MEM_dupallocN(void *vmemh) WARN_UNUSED; /** * Reallocates a block of memory, and returns pointer to the newly diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png index d6ccdb5b733..79339095b07 100644 Binary files a/release/datafiles/splash.png and b/release/datafiles/splash.png differ diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py index a43b42e49a1..5c371fd750a 100644 --- a/release/scripts/modules/bpy/__init__.py +++ b/release/scripts/modules/bpy/__init__.py @@ -44,14 +44,18 @@ from . import utils, path, ops ops = ops.ops_fake_module -def _main(): - import sys as _sys +def main(): + import sys # Possibly temp. addons path from os.path import join, dirname, normpath - _sys.path.append(normpath(join(dirname(__file__), + sys.path.append(normpath(join(dirname(__file__), "..", "..", "addons", "modules"))) + # fake module to allow: + # from bpy.types import Panel + sys.modules["bpy.types"] = types + # if "-d" in sys.argv: # Enable this to measure startup speed if 0: import cProfile @@ -65,6 +69,6 @@ def _main(): utils.load_scripts() -_main() +main() -del _main +del main diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py index 45664384efa..6271c1f77b5 100644 --- a/release/scripts/modules/bpy_extras/io_utils.py +++ b/release/scripts/modules/bpy_extras/io_utils.py @@ -379,7 +379,7 @@ def path_reference(filepath, is_relative = filepath.startswith("//") filepath_abs = os.path.normpath(bpy.path.abspath(filepath, base_src)) - if mode in ('ABSOLUTE', 'RELATIVE', 'STRIP'): + if mode in {'ABSOLUTE', 'RELATIVE', 'STRIP'}: pass elif mode == 'MATCH': mode = 'RELATIVE' if is_relative else 'ABSOLUTE' @@ -439,7 +439,7 @@ def path_reference_copy(copy_set, report=print): shutil.copy(file_src, file_dst) -def unique_name(key, name, name_dict, name_max=-1, clean_func=None): +def unique_name(key, name, name_dict, name_max=-1, clean_func=None, sep="."): """ Helper function for storing unique names which may have special characters stripped and restricted to a maximum length. @@ -456,6 +456,9 @@ def unique_name(key, name, name_dict, name_max=-1, clean_func=None): :type name_dict: dict :arg clean_func: Function to call on *name* before creating a unique value. :type clean_func: function + :arg sep: Separator to use when between the name and a number when a + duplicate name is found. + :type sep: string """ name_new = name_dict.get(key) if name_new is None: @@ -466,14 +469,15 @@ def unique_name(key, name, name_dict, name_max=-1, clean_func=None): if name_max == -1: while name_new in name_dict_values: - name_new = "%s.%03d" % (name_new_orig, count) + name_new = "%s%s%03d" % (name_new_orig, sep, count) count += 1 else: name_new = name_new[:name_max] while name_new in name_dict_values: count_str = "%03d" % count - name_new = "%.*s.%s" % (name_max - (len(count_str) + 1), + name_new = "%.*s%s%s" % (name_max - (len(count_str) + 1), name_new_orig, + sep, count_str, ) count += 1 diff --git a/release/scripts/modules/bpy_extras/mesh_utils.py b/release/scripts/modules/bpy_extras/mesh_utils.py index f9400674138..c965169ff04 100644 --- a/release/scripts/modules/bpy_extras/mesh_utils.py +++ b/release/scripts/modules/bpy_extras/mesh_utils.py @@ -294,7 +294,7 @@ def ngon_tesselate(from_data, indices, fix_loops=True): ''' Normal single concave loop filling ''' - if type(from_data) in (tuple, list): + if type(from_data) in {tuple, list}: verts = [Vector(from_data[i]) for ii, i in enumerate(indices)] else: verts = [from_data.vertices[i].co for ii, i in enumerate(indices)] @@ -312,7 +312,7 @@ def ngon_tesselate(from_data, indices, fix_loops=True): used twice. This is used by lightwave LWO files a lot ''' - if type(from_data) in (tuple, list): + if type(from_data) in {tuple, list}: verts = [vert_treplet(Vector(from_data[i]), ii) for ii, i in enumerate(indices)] else: diff --git a/release/scripts/modules/bpyml.py b/release/scripts/modules/bpyml.py index fdf5172a0b3..42d2bf94fba 100644 --- a/release/scripts/modules/bpyml.py +++ b/release/scripts/modules/bpyml.py @@ -120,7 +120,7 @@ def fromxml(data): py_item = (xml_node.tagName, _fromxml_kwargs(xml_node), []) #_fromxml_iter(py_item, xml_node.childNodes) for xml_node_child in xml_node.childNodes: - if xml_node_child.nodeType not in (xml_node_child.TEXT_NODE, xml_node_child.COMMENT_NODE): + if xml_node_child.nodeType not in {xml_node_child.TEXT_NODE, xml_node_child.COMMENT_NODE}: py_item[CHILDREN].append(_fromxml(xml_node_child)) return py_item diff --git a/release/scripts/modules/bpyml_ui.py b/release/scripts/modules/bpyml_ui.py index 5df04b8bf34..f4b6de23dbb 100644 --- a/release/scripts/modules/bpyml_ui.py +++ b/release/scripts/modules/bpyml_ui.py @@ -40,13 +40,13 @@ def _parse_rna(prop, value): elif prop.type == 'INT': value = int(value) elif prop.type == 'BOOLEAN': - if value in (True, False): + if value in {True, False}: pass else: - if value not in ("True", "False"): + if value not in {"True", "False"}: raise Exception("invalid bool value: %s" % value) value = bool(value == "True") - elif prop.type in ('STRING', 'ENUM'): + elif prop.type in {'STRING', 'ENUM'}: pass elif prop.type == 'POINTER': value = eval("_bpy." + value) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 93a344f4b09..943f86adecb 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -148,7 +148,7 @@ class InfoStructRNA: import types functions = [] for identifier, attr in self._get_py_visible_attrs(): - if type(attr) in (types.FunctionType, types.MethodType): + if type(attr) in {types.FunctionType, types.MethodType}: functions.append((identifier, attr)) return functions @@ -156,7 +156,7 @@ class InfoStructRNA: import types functions = [] for identifier, attr in self._get_py_visible_attrs(): - if type(attr) in (types.BuiltinMethodType, types.BuiltinFunctionType): + if type(attr) in {types.BuiltinMethodType, types.BuiltinFunctionType}: functions.append((identifier, attr)) return functions @@ -260,7 +260,7 @@ class InfoPropertyRNA: if self.array_length: type_str += " array of %d items" % (self.array_length) - if self.type in ("float", "int"): + if self.type in {"float", "int"}: type_str += " in [%s, %s]" % (range_str(self.min), range_str(self.max)) elif self.type == "enum": if self.is_enum_flag: @@ -595,7 +595,7 @@ def BuildRNAInfo(): for prop in rna_info.properties: # ERROR CHECK default = prop.default - if type(default) in (float, int): + if type(default) in {float, int}: if default < prop.min or default > prop.max: print("\t %s.%s, %s not in [%s - %s]" % (rna_info.identifier, prop.identifier, default, prop.min, prop.max)) diff --git a/release/scripts/startup/bl_operators/add_mesh_torus.py b/release/scripts/startup/bl_operators/add_mesh_torus.py index 27a6d21d519..1c4518c4feb 100644 --- a/release/scripts/startup/bl_operators/add_mesh_torus.py +++ b/release/scripts/startup/bl_operators/add_mesh_torus.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Operator import mathutils @@ -81,7 +82,7 @@ from bpy.props import (FloatProperty, ) -class AddTorus(bpy.types.Operator): +class AddTorus(Operator): '''Add a torus mesh''' bl_idname = "mesh.primitive_torus_add" bl_label = "Add Torus" diff --git a/release/scripts/startup/bl_operators/animsys_update.py b/release/scripts/startup/bl_operators/animsys_update.py index 63d438a5066..3710c57ac16 100644 --- a/release/scripts/startup/bl_operators/animsys_update.py +++ b/release/scripts/startup/bl_operators/animsys_update.py @@ -686,9 +686,10 @@ data_path_update = [ import bpy +from bpy.types import Operator -class UpdateAnimData(bpy.types.Operator): +class UpdateAnimData(Operator): """Update data paths from 2.56 and previous versions, modifying data paths of drivers and fcurves""" bl_idname = "anim.update_data_paths" bl_label = "Update Animation Data" diff --git a/release/scripts/startup/bl_operators/image.py b/release/scripts/startup/bl_operators/image.py index 23bafe2eaae..9226cbed51b 100644 --- a/release/scripts/startup/bl_operators/image.py +++ b/release/scripts/startup/bl_operators/image.py @@ -19,10 +19,11 @@ # import bpy +from bpy.types import Operator from bpy.props import StringProperty -class EditExternally(bpy.types.Operator): +class EditExternally(Operator): '''Edit image in an external application''' bl_idname = "image.external_edit" bl_label = "Image Edit Externally" @@ -61,13 +62,19 @@ class EditExternally(bpy.types.Operator): def execute(self, context): import os import subprocess - filepath = os.path.normpath(bpy.path.abspath(self.filepath)) + + filepath = self.filepath + + if not filepath: + self.report({'ERROR'}, "Image path not set") + return {'CANCELLED'} + + filepath = os.path.normpath(bpy.path.abspath(filepath)) if not os.path.exists(filepath): self.report({'ERROR'}, "Image path %r not found, image may be packed or " "unsaved." % filepath) - return {'CANCELLED'} cmd = self._editor_guess(context) + [filepath] @@ -100,7 +107,7 @@ class EditExternally(bpy.types.Operator): return {'FINISHED'} -class SaveDirty(bpy.types.Operator): +class SaveDirty(Operator): """Save all modified textures""" bl_idname = "image.save_dirty" bl_label = "Save Dirty" @@ -123,7 +130,7 @@ class SaveDirty(bpy.types.Operator): return {'FINISHED'} -class ProjectEdit(bpy.types.Operator): +class ProjectEdit(Operator): """Edit a snapshot of the viewport in an external image editor""" bl_idname = "image.project_edit" bl_label = "Project Edit" @@ -190,7 +197,7 @@ class ProjectEdit(bpy.types.Operator): return {'FINISHED'} -class ProjectApply(bpy.types.Operator): +class ProjectApply(Operator): """Project edited image back onto the object""" bl_idname = "image.project_apply" bl_label = "Project Apply" diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py index 344b238709f..4114381f3dc 100644 --- a/release/scripts/startup/bl_operators/mesh.py +++ b/release/scripts/startup/bl_operators/mesh.py @@ -19,11 +19,12 @@ # import bpy +from bpy.types import Operator from bpy.props import EnumProperty -class MeshSelectInteriorFaces(bpy.types.Operator): +class MeshSelectInteriorFaces(Operator): '''Select faces where all edges have more then 2 face users.''' bl_idname = "mesh.faces_select_interior" @@ -67,7 +68,7 @@ class MeshSelectInteriorFaces(bpy.types.Operator): return {'FINISHED'} -class MeshMirrorUV(bpy.types.Operator): +class MeshMirrorUV(Operator): '''Copy mirror UV coordinates on the X axis based on a mirrored mesh''' bl_idname = "mesh.faces_mirror_uv" bl_label = "Copy Mirrored UV coords" diff --git a/release/scripts/startup/bl_operators/nla.py b/release/scripts/startup/bl_operators/nla.py index 469e9015e62..44ed846e530 100644 --- a/release/scripts/startup/bl_operators/nla.py +++ b/release/scripts/startup/bl_operators/nla.py @@ -19,6 +19,7 @@ # import bpy +from bpy.types import Operator def pose_frame_info(obj): @@ -191,7 +192,7 @@ def bake(frame_start, from bpy.props import IntProperty, BoolProperty, EnumProperty -class BakeAction(bpy.types.Operator): +class BakeAction(Operator): '''Bake animation to an Action''' bl_idname = "nla.bake" bl_label = "Bake Action" diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py index 627a1530fe1..79f57990f37 100644 --- a/release/scripts/startup/bl_operators/object.py +++ b/release/scripts/startup/bl_operators/object.py @@ -19,10 +19,11 @@ # import bpy +from bpy.types import Operator from bpy.props import StringProperty, BoolProperty, EnumProperty, IntProperty -class SelectPattern(bpy.types.Operator): +class SelectPattern(Operator): '''Select object matching a naming pattern''' bl_idname = "object.select_pattern" bl_label = "Select Pattern" @@ -99,7 +100,7 @@ class SelectPattern(bpy.types.Operator): row.prop(self, "extend") -class SelectCamera(bpy.types.Operator): +class SelectCamera(Operator): '''Select object matching a naming pattern''' bl_idname = "object.select_camera" bl_label = "Select Camera" @@ -120,7 +121,7 @@ class SelectCamera(bpy.types.Operator): return {'FINISHED'} -class SelectHierarchy(bpy.types.Operator): +class SelectHierarchy(Operator): '''Select object relative to the active objects position''' \ '''in the hierarchy''' bl_idname = "object.select_hierarchy" @@ -187,7 +188,7 @@ class SelectHierarchy(bpy.types.Operator): return {'CANCELLED'} -class SubdivisionSet(bpy.types.Operator): +class SubdivisionSet(Operator): '''Sets a Subdivision Surface Level (1-5)''' bl_idname = "object.subdivision_set" @@ -263,7 +264,7 @@ class SubdivisionSet(bpy.types.Operator): return {'FINISHED'} -class ShapeTransfer(bpy.types.Operator): +class ShapeTransfer(Operator): '''Copy another selected objects active shape to this one by ''' \ '''applying the relative offsets''' @@ -507,7 +508,7 @@ class ShapeTransfer(bpy.types.Operator): return self._main(ob_act, objects, self.mode, self.use_clamp) -class JoinUVs(bpy.types.Operator): +class JoinUVs(Operator): '''Copy UV Layout to objects with matching geometry''' bl_idname = "object.join_uvs" bl_label = "Join as UVs" @@ -575,7 +576,7 @@ class JoinUVs(bpy.types.Operator): return {'FINISHED'} -class MakeDupliFace(bpy.types.Operator): +class MakeDupliFace(Operator): '''Make linked objects into dupli-faces''' bl_idname = "object.make_dupli_face" bl_label = "Make Dupli-Face" @@ -649,7 +650,7 @@ class MakeDupliFace(bpy.types.Operator): return {'FINISHED'} -class IsolateTypeRender(bpy.types.Operator): +class IsolateTypeRender(Operator): '''Hide unselected render objects of same type as active ''' \ '''by setting the hide render flag''' bl_idname = "object.isolate_type_render" @@ -670,7 +671,7 @@ class IsolateTypeRender(bpy.types.Operator): return {'FINISHED'} -class ClearAllRestrictRender(bpy.types.Operator): +class ClearAllRestrictRender(Operator): '''Reveal all render objects by setting the hide render flag''' bl_idname = "object.hide_render_clear_all" bl_label = "Clear All Restrict Render" diff --git a/release/scripts/startup/bl_operators/object_align.py b/release/scripts/startup/bl_operators/object_align.py index 7fd769c40c9..d4a3d826f2f 100644 --- a/release/scripts/startup/bl_operators/object_align.py +++ b/release/scripts/startup/bl_operators/object_align.py @@ -19,6 +19,7 @@ # import bpy +from bpy.types import Operator from mathutils import Vector @@ -339,7 +340,7 @@ def align_objects(align_x, from bpy.props import EnumProperty, BoolProperty -class AlignObjects(bpy.types.Operator): +class AlignObjects(Operator): '''Align Objects''' bl_idname = "object.align" bl_label = "Align Objects" diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index ef10bfd737d..cd206da3a8e 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -20,6 +20,7 @@ from mathutils import Vector import bpy +from bpy.types import Operator from bpy.props import (BoolProperty, EnumProperty, IntProperty, @@ -45,7 +46,7 @@ def object_ensure_material(obj, mat_name): return mat -class QuickFur(bpy.types.Operator): +class QuickFur(Operator): bl_idname = "object.quick_fur" bl_label = "Quick Fur" bl_options = {'REGISTER', 'UNDO'} @@ -104,7 +105,7 @@ class QuickFur(bpy.types.Operator): return {'FINISHED'} -class QuickExplode(bpy.types.Operator): +class QuickExplode(Operator): bl_idname = "object.quick_explode" bl_label = "Quick Explode" bl_options = {'REGISTER', 'UNDO'} @@ -265,7 +266,7 @@ def obj_bb_minmax(obj, min_co, max_co): max_co[2] = max(bb_vec[2], max_co[2]) -class QuickSmoke(bpy.types.Operator): +class QuickSmoke(Operator): bl_idname = "object.quick_smoke" bl_label = "Quick Smoke" bl_options = {'REGISTER', 'UNDO'} @@ -383,7 +384,7 @@ class QuickSmoke(bpy.types.Operator): return {'FINISHED'} -class QuickFluid(bpy.types.Operator): +class QuickFluid(Operator): bl_idname = "object.quick_fluid" bl_label = "Quick Fluid" bl_options = {'REGISTER', 'UNDO'} diff --git a/release/scripts/startup/bl_operators/object_randomize_transform.py b/release/scripts/startup/bl_operators/object_randomize_transform.py index b94c4f06cd3..f65e3d27d83 100644 --- a/release/scripts/startup/bl_operators/object_randomize_transform.py +++ b/release/scripts/startup/bl_operators/object_randomize_transform.py @@ -19,6 +19,7 @@ # import bpy +from bpy.types import Operator def randomize_selected(seed, delta, loc, rot, scale, scale_even): @@ -87,7 +88,7 @@ def randomize_selected(seed, delta, loc, rot, scale, scale_even): from bpy.props import IntProperty, BoolProperty, FloatVectorProperty -class RandomizeLocRotSize(bpy.types.Operator): +class RandomizeLocRotSize(Operator): '''Randomize objects loc/rot/scale''' bl_idname = "object.randomize_transform" bl_label = "Randomize Transform" diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py index fbcc327c3bd..2fd0c4a9e12 100644 --- a/release/scripts/startup/bl_operators/presets.py +++ b/release/scripts/startup/bl_operators/presets.py @@ -19,6 +19,7 @@ # import bpy +from bpy.types import Menu, Operator class AddPresetBase(): @@ -140,7 +141,7 @@ class AddPresetBase(): return self.execute(context) -class ExecutePreset(bpy.types.Operator): +class ExecutePreset(Operator): ''' Executes a preset ''' bl_idname = "script.execute_preset" bl_label = "Execute a Python Preset" @@ -168,7 +169,7 @@ class ExecutePreset(bpy.types.Operator): return {'FINISHED'} -class AddPresetRender(AddPresetBase, bpy.types.Operator): +class AddPresetRender(AddPresetBase, Operator): '''Add a Render Preset''' bl_idname = "render.preset_add" bl_label = "Add Render Preset" @@ -194,7 +195,7 @@ class AddPresetRender(AddPresetBase, bpy.types.Operator): preset_subdir = "render" -class AddPresetSSS(AddPresetBase, bpy.types.Operator): +class AddPresetSSS(AddPresetBase, Operator): '''Add a Subsurface Scattering Preset''' bl_idname = "material.sss_preset_add" bl_label = "Add SSS Preset" @@ -222,7 +223,7 @@ class AddPresetSSS(AddPresetBase, bpy.types.Operator): preset_subdir = "sss" -class AddPresetCloth(AddPresetBase, bpy.types.Operator): +class AddPresetCloth(AddPresetBase, Operator): '''Add a Cloth Preset''' bl_idname = "cloth.preset_add" bl_label = "Add Cloth Preset" @@ -244,7 +245,7 @@ class AddPresetCloth(AddPresetBase, bpy.types.Operator): preset_subdir = "cloth" -class AddPresetSunSky(AddPresetBase, bpy.types.Operator): +class AddPresetSunSky(AddPresetBase, Operator): '''Add a Sky & Atmosphere Preset''' bl_idname = "lamp.sunsky_preset_add" bl_label = "Add Sunsky Preset" @@ -273,7 +274,7 @@ class AddPresetSunSky(AddPresetBase, bpy.types.Operator): preset_subdir = "sunsky" -class AddPresetInteraction(AddPresetBase, bpy.types.Operator): +class AddPresetInteraction(AddPresetBase, Operator): '''Add an Application Interaction Preset''' bl_idname = "wm.interaction_preset_add" bl_label = "Add Interaction Preset" @@ -299,7 +300,7 @@ class AddPresetInteraction(AddPresetBase, bpy.types.Operator): preset_subdir = "interaction" -class AddPresetKeyconfig(AddPresetBase, bpy.types.Operator): +class AddPresetKeyconfig(AddPresetBase, Operator): '''Add a Keyconfig Preset''' bl_idname = "wm.keyconfig_preset_add" bl_label = "Add Keyconfig Preset" @@ -322,7 +323,7 @@ class AddPresetKeyconfig(AddPresetBase, bpy.types.Operator): keyconfigs.remove(keyconfigs.active) -class AddPresetOperator(AddPresetBase, bpy.types.Operator): +class AddPresetOperator(AddPresetBase, Operator): '''Add an Application Interaction Preset''' bl_idname = "wm.operator_preset_add" bl_label = "Operator Preset" @@ -345,7 +346,7 @@ class AddPresetOperator(AddPresetBase, bpy.types.Operator): @property def preset_values(self): - properties_blacklist = bpy.types.Operator.bl_rna.properties.keys() + properties_blacklist = Operator.bl_rna.properties.keys() prefix, suffix = self.operator.split("_OT_", 1) op = getattr(getattr(bpy.ops, prefix.lower()), suffix) @@ -367,12 +368,12 @@ class AddPresetOperator(AddPresetBase, bpy.types.Operator): return os.path.join("operator", "%s.%s" % (prefix.lower(), suffix)) -class WM_MT_operator_presets(bpy.types.Menu): +class WM_MT_operator_presets(Menu): bl_label = "Operator Presets" def draw(self, context): self.operator = context.space_data.operator.bl_idname - bpy.types.Menu.draw_preset(self, context) + Menu.draw_preset(self, context) @property def preset_subdir(self): diff --git a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py index a38d817d738..c2a09d6a4ae 100644 --- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py +++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py @@ -21,6 +21,7 @@ # Originally written by Matt Ebb import bpy +from bpy.types import Operator import os @@ -64,7 +65,7 @@ def guess_player_path(preset): return player_path -class PlayRenderedAnim(bpy.types.Operator): +class PlayRenderedAnim(Operator): '''Plays back rendered frames/movies using an external player.''' bl_idname = "render.play_rendered_anim" bl_label = "Play Rendered Animation" diff --git a/release/scripts/startup/bl_operators/sequencer.py b/release/scripts/startup/bl_operators/sequencer.py index 16b72406c49..d2f85c8d7c7 100644 --- a/release/scripts/startup/bl_operators/sequencer.py +++ b/release/scripts/startup/bl_operators/sequencer.py @@ -19,11 +19,12 @@ # import bpy +from bpy.types import Operator from bpy.props import IntProperty -class SequencerCrossfadeSounds(bpy.types.Operator): +class SequencerCrossfadeSounds(Operator): '''Do crossfading volume animation of two selected sound strips.''' bl_idname = "sequencer.crossfade_sounds" @@ -74,7 +75,7 @@ class SequencerCrossfadeSounds(bpy.types.Operator): return {'CANCELLED'} -class SequencerCutMulticam(bpy.types.Operator): +class SequencerCutMulticam(Operator): '''Cut multicam strip and select camera.''' bl_idname = "sequencer.cut_multicam" @@ -112,7 +113,7 @@ class SequencerCutMulticam(bpy.types.Operator): return {'FINISHED'} -class SequencerDeinterlaceSelectedMovies(bpy.types.Operator): +class SequencerDeinterlaceSelectedMovies(Operator): '''Deinterlace all selected movie sources.''' bl_idname = "sequencer.deinterlace_selected_movies" diff --git a/release/scripts/startup/bl_operators/uvcalc_follow_active.py b/release/scripts/startup/bl_operators/uvcalc_follow_active.py index 43ca9af59ba..6c258d094e8 100644 --- a/release/scripts/startup/bl_operators/uvcalc_follow_active.py +++ b/release/scripts/startup/bl_operators/uvcalc_follow_active.py @@ -22,6 +22,7 @@ # http://mediawiki.blender.org/index.php/Scripts/Manual/UV_Calculate/Follow_active_quads import bpy +from bpy.types import Operator def extend(obj, operator, EXTEND_MODE): @@ -226,7 +227,7 @@ def main(context, operator): extend(obj, operator, operator.properties.mode) -class FollowActiveQuads(bpy.types.Operator): +class FollowActiveQuads(Operator): '''Follow UVs from active quads along continuous face loops''' bl_idname = "uv.follow_active_quads" bl_label = "Follow Active Quads" diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py index 9ae0cd0ddf9..6b1c6e1be98 100644 --- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py +++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py @@ -19,11 +19,20 @@ # import bpy +from bpy.types import Operator import mathutils class prettyface(object): - __slots__ = "uv", "width", "height", "children", "xoff", "yoff", "has_parent", "rot" + __slots__ = ("uv", + "width", + "height", + "children", + "xoff", + "yoff", + "has_parent", + "rot", + ) def __init__(self, data): self.has_parent = False @@ -263,10 +272,9 @@ def lightmap_uvpack(meshes, del trylens def trilensdiff(t1, t2): - return\ - abs(t1[1][t1[2][0]] - t2[1][t2[2][0]]) + \ - abs(t1[1][t1[2][1]] - t2[1][t2[2][1]]) + \ - abs(t1[1][t1[2][2]] - t2[1][t2[2][2]]) + return (abs(t1[1][t1[2][0]] - t2[1][t2[2][0]]) + + abs(t1[1][t1[2][1]] - t2[1][t2[2][1]]) + + abs(t1[1][t1[2][2]] - t2[1][t2[2][2]])) while tri_lengths: tri1 = tri_lengths.pop() @@ -520,7 +528,7 @@ def unwrap(operator, context, **kwargs): if obj and obj.type == 'MESH': meshes = [obj.data] else: - meshes = {me.name: me for obj in context.selected_objects if obj.type == 'MESH' for me in (obj.data,) if not me.library if len(me.faces)}.values() + meshes = list({me for obj in context.selected_objects if obj.type == 'MESH' for me in (obj.data,) if me.faces and me.library is None}) if not meshes: operator.report({'ERROR'}, "No mesh object.") @@ -536,29 +544,58 @@ def unwrap(operator, context, **kwargs): from bpy.props import BoolProperty, FloatProperty, IntProperty -class LightMapPack(bpy.types.Operator): +class LightMapPack(Operator): '''Follow UVs from active quads along continuous face loops''' bl_idname = "uv.lightmap_pack" bl_label = "Lightmap Pack" bl_options = {'REGISTER', 'UNDO'} PREF_CONTEXT = bpy.props.EnumProperty( + name="Selection", + description="", items=(("SEL_FACES", "Selected Faces", "Space all UVs evently"), ("ALL_FACES", "All Faces", "Average space UVs edge length of each loop"), ("ALL_OBJECTS", "Selected Mesh Object", "Average space UVs edge length of each loop") ), - name="Selection", - description="") + ) # Image & UVs... - PREF_PACK_IN_ONE = BoolProperty(name="Share Tex Space", default=True, description="Objects Share texture space, map all objects into 1 uvmap") - PREF_NEW_UVLAYER = BoolProperty(name="New UV Layer", default=False, description="Create a new UV layer for every mesh packed") - PREF_APPLY_IMAGE = BoolProperty(name="New Image", default=False, description="Assign new images for every mesh (only one if shared tex space enabled)") - PREF_IMG_PX_SIZE = IntProperty(name="Image Size", min=64, max=5000, default=512, description="Width and Height for the new image") - + PREF_PACK_IN_ONE = BoolProperty( + name="Share Tex Space", + description=("Objects Share texture space, map all objects " + "into 1 uvmap"), + default=True, + ) + PREF_NEW_UVLAYER = BoolProperty( + name="New UV Layer", + description="Create a new UV layer for every mesh packed", + default=False, + ) + PREF_APPLY_IMAGE = BoolProperty( + name="New Image", + description=("Assign new images for every mesh (only one if " + "shared tex space enabled)"), + default=False, + ) + PREF_IMG_PX_SIZE = IntProperty( + name="Image Size", + description="Width and Height for the new image", + min=64, max=5000, + default=512, + ) # UV Packing... - PREF_BOX_DIV = IntProperty(name="Pack Quality", min=1, max=48, default=12, description="Pre Packing before the complex boxpack") - PREF_MARGIN_DIV = FloatProperty(name="Margin", min=0.001, max=1.0, default=0.1, description="Size of the margin as a division of the UV") + PREF_BOX_DIV = IntProperty( + name="Pack Quality", + description="Pre Packing before the complex boxpack", + min=1, max=48, + default=12, + ) + PREF_MARGIN_DIV = FloatProperty( + name="Margin", + description="Size of the margin as a division of the UV", + min=0.001, max=1.0, + default=0.1, + ) def execute(self, context): kwargs = self.as_keywords() diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py index 851f33bde11..8afd6c104e0 100644 --- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py +++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py @@ -20,6 +20,7 @@ from mathutils import Matrix, Vector, geometry import bpy +from bpy.types import Operator DEG_TO_RAD = 0.017453292519943295 # pi/180.0 SMALL_NUM = 0.000000001 @@ -812,39 +813,26 @@ def main(context, global RotMatStepRotation main_consts() - # TODO, all selected meshes - ''' - # objects = context.selected_editable_objects - objects = [] - - # we can will tag them later. - obList = [ob for ob in objects if ob.type == 'MESH'] - - # Face select object may not be selected. - ob = context.active_object - - if ob and (not ob.select) and ob.type == 'MESH': - # Add to the list - obList =[ob] - del objects - ''' + # Create the variables. + USER_PROJECTION_LIMIT = projection_limit + USER_ONLY_SELECTED_FACES = True + USER_SHARE_SPACE = 1 # Only for hole filling. + USER_STRETCH_ASPECT = 1 # Only for hole filling. + USER_ISLAND_MARGIN = island_margin # Only for hole filling. + USER_FILL_HOLES = 0 + USER_FILL_HOLES_QUALITY = 50 # Only for hole filling. + USER_VIEW_INIT = 0 # Only for hole filling. - # quick workaround - obList = [ob for ob in [context.active_object] if ob and ob.type == 'MESH'] + is_editmode = (context.active_object.mode == 'EDIT') + if is_editmode: + obList = [ob for ob in [context.active_object] if ob and ob.type == 'MESH'] + else: + obList = [ob for ob in context.selected_editable_objects if ob and ob.type == 'MESH'] + USER_ONLY_SELECTED_FACES = False if not obList: raise('error, no selected mesh objects') - # Create the variables. - USER_PROJECTION_LIMIT = projection_limit - USER_ONLY_SELECTED_FACES = (1) - USER_SHARE_SPACE = (1) # Only for hole filling. - USER_STRETCH_ASPECT = (1) # Only for hole filling. - USER_ISLAND_MARGIN = island_margin # Only for hole filling. - USER_FILL_HOLES = (0) - USER_FILL_HOLES_QUALITY = (50) # Only for hole filling. - USER_VIEW_INIT = (0) # Only for hole filling. - # Reuse variable if len(obList) == 1: ob = "Unwrap %i Selected Mesh" @@ -905,8 +893,8 @@ def main(context, if USER_ONLY_SELECTED_FACES: meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.select] - #else: - # meshFaces = map(thickface, me.faces) + else: + meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces)] if not meshFaces: continue @@ -921,7 +909,7 @@ def main(context, # meshFaces = [] # meshFaces.sort( lambda a, b: cmp(b.area , a.area) ) # Biggest first. - meshFaces.sort( key = lambda a: -a.area ) + meshFaces.sort(key=lambda a: -a.area) # remove all zero area faces while meshFaces and meshFaces[-1].area <= SMALL_NUM: @@ -1116,7 +1104,7 @@ def main(context, from bpy.props import FloatProperty -class SmartProject(bpy.types.Operator): +class SmartProject(Operator): '''This script projection unwraps the selected faces of a mesh. it operates on all selected mesh objects, and can be used unwrap selected faces, or all faces.''' bl_idname = "uv.smart_project" bl_label = "Smart UV Project" diff --git a/release/scripts/startup/bl_operators/vertexpaint_dirt.py b/release/scripts/startup/bl_operators/vertexpaint_dirt.py index 672db71e361..facde82f812 100644 --- a/release/scripts/startup/bl_operators/vertexpaint_dirt.py +++ b/release/scripts/startup/bl_operators/vertexpaint_dirt.py @@ -142,10 +142,11 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, import bpy +from bpy.types import Operator from bpy.props import FloatProperty, IntProperty, BoolProperty -class VertexPaintDirt(bpy.types.Operator): +class VertexPaintDirt(Operator): bl_idname = "paint.vertex_color_dirt" bl_label = "Dirty Vertex Colors" bl_options = {'REGISTER', 'UNDO'} diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index af33e45668c..fe75c54e60e 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -19,13 +19,14 @@ # import bpy +from bpy.types import Menu, Operator from bpy.props import StringProperty, BoolProperty, IntProperty, \ FloatProperty, EnumProperty from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear -class MESH_OT_delete_edgeloop(bpy.types.Operator): +class MESH_OT_delete_edgeloop(Operator): '''Delete an edge loop by merging the faces on each side to a single face loop''' bl_idname = "mesh.delete_edgeloop" bl_label = "Delete Edge Loop" @@ -76,7 +77,7 @@ def execute_context_assign(self, context): return {'FINISHED'} -class BRUSH_OT_active_index_set(bpy.types.Operator): +class BRUSH_OT_active_index_set(Operator): '''Set active sculpt/paint brush from it's number''' bl_idname = "brush.active_index_set" bl_label = "Set Brush Number" @@ -104,7 +105,7 @@ class BRUSH_OT_active_index_set(bpy.types.Operator): return {'CANCELLED'} -class WM_OT_context_set_boolean(bpy.types.Operator): +class WM_OT_context_set_boolean(Operator): '''Set a context value.''' bl_idname = "wm.context_set_boolean" bl_label = "Context Set Boolean" @@ -117,7 +118,7 @@ class WM_OT_context_set_boolean(bpy.types.Operator): execute = execute_context_assign -class WM_OT_context_set_int(bpy.types.Operator): # same as enum +class WM_OT_context_set_int(Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_int" bl_label = "Context Set" @@ -130,7 +131,7 @@ class WM_OT_context_set_int(bpy.types.Operator): # same as enum execute = execute_context_assign -class WM_OT_context_scale_int(bpy.types.Operator): +class WM_OT_context_scale_int(Operator): '''Scale an int context value.''' bl_idname = "wm.context_scale_int" bl_label = "Context Set" @@ -166,7 +167,7 @@ class WM_OT_context_scale_int(bpy.types.Operator): return {'FINISHED'} -class WM_OT_context_set_float(bpy.types.Operator): # same as enum +class WM_OT_context_set_float(Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_float" bl_label = "Context Set Float" @@ -180,7 +181,7 @@ class WM_OT_context_set_float(bpy.types.Operator): # same as enum execute = execute_context_assign -class WM_OT_context_set_string(bpy.types.Operator): # same as enum +class WM_OT_context_set_string(Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_string" bl_label = "Context Set String" @@ -193,7 +194,7 @@ class WM_OT_context_set_string(bpy.types.Operator): # same as enum execute = execute_context_assign -class WM_OT_context_set_enum(bpy.types.Operator): +class WM_OT_context_set_enum(Operator): '''Set a context value.''' bl_idname = "wm.context_set_enum" bl_label = "Context Set Enum" @@ -207,7 +208,7 @@ class WM_OT_context_set_enum(bpy.types.Operator): execute = execute_context_assign -class WM_OT_context_set_value(bpy.types.Operator): +class WM_OT_context_set_value(Operator): '''Set a context value.''' bl_idname = "wm.context_set_value" bl_label = "Context Set Value" @@ -225,7 +226,7 @@ class WM_OT_context_set_value(bpy.types.Operator): return {'FINISHED'} -class WM_OT_context_toggle(bpy.types.Operator): +class WM_OT_context_toggle(Operator): '''Toggle a context value.''' bl_idname = "wm.context_toggle" bl_label = "Context Toggle" @@ -244,7 +245,7 @@ class WM_OT_context_toggle(bpy.types.Operator): return {'FINISHED'} -class WM_OT_context_toggle_enum(bpy.types.Operator): +class WM_OT_context_toggle_enum(Operator): '''Toggle a context value.''' bl_idname = "wm.context_toggle_enum" bl_label = "Context Toggle Values" @@ -270,7 +271,7 @@ class WM_OT_context_toggle_enum(bpy.types.Operator): return {'FINISHED'} -class WM_OT_context_cycle_int(bpy.types.Operator): +class WM_OT_context_cycle_int(Operator): '''Set a context value. Useful for cycling active material, ''' '''vertex keys, groups' etc.''' bl_idname = "wm.context_cycle_int" @@ -305,7 +306,7 @@ class WM_OT_context_cycle_int(bpy.types.Operator): return {'FINISHED'} -class WM_OT_context_cycle_enum(bpy.types.Operator): +class WM_OT_context_cycle_enum(Operator): '''Toggle a context value.''' bl_idname = "wm.context_cycle_enum" bl_label = "Context Enum Cycle" @@ -357,7 +358,7 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): return {'FINISHED'} -class WM_OT_context_cycle_array(bpy.types.Operator): +class WM_OT_context_cycle_array(Operator): '''Set a context array value. Useful for cycling the active mesh edit mode.''' bl_idname = "wm.context_cycle_array" @@ -385,7 +386,7 @@ class WM_OT_context_cycle_array(bpy.types.Operator): return {'FINISHED'} -class WM_MT_context_menu_enum(bpy.types.Menu): +class WM_MT_context_menu_enum(Menu): bl_label = "" data_path = "" # BAD DESIGN, set from operator below. @@ -405,7 +406,7 @@ class WM_MT_context_menu_enum(bpy.types.Menu): prop.value = identifier -class WM_OT_context_menu_enum(bpy.types.Operator): +class WM_OT_context_menu_enum(Operator): bl_idname = "wm.context_menu_enum" bl_label = "Context Enum Menu" bl_options = {'UNDO', 'INTERNAL'} @@ -418,7 +419,7 @@ class WM_OT_context_menu_enum(bpy.types.Operator): return {'PASS_THROUGH'} -class WM_OT_context_set_id(bpy.types.Operator): +class WM_OT_context_set_id(Operator): '''Toggle a context value.''' bl_idname = "wm.context_set_id" bl_label = "Set Library ID" @@ -466,7 +467,7 @@ data_path_item = StringProperty( description="The data path from each iterable to the value (int or float)") -class WM_OT_context_collection_boolean_set(bpy.types.Operator): +class WM_OT_context_collection_boolean_set(Operator): '''Set boolean values for a collection of items''' bl_idname = "wm.context_collection_boolean_set" bl_label = "Context Collection Boolean Set" @@ -520,7 +521,7 @@ class WM_OT_context_collection_boolean_set(bpy.types.Operator): return {'FINISHED'} -class WM_OT_context_modal_mouse(bpy.types.Operator): +class WM_OT_context_modal_mouse(Operator): '''Adjust arbitrary values with mouse input''' bl_idname = "wm.context_modal_mouse" bl_label = "Context Modal Mouse" @@ -586,7 +587,7 @@ class WM_OT_context_modal_mouse(bpy.types.Operator): self._values_clear() return {'FINISHED'} - elif event_type in ('RIGHTMOUSE', 'ESC'): + elif event_type in {'RIGHTMOUSE', 'ESC'}: self._values_restore() return {'FINISHED'} @@ -607,7 +608,7 @@ class WM_OT_context_modal_mouse(bpy.types.Operator): return {'RUNNING_MODAL'} -class WM_OT_url_open(bpy.types.Operator): +class WM_OT_url_open(Operator): "Open a website in the Webbrowser" bl_idname = "wm.url_open" bl_label = "" @@ -621,7 +622,7 @@ class WM_OT_url_open(bpy.types.Operator): return {'FINISHED'} -class WM_OT_path_open(bpy.types.Operator): +class WM_OT_path_open(Operator): "Open a path in a file browser" bl_idname = "wm.path_open" bl_label = "" @@ -654,7 +655,7 @@ class WM_OT_path_open(bpy.types.Operator): return {'FINISHED'} -class WM_OT_doc_view(bpy.types.Operator): +class WM_OT_doc_view(Operator): '''Load online reference docs''' bl_idname = "wm.doc_view" bl_label = "View Documentation" @@ -708,7 +709,7 @@ class WM_OT_doc_view(bpy.types.Operator): return {'FINISHED'} -class WM_OT_doc_edit(bpy.types.Operator): +class WM_OT_doc_edit(Operator): '''Load online reference docs''' bl_idname = "wm.doc_edit" bl_label = "Edit Documentation" @@ -792,7 +793,7 @@ rna_min = FloatProperty(name="Min", default=0.0, precision=3) rna_max = FloatProperty(name="Max", default=1.0, precision=3) -class WM_OT_properties_edit(bpy.types.Operator): +class WM_OT_properties_edit(Operator): '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_edit" bl_label = "Edit Property" @@ -839,7 +840,7 @@ class WM_OT_properties_edit(bpy.types.Operator): prop_ui = rna_idprop_ui_prop_get(item, prop) - if prop_type in (float, int): + if prop_type in {float, int}: prop_ui['soft_min'] = prop_ui['min'] = prop_type(self.min) prop_ui['soft_max'] = prop_ui['max'] = prop_type(self.max) @@ -876,7 +877,7 @@ class WM_OT_properties_edit(bpy.types.Operator): return wm.invoke_props_dialog(self) -class WM_OT_properties_add(bpy.types.Operator): +class WM_OT_properties_add(Operator): '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_add" bl_label = "Add Property" @@ -902,7 +903,7 @@ class WM_OT_properties_add(bpy.types.Operator): return {'FINISHED'} -class WM_OT_properties_context_change(bpy.types.Operator): +class WM_OT_properties_context_change(Operator): "Change the context tab in a Properties Window" bl_idname = "wm.properties_context_change" bl_label = "" @@ -914,7 +915,7 @@ class WM_OT_properties_context_change(bpy.types.Operator): return {'FINISHED'} -class WM_OT_properties_remove(bpy.types.Operator): +class WM_OT_properties_remove(Operator): '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_remove" bl_label = "Remove Property" @@ -928,7 +929,7 @@ class WM_OT_properties_remove(bpy.types.Operator): return {'FINISHED'} -class WM_OT_keyconfig_activate(bpy.types.Operator): +class WM_OT_keyconfig_activate(Operator): bl_idname = "wm.keyconfig_activate" bl_label = "Activate Keyconfig" @@ -939,7 +940,7 @@ class WM_OT_keyconfig_activate(bpy.types.Operator): return {'FINISHED'} -class WM_OT_appconfig_default(bpy.types.Operator): +class WM_OT_appconfig_default(Operator): bl_idname = "wm.appconfig_default" bl_label = "Default Application Configuration" @@ -956,7 +957,7 @@ class WM_OT_appconfig_default(bpy.types.Operator): return {'FINISHED'} -class WM_OT_appconfig_activate(bpy.types.Operator): +class WM_OT_appconfig_activate(Operator): bl_idname = "wm.appconfig_activate" bl_label = "Activate Application Configuration" @@ -974,7 +975,7 @@ class WM_OT_appconfig_activate(bpy.types.Operator): return {'FINISHED'} -class WM_OT_sysinfo(bpy.types.Operator): +class WM_OT_sysinfo(Operator): '''Generate System Info''' bl_idname = "wm.sysinfo" bl_label = "System Info" @@ -985,7 +986,7 @@ class WM_OT_sysinfo(bpy.types.Operator): return {'FINISHED'} -class WM_OT_copy_prev_settings(bpy.types.Operator): +class WM_OT_copy_prev_settings(Operator): '''Copy settings from previous version''' bl_idname = "wm.copy_prev_settings" bl_label = "Copy Previous Settings" diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index f2a3bac2373..94c40d11141 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel @@ -31,7 +32,7 @@ class ArmatureButtonsPanel(): return context.armature -class DATA_PT_context_arm(ArmatureButtonsPanel, bpy.types.Panel): +class DATA_PT_context_arm(ArmatureButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} @@ -48,7 +49,7 @@ class DATA_PT_context_arm(ArmatureButtonsPanel, bpy.types.Panel): layout.template_ID(space, "pin_id") -class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel): +class DATA_PT_skeleton(ArmatureButtonsPanel, Panel): bl_label = "Skeleton" def draw(self, context): @@ -71,7 +72,7 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel): flow.prop(arm, "use_deform_preserve_volume", text="Quaternion") -class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel): +class DATA_PT_display(ArmatureButtonsPanel, Panel): bl_label = "Display" def draw(self, context): @@ -96,7 +97,7 @@ class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel): col.prop(arm, "use_deform_delay", text="Delay Refresh") -class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel): +class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel): bl_label = "Bone Groups" @classmethod @@ -147,7 +148,7 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel): sub.operator("pose.group_deselect", text="Deselect") -class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel): +class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): bl_label = "Pose Library" bl_options = {'DEFAULT_CLOSED'} @@ -186,7 +187,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel): # TODO: this panel will soon be depreceated too -class DATA_PT_ghost(ArmatureButtonsPanel, bpy.types.Panel): +class DATA_PT_ghost(ArmatureButtonsPanel, Panel): bl_label = "Ghost" def draw(self, context): @@ -213,7 +214,7 @@ class DATA_PT_ghost(ArmatureButtonsPanel, bpy.types.Panel): col.prop(arm, "show_only_ghost_selected", text="Selected Only") -class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel): +class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel): bl_label = "iTaSC parameters" bl_options = {'DEFAULT_CLOSED'} @@ -266,7 +267,7 @@ from bl_ui.properties_animviz import ( ) -class DATA_PT_motion_paths(MotionPathButtonsPanel, bpy.types.Panel): +class DATA_PT_motion_paths(MotionPathButtonsPanel, Panel): #bl_label = "Bones Motion Paths" bl_context = "data" @@ -289,7 +290,7 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel, bpy.types.Panel): split.operator("pose.paths_clear", text="Clear Paths") -class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , bpy.types.Panel): # inherit from panel when ready +class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready #bl_label = "Bones Onion Skinning" bl_context = "data" @@ -303,7 +304,7 @@ class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , bpy.types.Panel): # in self.draw_settings(context, ob.pose.animation_visualisation, bones=True) -class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, bpy.types.Panel): +class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "object.data" _property_type = bpy.types.Armature diff --git a/release/scripts/startup/bl_ui/properties_data_bone.py b/release/scripts/startup/bl_ui/properties_data_bone.py index 9fc055e9343..b3eaf88d5bf 100644 --- a/release/scripts/startup/bl_ui/properties_data_bone.py +++ b/release/scripts/startup/bl_ui/properties_data_bone.py @@ -19,6 +19,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel @@ -32,7 +33,7 @@ class BoneButtonsPanel(): return (context.bone or context.edit_bone) -class BONE_PT_context_bone(BoneButtonsPanel, bpy.types.Panel): +class BONE_PT_context_bone(BoneButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} @@ -48,7 +49,7 @@ class BONE_PT_context_bone(BoneButtonsPanel, bpy.types.Panel): row.prop(bone, "name", text="") -class BONE_PT_transform(BoneButtonsPanel, bpy.types.Panel): +class BONE_PT_transform(BoneButtonsPanel, Panel): bl_label = "Transform" @classmethod @@ -102,7 +103,7 @@ class BONE_PT_transform(BoneButtonsPanel, bpy.types.Panel): sub.prop(bone, "lock") -class BONE_PT_transform_locks(BoneButtonsPanel, bpy.types.Panel): +class BONE_PT_transform_locks(BoneButtonsPanel, Panel): bl_label = "Transform Locks" bl_options = {'DEFAULT_CLOSED'} @@ -135,7 +136,7 @@ class BONE_PT_transform_locks(BoneButtonsPanel, bpy.types.Panel): row.column().prop(pchan, "lock_scale") -class BONE_PT_relations(BoneButtonsPanel, bpy.types.Panel): +class BONE_PT_relations(BoneButtonsPanel, Panel): bl_label = "Relations" def draw(self, context): @@ -180,7 +181,7 @@ class BONE_PT_relations(BoneButtonsPanel, bpy.types.Panel): sub.prop(bone, "use_local_location", text="Local Location") -class BONE_PT_display(BoneButtonsPanel, bpy.types.Panel): +class BONE_PT_display(BoneButtonsPanel, Panel): bl_label = "Display" @classmethod @@ -217,7 +218,7 @@ class BONE_PT_display(BoneButtonsPanel, bpy.types.Panel): col.prop_search(pchan, "custom_shape_transform", ob.pose, "bones", text="At") -class BONE_PT_inverse_kinematics(BoneButtonsPanel, bpy.types.Panel): +class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel): bl_label = "Inverse Kinematics" bl_options = {'DEFAULT_CLOSED'} @@ -308,7 +309,7 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, bpy.types.Panel): #row.prop(pchan, "ik_linear_weight", text="Weight", slider=True) -class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel): +class BONE_PT_deform(BoneButtonsPanel, Panel): bl_label = "Deform" bl_options = {'DEFAULT_CLOSED'} @@ -357,7 +358,7 @@ class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel): col.prop(bone, "use_cyclic_offset") -class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, bpy.types.Panel): +class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _property_type = bpy.types.Bone, bpy.types.EditBone, bpy.types.PoseBone diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py index 80cd5227fca..f484d7b59e1 100644 --- a/release/scripts/startup/bl_ui/properties_data_camera.py +++ b/release/scripts/startup/bl_ui/properties_data_camera.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel @@ -32,7 +33,7 @@ class CameraButtonsPanel(): return context.camera and (engine in cls.COMPAT_ENGINES) -class DATA_PT_context_camera(CameraButtonsPanel, bpy.types.Panel): +class DATA_PT_context_camera(CameraButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -53,7 +54,7 @@ class DATA_PT_context_camera(CameraButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_camera(CameraButtonsPanel, bpy.types.Panel): +class DATA_PT_camera(CameraButtonsPanel, Panel): bl_label = "Lens" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -111,7 +112,7 @@ class DATA_PT_camera(CameraButtonsPanel, bpy.types.Panel): col.prop(cam, "dof_distance", text="Distance") -class DATA_PT_camera_display(CameraButtonsPanel, bpy.types.Panel): +class DATA_PT_camera_display(CameraButtonsPanel, Panel): bl_label = "Display" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -138,7 +139,7 @@ class DATA_PT_camera_display(CameraButtonsPanel, bpy.types.Panel): sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True) -class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, bpy.types.Panel): +class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "object.data" _property_type = bpy.types.Camera diff --git a/release/scripts/startup/bl_ui/properties_data_curve.py b/release/scripts/startup/bl_ui/properties_data_curve.py index 3c88127c724..6448b9a5229 100644 --- a/release/scripts/startup/bl_ui/properties_data_curve.py +++ b/release/scripts/startup/bl_ui/properties_data_curve.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel @@ -48,7 +49,7 @@ class CurveButtonsPanelActive(CurveButtonsPanel): return (curve and type(curve) is not bpy.types.TextCurve and curve.splines.active) -class DATA_PT_context_curve(CurveButtonsPanel, bpy.types.Panel): +class DATA_PT_context_curve(CurveButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} @@ -65,7 +66,7 @@ class DATA_PT_context_curve(CurveButtonsPanel, bpy.types.Panel): layout.template_ID(space, "pin_id") # XXX: broken -class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel): +class DATA_PT_shape_curve(CurveButtonsPanel, Panel): bl_label = "Shape" def draw(self, context): @@ -108,13 +109,13 @@ class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel): if (is_curve or is_text): col.label(text="Fill:") sub = col.column() - sub.active = (curve.bevel_object is None) + sub.active = (curve.dimensions == '2D' or (curve.bevel_object is None and curve.dimensions == '3D')) sub.prop(curve, "use_fill_front") sub.prop(curve, "use_fill_back") col.prop(curve, "use_fill_deform", text="Fill Deformed") -class DATA_PT_curve_texture_space(CurveButtonsPanel, bpy.types.Panel): +class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel): bl_label = "Texture Space" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -133,7 +134,7 @@ class DATA_PT_curve_texture_space(CurveButtonsPanel, bpy.types.Panel): row.column().prop(curve, "texspace_size", text="Size") -class DATA_PT_geometry_curve(CurveButtonsPanel, bpy.types.Panel): +class DATA_PT_geometry_curve(CurveButtonsPanel, Panel): bl_label = "Geometry" @classmethod @@ -166,7 +167,7 @@ class DATA_PT_geometry_curve(CurveButtonsPanel, bpy.types.Panel): col.prop(curve, "bevel_object", text="") -class DATA_PT_pathanim(CurveButtonsPanelCurve, bpy.types.Panel): +class DATA_PT_pathanim(CurveButtonsPanelCurve, Panel): bl_label = "Path Animation" def draw_header(self, context): @@ -197,7 +198,7 @@ class DATA_PT_pathanim(CurveButtonsPanelCurve, bpy.types.Panel): col.prop(curve, "use_time_offset", text="Offset Children") -class DATA_PT_active_spline(CurveButtonsPanelActive, bpy.types.Panel): +class DATA_PT_active_spline(CurveButtonsPanelActive, Panel): bl_label = "Active Spline" def draw(self, context): @@ -268,7 +269,7 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, bpy.types.Panel): layout.prop(act_spline, "use_smooth") -class DATA_PT_font(CurveButtonsPanel, bpy.types.Panel): +class DATA_PT_font(CurveButtonsPanel, Panel): bl_label = "Font" @classmethod @@ -332,7 +333,7 @@ class DATA_PT_font(CurveButtonsPanel, bpy.types.Panel): row.prop(char, "use_small_caps") -class DATA_PT_paragraph(CurveButtonsPanel, bpy.types.Panel): +class DATA_PT_paragraph(CurveButtonsPanel, Panel): bl_label = "Paragraph" @classmethod @@ -361,7 +362,7 @@ class DATA_PT_paragraph(CurveButtonsPanel, bpy.types.Panel): col.prop(text, "offset_y", text="Y") -class DATA_PT_textboxes(CurveButtonsPanel, bpy.types.Panel): +class DATA_PT_text_boxes(CurveButtonsPanel, Panel): bl_label = "Text Boxes" @classmethod @@ -401,7 +402,7 @@ class DATA_PT_textboxes(CurveButtonsPanel, bpy.types.Panel): row.operator("font.textbox_remove", text='', icon='X', emboss=False).index = i -class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, bpy.types.Panel): +class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "object.data" _property_type = bpy.types.Curve diff --git a/release/scripts/startup/bl_ui/properties_data_empty.py b/release/scripts/startup/bl_ui/properties_data_empty.py index 42b0af7eaf5..c781873e16c 100644 --- a/release/scripts/startup/bl_ui/properties_data_empty.py +++ b/release/scripts/startup/bl_ui/properties_data_empty.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel class DataButtonsPanel(): @@ -30,7 +31,7 @@ class DataButtonsPanel(): return (context.object and context.object.type == 'EMPTY') -class DATA_PT_empty(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_empty(DataButtonsPanel, Panel): bl_label = "Empty" def draw(self, context): diff --git a/release/scripts/startup/bl_ui/properties_data_lamp.py b/release/scripts/startup/bl_ui/properties_data_lamp.py index 36010c8b511..4ff180f74fb 100644 --- a/release/scripts/startup/bl_ui/properties_data_lamp.py +++ b/release/scripts/startup/bl_ui/properties_data_lamp.py @@ -18,15 +18,16 @@ # import bpy +from bpy.types import Menu, Panel from rna_prop_ui import PropertyPanel -class LAMP_MT_sunsky_presets(bpy.types.Menu): +class LAMP_MT_sunsky_presets(Menu): bl_label = "Sun & Sky Presets" preset_subdir = "sunsky" preset_operator = "script.execute_preset" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - draw = bpy.types.Menu.draw_preset + draw = Menu.draw_preset class DataButtonsPanel(): @@ -40,7 +41,7 @@ class DataButtonsPanel(): return context.lamp and (engine in cls.COMPAT_ENGINES) -class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_context_lamp(DataButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -65,7 +66,7 @@ class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel): split.label(text=str(texture_count), icon='TEXTURE') -class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_preview(DataButtonsPanel, Panel): bl_label = "Preview" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -73,7 +74,7 @@ class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel): self.layout.template_preview(context.lamp) -class DATA_PT_lamp(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_lamp(DataButtonsPanel, Panel): bl_label = "Lamp" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -115,7 +116,7 @@ class DATA_PT_lamp(DataButtonsPanel, bpy.types.Panel): col.prop(lamp, "use_diffuse") -class DATA_PT_sunsky(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_sunsky(DataButtonsPanel, Panel): bl_label = "Sky & Atmosphere" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -187,7 +188,7 @@ class DATA_PT_sunsky(DataButtonsPanel, bpy.types.Panel): sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction") -class DATA_PT_shadow(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_shadow(DataButtonsPanel, Panel): bl_label = "Shadow" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -302,7 +303,7 @@ class DATA_PT_shadow(DataButtonsPanel, bpy.types.Panel): sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End") -class DATA_PT_area(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_area(DataButtonsPanel, Panel): bl_label = "Area Shape" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -328,7 +329,7 @@ class DATA_PT_area(DataButtonsPanel, bpy.types.Panel): sub.prop(lamp, "size_y", text="Size Y") -class DATA_PT_spot(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_spot(DataButtonsPanel, Panel): bl_label = "Spot Shape" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -362,7 +363,7 @@ class DATA_PT_spot(DataButtonsPanel, bpy.types.Panel): sub.prop(lamp, "halo_step", text="Step") -class DATA_PT_falloff_curve(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_falloff_curve(DataButtonsPanel, Panel): bl_label = "Falloff Curve" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -380,7 +381,7 @@ class DATA_PT_falloff_curve(DataButtonsPanel, bpy.types.Panel): self.layout.template_curve_mapping(lamp, "falloff_curve") -class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, bpy.types.Panel): +class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "object.data" _property_type = bpy.types.Lamp diff --git a/release/scripts/startup/bl_ui/properties_data_lattice.py b/release/scripts/startup/bl_ui/properties_data_lattice.py index cd719b6fe84..14d6ea66894 100644 --- a/release/scripts/startup/bl_ui/properties_data_lattice.py +++ b/release/scripts/startup/bl_ui/properties_data_lattice.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel @@ -31,7 +32,7 @@ class DataButtonsPanel(): return context.lattice -class DATA_PT_context_lattice(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_context_lattice(DataButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} @@ -51,7 +52,7 @@ class DATA_PT_context_lattice(DataButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_lattice(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_lattice(DataButtonsPanel, Panel): bl_label = "Lattice" def draw(self, context): @@ -76,7 +77,7 @@ class DATA_PT_lattice(DataButtonsPanel, bpy.types.Panel): row.prop_search(lat, "vertex_group", context.object, "vertex_groups", text="") -class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, bpy.types.Panel): +class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "object.data" _property_type = bpy.types.Lattice diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py index 618a88f0879..896b76c59f6 100644 --- a/release/scripts/startup/bl_ui/properties_data_mesh.py +++ b/release/scripts/startup/bl_ui/properties_data_mesh.py @@ -18,10 +18,11 @@ # import bpy +from bpy.types import Menu, Panel from rna_prop_ui import PropertyPanel -class MESH_MT_vertex_group_specials(bpy.types.Menu): +class MESH_MT_vertex_group_specials(Menu): bl_label = "Vertex Group Specials" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -36,7 +37,7 @@ class MESH_MT_vertex_group_specials(bpy.types.Menu): layout.operator("object.vertex_group_remove", icon='X', text="Delete All").all = True -class MESH_MT_shape_key_specials(bpy.types.Menu): +class MESH_MT_shape_key_specials(Menu): bl_label = "Shape Key Specials" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -61,7 +62,7 @@ class MeshButtonsPanel(): return context.mesh and (engine in cls.COMPAT_ENGINES) -class DATA_PT_context_mesh(MeshButtonsPanel, bpy.types.Panel): +class DATA_PT_context_mesh(MeshButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -72,14 +73,14 @@ class DATA_PT_context_mesh(MeshButtonsPanel, bpy.types.Panel): ob = context.object mesh = context.mesh space = context.space_data - + layout.prop(context.scene.tool_settings, "mesh_select_mode", index=0, text="Vertex") if ob: layout.template_ID(ob, "data") elif mesh: layout.template_ID(space, "pin_id") -class DATA_PT_normals(MeshButtonsPanel, bpy.types.Panel): +class DATA_PT_normals(MeshButtonsPanel, Panel): bl_label = "Normals" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -99,7 +100,7 @@ class DATA_PT_normals(MeshButtonsPanel, bpy.types.Panel): split.prop(mesh, "show_double_sided") -class DATA_PT_texture_space(MeshButtonsPanel, bpy.types.Panel): +class DATA_PT_texture_space(MeshButtonsPanel, Panel): bl_label = "Texture Space" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -119,7 +120,7 @@ class DATA_PT_texture_space(MeshButtonsPanel, bpy.types.Panel): row.column().prop(mesh, "texspace_size", text="Size") -class DATA_PT_vertex_groups(MeshButtonsPanel, bpy.types.Panel): +class DATA_PT_vertex_groups(MeshButtonsPanel, Panel): bl_label = "Vertex Groups" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -168,7 +169,7 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, bpy.types.Panel): layout.prop(context.tool_settings, "vertex_group_weight", text="Weight") -class DATA_PT_shape_keys(MeshButtonsPanel, bpy.types.Panel): +class DATA_PT_shape_keys(MeshButtonsPanel, Panel): bl_label = "Shape Keys" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -261,7 +262,7 @@ class DATA_PT_shape_keys(MeshButtonsPanel, bpy.types.Panel): row.prop(key, "slurph") -class DATA_PT_uv_texture(MeshButtonsPanel, bpy.types.Panel): +class DATA_PT_uv_texture(MeshButtonsPanel, Panel): bl_label = "UV Texture" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -284,7 +285,7 @@ class DATA_PT_uv_texture(MeshButtonsPanel, bpy.types.Panel): layout.prop(lay, "name") -class DATA_PT_texface(MeshButtonsPanel, bpy.types.Panel): +class DATA_PT_texface(MeshButtonsPanel, Panel): bl_label = "Texture Face" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -331,7 +332,7 @@ class DATA_PT_texface(MeshButtonsPanel, bpy.types.Panel): col.label(text="No UV Texture") -class DATA_PT_vertex_colors(MeshButtonsPanel, bpy.types.Panel): +class DATA_PT_vertex_colors(MeshButtonsPanel, Panel): bl_label = "Vertex Colors" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -354,7 +355,7 @@ class DATA_PT_vertex_colors(MeshButtonsPanel, bpy.types.Panel): layout.prop(lay, "name") -class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, bpy.types.Panel): +class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "object.data" _property_type = bpy.types.Mesh diff --git a/release/scripts/startup/bl_ui/properties_data_metaball.py b/release/scripts/startup/bl_ui/properties_data_metaball.py index 6dda99bc37f..cd894e60dbb 100644 --- a/release/scripts/startup/bl_ui/properties_data_metaball.py +++ b/release/scripts/startup/bl_ui/properties_data_metaball.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel @@ -31,7 +32,7 @@ class DataButtonsPanel(): return context.meta_ball -class DATA_PT_context_metaball(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_context_metaball(DataButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} @@ -48,7 +49,7 @@ class DATA_PT_context_metaball(DataButtonsPanel, bpy.types.Panel): layout.template_ID(space, "pin_id") -class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_metaball(DataButtonsPanel, Panel): bl_label = "Metaball" def draw(self, context): @@ -72,7 +73,7 @@ class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel): layout.prop(mball, "update_method", expand=True) -class DATA_PT_mball_texture_space(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_mball_texture_space(DataButtonsPanel, Panel): bl_label = "Texture Space" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -89,7 +90,7 @@ class DATA_PT_mball_texture_space(DataButtonsPanel, bpy.types.Panel): row.column().prop(mball, "texspace_size", text="Size") -class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel): +class DATA_PT_metaball_element(DataButtonsPanel, Panel): bl_label = "Active Element" @classmethod @@ -129,7 +130,7 @@ class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel): col.prop(metaelem, "size_y", text="Y") -class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, bpy.types.Panel): +class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "object.data" _property_type = bpy.types.MetaBall diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py index a02e6bd6469..65827775ad1 100644 --- a/release/scripts/startup/bl_ui/properties_data_modifier.py +++ b/release/scripts/startup/bl_ui/properties_data_modifier.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel class ModifierButtonsPanel(): @@ -26,7 +27,7 @@ class ModifierButtonsPanel(): bl_context = "modifier" -class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel): +class DATA_PT_modifiers(ModifierButtonsPanel, Panel): bl_label = "Modifiers" def draw(self, context): @@ -576,13 +577,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel): sub = col.column() sub.active = bool(md.vertex_group) sub.prop(md, "invert_vertex_group", text="Invert") + sub.prop(md, "thickness_vertex_group", text="Factor") col.prop(md, "use_even_offset") col.prop(md, "use_quality_normals") col.prop(md, "use_rim") sub = col.column() - sub.label() row = sub.split(align=True, percentage=0.4) row.prop(md, "material_offset", text="") row = row.row() diff --git a/release/scripts/startup/bl_ui/properties_game.py b/release/scripts/startup/bl_ui/properties_game.py index 0c07451b3b2..f8be32e6c07 100644 --- a/release/scripts/startup/bl_ui/properties_game.py +++ b/release/scripts/startup/bl_ui/properties_game.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel class PhysicsButtonsPanel(): @@ -26,7 +27,7 @@ class PhysicsButtonsPanel(): bl_context = "physics" -class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel): bl_label = "Physics" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -167,7 +168,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel): layout.prop(ob, "hide_render", text="Invisible") -class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, Panel): bl_label = "Collision Bounds" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -206,7 +207,7 @@ class RenderButtonsPanel(): return (rd.engine in cls.COMPAT_ENGINES) -class RENDER_PT_game(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_game(RenderButtonsPanel, Panel): bl_label = "Game" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -218,7 +219,7 @@ class RENDER_PT_game(RenderButtonsPanel, bpy.types.Panel): row.label() -class RENDER_PT_game_player(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_game_player(RenderButtonsPanel, Panel): bl_label = "Standalone Player" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -251,7 +252,7 @@ class RENDER_PT_game_player(RenderButtonsPanel, bpy.types.Panel): col.prop(gs, "frame_color", text="") -class RENDER_PT_game_stereo(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_game_stereo(RenderButtonsPanel, Panel): bl_label = "Stereo" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -305,7 +306,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, bpy.types.Panel): layout.prop(gs, "dome_text") -class RENDER_PT_game_shading(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_game_shading(RenderButtonsPanel, Panel): bl_label = "Shading" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -331,7 +332,7 @@ class RENDER_PT_game_shading(RenderButtonsPanel, bpy.types.Panel): col.prop(gs, "use_glsl_extra_textures", text="Extra Textures") -class RENDER_PT_game_performance(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_game_performance(RenderButtonsPanel, Panel): bl_label = "Performance" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -344,7 +345,7 @@ class RENDER_PT_game_performance(RenderButtonsPanel, bpy.types.Panel): row.prop(gs, "use_display_lists") -class RENDER_PT_game_display(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_game_display(RenderButtonsPanel, Panel): bl_label = "Display" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -360,7 +361,7 @@ class RENDER_PT_game_display(RenderButtonsPanel, bpy.types.Panel): flow.prop(gs, "show_mouse", text="Mouse Cursor") -class RENDER_PT_game_sound(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_game_sound(RenderButtonsPanel, Panel): bl_label = "Sound" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -381,7 +382,7 @@ class WorldButtonsPanel(): bl_context = "world" -class WORLD_PT_game_context_world(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_game_context_world(WorldButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} COMPAT_ENGINES = {'BLENDER_GAME'} @@ -405,7 +406,7 @@ class WORLD_PT_game_context_world(WorldButtonsPanel, bpy.types.Panel): split.template_ID(space, "pin_id") -class WORLD_PT_game_world(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_game_world(WorldButtonsPanel, Panel): bl_label = "World" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -424,7 +425,7 @@ class WORLD_PT_game_world(WorldButtonsPanel, bpy.types.Panel): row.column().prop(world, "ambient_color") -class WORLD_PT_game_mist(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_game_mist(WorldButtonsPanel, Panel): bl_label = "Mist" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -450,7 +451,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel, bpy.types.Panel): row.prop(world.mist_settings, "depth") -class WORLD_PT_game_physics(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_game_physics(WorldButtonsPanel, Panel): bl_label = "Physics" COMPAT_ENGINES = {'BLENDER_GAME'} diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py index 296c05d78f5..13ce92f084c 100644 --- a/release/scripts/startup/bl_ui/properties_material.py +++ b/release/scripts/startup/bl_ui/properties_material.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Menu, Panel from rna_prop_ui import PropertyPanel @@ -50,14 +51,14 @@ def simple_material(mat): return False -class MATERIAL_MT_sss_presets(bpy.types.Menu): +class MATERIAL_MT_sss_presets(Menu): bl_label = "SSS Presets" preset_subdir = "sss" preset_operator = "script.execute_preset" - draw = bpy.types.Menu.draw_preset + draw = Menu.draw_preset -class MATERIAL_MT_specials(bpy.types.Menu): +class MATERIAL_MT_specials(Menu): bl_label = "Material Specials" def draw(self, context): @@ -79,7 +80,7 @@ class MaterialButtonsPanel(): return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES) -class MATERIAL_PT_context_material(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -144,7 +145,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, bpy.types.Panel): row.label(text="No material node selected") -class MATERIAL_PT_preview(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_preview(MaterialButtonsPanel, Panel): bl_label = "Preview" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -152,7 +153,7 @@ class MATERIAL_PT_preview(MaterialButtonsPanel, bpy.types.Panel): self.layout.template_preview(context.material) -class MATERIAL_PT_pipeline(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_pipeline(MaterialButtonsPanel, Panel): bl_label = "Render Pipeline Options" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -203,7 +204,7 @@ class MATERIAL_PT_pipeline(MaterialButtonsPanel, bpy.types.Panel): col.prop(mat, "pass_index") -class MATERIAL_PT_diffuse(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel): bl_label = "Diffuse" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -260,7 +261,7 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, bpy.types.Panel): col.prop(mat, "diffuse_ramp_factor", text="Factor") -class MATERIAL_PT_specular(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_specular(MaterialButtonsPanel, Panel): bl_label = "Specular" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -313,7 +314,7 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, bpy.types.Panel): layout.prop(mat, "specular_ramp_factor", text="Factor") -class MATERIAL_PT_shading(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_shading(MaterialButtonsPanel, Panel): bl_label = "Shading" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -347,7 +348,7 @@ class MATERIAL_PT_shading(MaterialButtonsPanel, bpy.types.Panel): sub.prop(mat, "use_cubic") -class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_transp(MaterialButtonsPanel, Panel): bl_label = "Transparency" # bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -413,7 +414,7 @@ class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel): sub.prop(rayt, "gloss_samples", text="Samples") -class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_mirror(MaterialButtonsPanel, Panel): bl_label = "Mirror" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -471,7 +472,7 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel): sub.prop(raym, "gloss_anisotropic", text="Anisotropic") -class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_sss(MaterialButtonsPanel, Panel): bl_label = "Subsurface Scattering" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -523,7 +524,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel): col.prop(sss, "error_threshold", text="Error") -class MATERIAL_PT_halo(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_halo(MaterialButtonsPanel, Panel): bl_label = "Halo" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -576,7 +577,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, bpy.types.Panel): number_but(col, "use_star", "star_tip_count", "Star tips", "") -class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_flare(MaterialButtonsPanel, Panel): bl_label = "Flare" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -611,7 +612,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel): col.prop(halo, "flare_subflare_size", text="Subsize") -class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_physics(MaterialButtonsPanel, Panel): bl_label = "Physics" COMPAT_ENGINES = {'BLENDER_GAME'} @@ -641,7 +642,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel): row.prop(phys, "use_fh_normal") -class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_strand(MaterialButtonsPanel, Panel): bl_label = "Strand" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -688,7 +689,7 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel): sub.prop(tan, "blend_distance", text="Distance") -class MATERIAL_PT_options(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_options(MaterialButtonsPanel, Panel): bl_label = "Options" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -737,7 +738,7 @@ class MATERIAL_PT_options(MaterialButtonsPanel, bpy.types.Panel): col.prop(mat, "pass_index") -class MATERIAL_PT_shadow(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_shadow(MaterialButtonsPanel, Panel): bl_label = "Shadow" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -781,7 +782,7 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel, bpy.types.Panel): col.prop(mat, "use_cast_approximate") -class MATERIAL_PT_transp_game(MaterialButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_transp_game(MaterialButtonsPanel, Panel): bl_label = "Transparency" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_GAME'} @@ -824,7 +825,7 @@ class VolumeButtonsPanel(): return mat and (mat.type == 'VOLUME') and (engine in cls.COMPAT_ENGINES) -class MATERIAL_PT_volume_density(VolumeButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_volume_density(VolumeButtonsPanel, Panel): bl_label = "Density" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -838,7 +839,7 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel, bpy.types.Panel): row.prop(vol, "density_scale") -class MATERIAL_PT_volume_shading(VolumeButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_volume_shading(VolumeButtonsPanel, Panel): bl_label = "Shading" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -863,7 +864,7 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel, bpy.types.Panel): sub.prop(vol, "reflection_color", text="") -class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel): bl_label = "Lighting" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -898,7 +899,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, bpy.types.Panel): sub.prop(vol, "ms_intensity") -class MATERIAL_PT_volume_transp(VolumeButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_volume_transp(VolumeButtonsPanel, Panel): bl_label = "Transparency" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -916,7 +917,7 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel, bpy.types.Panel): layout.prop(mat, "transparency_method", expand=True) -class MATERIAL_PT_volume_integration(VolumeButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel): bl_label = "Integration" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -938,7 +939,7 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel, bpy.types.Panel): col.prop(vol, "depth_threshold") -class MATERIAL_PT_volume_options(VolumeButtonsPanel, bpy.types.Panel): +class MATERIAL_PT_volume_options(VolumeButtonsPanel, Panel): bl_label = "Options" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} bl_options = {'DEFAULT_CLOSED'} @@ -970,7 +971,7 @@ class MATERIAL_PT_volume_options(VolumeButtonsPanel, bpy.types.Panel): row.prop(mat, "use_light_group_exclusive", text="Exclusive") -class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, bpy.types.Panel): +class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "material" _property_type = bpy.types.Material diff --git a/release/scripts/startup/bl_ui/properties_object.py b/release/scripts/startup/bl_ui/properties_object.py index cdbcf2cf533..0779debb102 100644 --- a/release/scripts/startup/bl_ui/properties_object.py +++ b/release/scripts/startup/bl_ui/properties_object.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel @@ -27,7 +28,7 @@ class ObjectButtonsPanel(): bl_context = "object" -class OBJECT_PT_context_object(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_context_object(ObjectButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} @@ -42,7 +43,7 @@ class OBJECT_PT_context_object(ObjectButtonsPanel, bpy.types.Panel): row.template_ID(context.scene.objects, "active") -class OBJECT_PT_transform(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_transform(ObjectButtonsPanel, Panel): bl_label = "Transform" def draw(self, context): @@ -68,7 +69,7 @@ class OBJECT_PT_transform(ObjectButtonsPanel, bpy.types.Panel): layout.prop(ob, "rotation_mode") -class OBJECT_PT_delta_transform(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_delta_transform(ObjectButtonsPanel, Panel): bl_label = "Delta Transform" bl_options = {'DEFAULT_CLOSED'} @@ -94,7 +95,7 @@ class OBJECT_PT_delta_transform(ObjectButtonsPanel, bpy.types.Panel): row.column().prop(ob, "delta_scale") -class OBJECT_PT_transform_locks(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_transform_locks(ObjectButtonsPanel, Panel): bl_label = "Transform Locks" bl_options = {'DEFAULT_CLOSED'} @@ -120,7 +121,7 @@ class OBJECT_PT_transform_locks(ObjectButtonsPanel, bpy.types.Panel): row.column().prop(ob, "lock_scale", text="Scale") -class OBJECT_PT_relations(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_relations(ObjectButtonsPanel, Panel): bl_label = "Relations" def draw(self, context): @@ -147,7 +148,7 @@ class OBJECT_PT_relations(ObjectButtonsPanel, bpy.types.Panel): sub.active = (parent is not None) -class OBJECT_PT_groups(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_groups(ObjectButtonsPanel, Panel): bl_label = "Groups" def draw(self, context): @@ -186,7 +187,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel, bpy.types.Panel): index += 1 -class OBJECT_PT_display(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_display(ObjectButtonsPanel, Panel): bl_label = "Display" def draw(self, context): @@ -220,7 +221,7 @@ class OBJECT_PT_display(ObjectButtonsPanel, bpy.types.Panel): col.prop(ob, "show_transparent", text="Transparency") -class OBJECT_PT_duplication(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_duplication(ObjectButtonsPanel, Panel): bl_label = "Duplication" def draw(self, context): @@ -258,7 +259,7 @@ class OBJECT_PT_duplication(ObjectButtonsPanel, bpy.types.Panel): # XXX: the following options are all quite buggy, ancient hacks that should be dropped -class OBJECT_PT_animation(ObjectButtonsPanel, bpy.types.Panel): +class OBJECT_PT_animation(ObjectButtonsPanel, Panel): bl_label = "Animation Hacks" bl_options = {'DEFAULT_CLOSED'} @@ -293,7 +294,7 @@ from bl_ui.properties_animviz import ( ) -class OBJECT_PT_motion_paths(MotionPathButtonsPanel, bpy.types.Panel): +class OBJECT_PT_motion_paths(MotionPathButtonsPanel, Panel): #bl_label = "Object Motion Paths" bl_context = "object" @@ -315,7 +316,7 @@ class OBJECT_PT_motion_paths(MotionPathButtonsPanel, bpy.types.Panel): row.operator("object.paths_clear", text="Clear Paths") -class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , bpy.types.Panel): # inherit from panel when ready +class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready #bl_label = "Object Onion Skinning" bl_context = "object" @@ -329,7 +330,7 @@ class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , bpy.types.Panel): # self.draw_settings(context, ob.animation_visualisation) -class OBJECT_PT_custom_props(ObjectButtonsPanel, PropertyPanel, bpy.types.Panel): +class OBJECT_PT_custom_props(ObjectButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "object" _property_type = bpy.types.Object diff --git a/release/scripts/startup/bl_ui/properties_object_constraint.py b/release/scripts/startup/bl_ui/properties_object_constraint.py index 5f79dd3127a..867abe4dd5d 100644 --- a/release/scripts/startup/bl_ui/properties_object_constraint.py +++ b/release/scripts/startup/bl_ui/properties_object_constraint.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel class ConstraintButtonsPanel(): @@ -755,7 +756,7 @@ class ConstraintButtonsPanel(): layout.label("Blender 2.5 has no py-constraints") -class OBJECT_PT_constraints(ConstraintButtonsPanel, bpy.types.Panel): +class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel): bl_label = "Object Constraints" bl_context = "constraint" @@ -779,7 +780,7 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel, bpy.types.Panel): self.draw_constraint(context, con) -class BONE_PT_constraints(ConstraintButtonsPanel, bpy.types.Panel): +class BONE_PT_constraints(ConstraintButtonsPanel, Panel): bl_label = "Bone Constraints" bl_context = "bone_constraint" diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index f23d05f4d17..6187d95d932 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel from bl_ui.properties_physics_common import ( @@ -72,7 +73,7 @@ class ParticleButtonsPanel(): return particle_panel_poll(cls, context) -class PARTICLE_PT_context_particles(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} @@ -175,7 +176,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, bpy.types.Panel): split.prop(psys, "reactor_target_particle_system", text="Particle System") -class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_emission(ParticleButtonsPanel, Panel): bl_label = "Emission" @classmethod @@ -243,7 +244,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel): row.prop(part, "grid_random", text="Random", slider=True) -class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel): bl_label = "Hair dynamics" bl_options = {'DEFAULT_CLOSED'} @@ -298,7 +299,7 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, bpy.types.Panel): col.prop(cloth, "quality", text="Steps", slider=True) -class PARTICLE_PT_cache(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_cache(ParticleButtonsPanel, Panel): bl_label = "Cache" bl_options = {'DEFAULT_CLOSED'} @@ -323,7 +324,7 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, bpy.types.Panel): point_cache_ui(self, context, psys.point_cache, True, 'HAIR' if (psys.settings.type == 'HAIR') else 'PSYS') -class PARTICLE_PT_velocity(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel): bl_label = "Velocity" @classmethod @@ -372,7 +373,7 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, bpy.types.Panel): # sub.prop(part, "reaction_shape", slider=True) -class PARTICLE_PT_rotation(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): bl_label = "Rotation" @classmethod @@ -420,7 +421,7 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, bpy.types.Panel): col.prop(part, "angular_velocity_factor", text="") -class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_physics(ParticleButtonsPanel, Panel): bl_label = "Physics" @classmethod @@ -455,7 +456,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel): col.prop(part, "mass") col.prop(part, "use_multiply_size_mass", text="Multiply mass with size") - if part.physics_type in ('NEWTON', 'FLUID'): + if part.physics_type in {'NEWTON', 'FLUID'}: split = layout.split() col = split.column() @@ -634,7 +635,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel): sub.prop(key, "system", text="System") -class PARTICLE_PT_boidbrain(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel): bl_label = "Boid Brain" @classmethod @@ -734,7 +735,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, bpy.types.Panel): row.prop(rule, "flee_distance") -class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_render(ParticleButtonsPanel, Panel): bl_label = "Render" @classmethod @@ -912,13 +913,13 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel): col = row.column() col.label(text="") - if part.render_type in ('OBJECT', 'GROUP') and not part.use_advanced_hair: + if part.render_type in {'OBJECT', 'GROUP'} and not part.use_advanced_hair: row = layout.row(align=True) row.prop(part, "particle_size") row.prop(part, "size_random", slider=True) -class PARTICLE_PT_draw(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_draw(ParticleButtonsPanel, Panel): bl_label = "Display" bl_options = {'DEFAULT_CLOSED'} @@ -979,7 +980,7 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, bpy.types.Panel): col.prop(part, "draw_step") -class PARTICLE_PT_children(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_children(ParticleButtonsPanel, Panel): bl_label = "Children" bl_options = {'DEFAULT_CLOSED'} @@ -1078,7 +1079,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel, bpy.types.Panel): sub.prop(part, "kink_shape", slider=True) -class PARTICLE_PT_field_weights(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel): bl_label = "Field Weights" bl_options = {'DEFAULT_CLOSED'} @@ -1098,7 +1099,7 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel, bpy.types.Panel): row.prop(part, "effect_hair", slider=True) -class PARTICLE_PT_force_fields(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel): bl_label = "Force Field Settings" bl_options = {'DEFAULT_CLOSED'} @@ -1131,7 +1132,7 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel, bpy.types.Panel): basic_force_field_falloff_ui(self, context, part.force_field_2) -class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, bpy.types.Panel): +class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel): bl_label = "Vertexgroups" bl_options = {'DEFAULT_CLOSED'} @@ -1201,7 +1202,7 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, bpy.types.Panel): # row.prop(psys, "invert_vertex_group_field", text="") -class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, bpy.types.Panel): +class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, Panel): _context_path = "particle_system.settings" _property_type = bpy.types.ParticleSettings diff --git a/release/scripts/startup/bl_ui/properties_physics_cloth.py b/release/scripts/startup/bl_ui/properties_physics_cloth.py index bce6ab993a7..d5427d8bae8 100644 --- a/release/scripts/startup/bl_ui/properties_physics_cloth.py +++ b/release/scripts/startup/bl_ui/properties_physics_cloth.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Menu, Panel from bl_ui.properties_physics_common import ( @@ -30,14 +31,14 @@ def cloth_panel_enabled(md): return md.point_cache.is_baked is False -class CLOTH_MT_presets(bpy.types.Menu): +class CLOTH_MT_presets(Menu): ''' Creates the menu items by scanning scripts/templates ''' bl_label = "Cloth Presets" preset_subdir = "cloth" preset_operator = "script.execute_preset" - draw = bpy.types.Menu.draw_preset + draw = Menu.draw_preset class PhysicButtonsPanel(): @@ -52,7 +53,7 @@ class PhysicButtonsPanel(): return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.cloth) -class PHYSICS_PT_cloth(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel): bl_label = "Cloth" def draw(self, context): @@ -117,7 +118,7 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, bpy.types.Panel): col.prop_search(cloth, "rest_shape_key", key, "key_blocks", text="") -class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel): bl_label = "Cloth Cache" bl_options = {'DEFAULT_CLOSED'} @@ -130,7 +131,7 @@ class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, bpy.types.Panel): point_cache_ui(self, context, md.point_cache, cloth_panel_enabled(md), 'CLOTH') -class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel): bl_label = "Cloth Collision" bl_options = {'DEFAULT_CLOSED'} @@ -171,7 +172,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, bpy.types.Panel): layout.prop(cloth, "group") -class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel): bl_label = "Cloth Stiffness Scaling" bl_options = {'DEFAULT_CLOSED'} @@ -207,7 +208,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, bpy.types.Panel): col.prop(cloth, "bending_stiffness_max", text="Max") -class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, Panel): bl_label = "Cloth Field Weights" bl_options = {'DEFAULT_CLOSED'} diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py index f7cf8da1840..204e25d9f01 100644 --- a/release/scripts/startup/bl_ui/properties_physics_common.py +++ b/release/scripts/startup/bl_ui/properties_physics_common.py @@ -19,6 +19,7 @@ # import bpy +from bpy.types import Panel class PhysicButtonsPanel(): @@ -44,7 +45,7 @@ def physics_add(self, layout, md, name, type, typeicon, toggles): sub.operator("object.modifier_add", text=name, icon=typeicon).type = type -class PHYSICS_PT_add(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_add(PhysicButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} diff --git a/release/scripts/startup/bl_ui/properties_physics_field.py b/release/scripts/startup/bl_ui/properties_physics_field.py index bd374f0a6f8..aa0ff4c6c66 100644 --- a/release/scripts/startup/bl_ui/properties_physics_field.py +++ b/release/scripts/startup/bl_ui/properties_physics_field.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from bl_ui.properties_physics_common import ( @@ -37,7 +38,7 @@ class PhysicButtonsPanel(): return (context.object) and (not rd.use_game_engine) -class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_field(PhysicButtonsPanel, Panel): bl_label = "Force Fields" @classmethod @@ -167,7 +168,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel): sub.prop(field, "radial_max", text="Distance") -class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_collision(PhysicButtonsPanel, Panel): bl_label = "Collision" #bl_options = {'DEFAULT_CLOSED'} diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index c7e3a9e7220..46893af3582 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel class PhysicButtonsPanel(): @@ -32,7 +33,7 @@ class PhysicButtonsPanel(): return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.fluid) -class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel): bl_label = "Fluid" def draw(self, context): @@ -186,7 +187,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel): sub.prop(fluid, "velocity_radius", text="Radius") -class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel): bl_label = "Domain World" bl_options = {'DEFAULT_CLOSED'} @@ -236,7 +237,7 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, bpy.types.Panel): col.prop(fluid, "compressibility", slider=True) -class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, Panel): bl_label = "Domain Boundary" bl_options = {'DEFAULT_CLOSED'} @@ -265,7 +266,7 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, bpy.types.Panel): col.prop(fluid, "surface_subdivisions", text="Subdivisions") -class PHYSICS_PT_domain_particles(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_domain_particles(PhysicButtonsPanel, Panel): bl_label = "Domain Particles" bl_options = {'DEFAULT_CLOSED'} diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py index 61d8d2e3825..771a778380d 100644 --- a/release/scripts/startup/bl_ui/properties_physics_smoke.py +++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from bl_ui.properties_physics_common import ( @@ -38,7 +39,7 @@ class PhysicButtonsPanel(): return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.smoke) -class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel): bl_label = "Smoke" def draw(self, context): @@ -103,7 +104,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel): sub.prop(flow, "temperature") -class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, Panel): bl_label = "Smoke Groups" bl_options = {'DEFAULT_CLOSED'} @@ -131,7 +132,7 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, bpy.types.Panel): col.prop(group, "collision_group", text="") -class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel): bl_label = "Smoke High Resolution" bl_options = {'DEFAULT_CLOSED'} @@ -168,7 +169,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, bpy.types.Panel): layout.prop(md, "show_high_resolution") -class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, Panel): bl_label = "Smoke Cache" bl_options = {'DEFAULT_CLOSED'} @@ -189,7 +190,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, bpy.types.Panel): point_cache_ui(self, context, cache, (cache.is_baked is False), 'SMOKE') -class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, Panel): bl_label = "Smoke Field Weights" bl_options = {'DEFAULT_CLOSED'} diff --git a/release/scripts/startup/bl_ui/properties_physics_softbody.py b/release/scripts/startup/bl_ui/properties_physics_softbody.py index 61115a0590e..0b55ccf9516 100644 --- a/release/scripts/startup/bl_ui/properties_physics_softbody.py +++ b/release/scripts/startup/bl_ui/properties_physics_softbody.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from bl_ui.properties_physics_common import ( @@ -44,7 +45,7 @@ class PhysicButtonsPanel(): return (ob and (ob.type == 'MESH' or ob.type == 'LATTICE'or ob.type == 'CURVE')) and (not rd.use_game_engine) and (context.soft_body) -class PHYSICS_PT_softbody(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel): bl_label = "Soft Body" def draw(self, context): @@ -71,7 +72,7 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, bpy.types.Panel): col.prop(softbody, "speed") -class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel): bl_label = "Soft Body Cache" bl_options = {'DEFAULT_CLOSED'} @@ -84,7 +85,7 @@ class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, bpy.types.Panel): point_cache_ui(self, context, md.point_cache, softbody_panel_enabled(md), 'SOFTBODY') -class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel): bl_label = "Soft Body Goal" bl_options = {'DEFAULT_CLOSED'} @@ -127,7 +128,7 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, bpy.types.Panel): layout.prop_search(softbody, "vertex_group_goal", ob, "vertex_groups", text="Vertex Group") -class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel): bl_label = "Soft Body Edges" bl_options = {'DEFAULT_CLOSED'} @@ -180,7 +181,7 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, bpy.types.Panel): col.prop(softbody, "use_face_collision", text="Face") -class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel): bl_label = "Soft Body Self Collision" bl_options = {'DEFAULT_CLOSED'} @@ -212,7 +213,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, bpy.types.Panel): col.prop(softbody, "ball_damp", text="Dampening") -class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel): bl_label = "Soft Body Solver" bl_options = {'DEFAULT_CLOSED'} @@ -248,7 +249,7 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, bpy.types.Panel): layout.prop(softbody, "use_estimate_matrix") -class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, bpy.types.Panel): +class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, Panel): bl_label = "Soft Body Field Weights" bl_options = {'DEFAULT_CLOSED'} diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index 6d36db29a6c..fb14372ebea 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -18,27 +18,28 @@ # import bpy +from bpy.types import Menu, Panel -class RENDER_MT_presets(bpy.types.Menu): +class RENDER_MT_presets(Menu): bl_label = "Render Presets" preset_subdir = "render" preset_operator = "script.execute_preset" - draw = bpy.types.Menu.draw_preset + draw = Menu.draw_preset -class RENDER_MT_ffmpeg_presets(bpy.types.Menu): +class RENDER_MT_ffmpeg_presets(Menu): bl_label = "FFMPEG Presets" preset_subdir = "ffmpeg" preset_operator = "script.python_file_run" - draw = bpy.types.Menu.draw_preset + draw = Menu.draw_preset -class RENDER_MT_framerate_presets(bpy.types.Menu): +class RENDER_MT_framerate_presets(Menu): bl_label = "Frame Rate Presets" preset_subdir = "framerate" preset_operator = "script.execute_preset" - draw = bpy.types.Menu.draw_preset + draw = Menu.draw_preset class RenderButtonsPanel(): @@ -53,7 +54,7 @@ class RenderButtonsPanel(): return (context.scene and rd.use_game_engine is False) and (rd.engine in cls.COMPAT_ENGINES) -class RENDER_PT_render(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_render(RenderButtonsPanel, Panel): bl_label = "Render" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -69,7 +70,7 @@ class RENDER_PT_render(RenderButtonsPanel, bpy.types.Panel): layout.prop(rd, "display_mode", text="Display") -class RENDER_PT_layers(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_layers(RenderButtonsPanel, Panel): bl_label = "Layers" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -173,7 +174,7 @@ class RENDER_PT_layers(RenderButtonsPanel, bpy.types.Panel): row.prop(rl, "exclude_refraction", text="") -class RENDER_PT_dimensions(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_dimensions(RenderButtonsPanel, Panel): bl_label = "Dimensions" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -240,7 +241,7 @@ class RENDER_PT_dimensions(RenderButtonsPanel, bpy.types.Panel): subrow.prop(rd, "frame_map_new", text="New") -class RENDER_PT_antialiasing(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_antialiasing(RenderButtonsPanel, Panel): bl_label = "Anti-Aliasing" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -268,7 +269,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel, bpy.types.Panel): col.prop(rd, "filter_size", text="Size") -class RENDER_PT_motion_blur(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_motion_blur(RenderButtonsPanel, Panel): bl_label = "Sampled Motion Blur" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -294,7 +295,7 @@ class RENDER_PT_motion_blur(RenderButtonsPanel, bpy.types.Panel): row.prop(rd, "motion_blur_shutter") -class RENDER_PT_shading(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_shading(RenderButtonsPanel, Panel): bl_label = "Shading" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -318,7 +319,7 @@ class RENDER_PT_shading(RenderButtonsPanel, bpy.types.Panel): col.prop(rd, "alpha_mode", text="Alpha") -class RENDER_PT_performance(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_performance(RenderButtonsPanel, Panel): bl_label = "Performance" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -361,7 +362,7 @@ class RENDER_PT_performance(RenderButtonsPanel, bpy.types.Panel): sub.prop(rd, "use_local_coords", text="Local Coordinates") -class RENDER_PT_post_processing(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_post_processing(RenderButtonsPanel, Panel): bl_label = "Post Processing" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -398,7 +399,7 @@ class RENDER_PT_post_processing(RenderButtonsPanel, bpy.types.Panel): sub.prop(rd, "edge_color", text="") -class RENDER_PT_stamp(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_stamp(RenderButtonsPanel, Panel): bl_label = "Stamp" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -443,7 +444,7 @@ class RENDER_PT_stamp(RenderButtonsPanel, bpy.types.Panel): sub.prop(rd, "stamp_note_text", text="") -class RENDER_PT_output(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_output(RenderButtonsPanel, Panel): bl_label = "Output" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -543,7 +544,7 @@ class RENDER_PT_output(RenderButtonsPanel, bpy.types.Panel): col.prop(rd, "quicktime_audio_resampling_hq") -class RENDER_PT_encoding(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_encoding(RenderButtonsPanel, Panel): bl_label = "Encoding" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -600,7 +601,7 @@ class RENDER_PT_encoding(RenderButtonsPanel, bpy.types.Panel): split.prop(rd, "ffmpeg_audio_volume", slider=True) -class RENDER_PT_bake(RenderButtonsPanel, bpy.types.Panel): +class RENDER_PT_bake(RenderButtonsPanel, Panel): bl_label = "Bake" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py index 7725f661693..6e96e1228e7 100644 --- a/release/scripts/startup/bl_ui/properties_scene.py +++ b/release/scripts/startup/bl_ui/properties_scene.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Operator, Panel from rna_prop_ui import PropertyPanel @@ -31,7 +32,7 @@ class SceneButtonsPanel(): return context.scene -class SCENE_PT_scene(SceneButtonsPanel, bpy.types.Panel): +class SCENE_PT_scene(SceneButtonsPanel, Panel): bl_label = "Scene" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -43,7 +44,7 @@ class SCENE_PT_scene(SceneButtonsPanel, bpy.types.Panel): layout.prop(scene, "background_set", text="Background") -class SCENE_PT_unit(SceneButtonsPanel, bpy.types.Panel): +class SCENE_PT_unit(SceneButtonsPanel, Panel): bl_label = "Units" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -61,7 +62,7 @@ class SCENE_PT_unit(SceneButtonsPanel, bpy.types.Panel): row.prop(unit, "use_separate") -class SCENE_PT_keying_sets(SceneButtonsPanel, bpy.types.Panel): +class SCENE_PT_keying_sets(SceneButtonsPanel, Panel): bl_label = "Keying Sets" def draw(self, context): @@ -94,7 +95,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, bpy.types.Panel): col.prop(ks, "bl_options") -class SCENE_PT_keying_set_paths(SceneButtonsPanel, bpy.types.Panel): +class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel): bl_label = "Active Keying Set" @classmethod @@ -144,7 +145,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, bpy.types.Panel): col.prop(ksp, "bl_options") -class SCENE_PT_physics(SceneButtonsPanel, bpy.types.Panel): +class SCENE_PT_physics(SceneButtonsPanel, Panel): bl_label = "Gravity" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -161,7 +162,7 @@ class SCENE_PT_physics(SceneButtonsPanel, bpy.types.Panel): layout.prop(scene, "gravity", text="") -class SCENE_PT_simplify(SceneButtonsPanel, bpy.types.Panel): +class SCENE_PT_simplify(SceneButtonsPanel, Panel): bl_label = "Simplify" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -190,7 +191,7 @@ class SCENE_PT_simplify(SceneButtonsPanel, bpy.types.Panel): col.prop(rd, "simplify_ao_sss", text="AO and SSS") -class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel): +class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "scene" _property_type = bpy.types.Scene @@ -198,7 +199,7 @@ class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel): # XXX, move operator to op/ dir -class ANIM_OT_keying_set_export(bpy.types.Operator): +class ANIM_OT_keying_set_export(Operator): "Export Keying Set to a python script." bl_idname = "anim.keying_set_export" bl_label = "Export Keying Set..." diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py index e216f019297..fe741b78daa 100644 --- a/release/scripts/startup/bl_ui/properties_texture.py +++ b/release/scripts/startup/bl_ui/properties_texture.py @@ -18,10 +18,11 @@ # import bpy +from bpy.types import Menu, Panel from rna_prop_ui import PropertyPanel -class TEXTURE_MT_specials(bpy.types.Menu): +class TEXTURE_MT_specials(Menu): bl_label = "Texture Specials" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -32,7 +33,7 @@ class TEXTURE_MT_specials(bpy.types.Menu): layout.operator("texture.slot_paste", icon='PASTEDOWN') -class TEXTURE_MT_envmap_specials(bpy.types.Menu): +class TEXTURE_MT_envmap_specials(Menu): bl_label = "Environment Map Specials" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -80,7 +81,7 @@ class TextureButtonsPanel(): return tex and (tex.type != 'NONE' or tex.use_nodes) and (context.scene.render.engine in cls.COMPAT_ENGINES) -class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel): +class TEXTURE_PT_context_texture(TextureButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -150,7 +151,7 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel): split.prop(tex, "type", text="") -class TEXTURE_PT_preview(TextureButtonsPanel, bpy.types.Panel): +class TEXTURE_PT_preview(TextureButtonsPanel, Panel): bl_label = "Preview" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -167,7 +168,7 @@ class TEXTURE_PT_preview(TextureButtonsPanel, bpy.types.Panel): layout.template_preview(tex, slot=slot) -class TEXTURE_PT_colors(TextureButtonsPanel, bpy.types.Panel): +class TEXTURE_PT_colors(TextureButtonsPanel, Panel): bl_label = "Colors" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -223,7 +224,7 @@ class TextureTypePanel(TextureButtonsPanel): return tex and ((tex.type == cls.tex_type and not tex.use_nodes) and (engine in cls.COMPAT_ENGINES)) -class TEXTURE_PT_clouds(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_clouds(TextureTypePanel, Panel): bl_label = "Clouds" tex_type = 'CLOUDS' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -247,7 +248,7 @@ class TEXTURE_PT_clouds(TextureTypePanel, bpy.types.Panel): split.prop(tex, "nabla", text="Nabla") -class TEXTURE_PT_wood(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_wood(TextureTypePanel, Panel): bl_label = "Wood" tex_type = 'WOOD' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -276,7 +277,7 @@ class TEXTURE_PT_wood(TextureTypePanel, bpy.types.Panel): split.prop(tex, "nabla") -class TEXTURE_PT_marble(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_marble(TextureTypePanel, Panel): bl_label = "Marble" tex_type = 'MARBLE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -303,7 +304,7 @@ class TEXTURE_PT_marble(TextureTypePanel, bpy.types.Panel): col.prop(tex, "nabla") -class TEXTURE_PT_magic(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_magic(TextureTypePanel, Panel): bl_label = "Magic" tex_type = 'MAGIC' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -318,7 +319,7 @@ class TEXTURE_PT_magic(TextureTypePanel, bpy.types.Panel): row.prop(tex, "turbulence") -class TEXTURE_PT_blend(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_blend(TextureTypePanel, Panel): bl_label = "Blend" tex_type = 'BLEND' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -336,7 +337,7 @@ class TEXTURE_PT_blend(TextureTypePanel, bpy.types.Panel): sub.prop(tex, "use_flip_axis", expand=True) -class TEXTURE_PT_stucci(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_stucci(TextureTypePanel, Panel): bl_label = "Stucci" tex_type = 'STUCCI' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -356,7 +357,7 @@ class TEXTURE_PT_stucci(TextureTypePanel, bpy.types.Panel): row.prop(tex, "turbulence") -class TEXTURE_PT_image(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_image(TextureTypePanel, Panel): bl_label = "Image" tex_type = 'IMAGE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -382,7 +383,7 @@ def texture_filter_common(tex, layout): layout.prop(tex, "use_filter_size_min") -class TEXTURE_PT_image_sampling(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_image_sampling(TextureTypePanel, Panel): bl_label = "Image Sampling" bl_options = {'DEFAULT_CLOSED'} tex_type = 'IMAGE' @@ -424,7 +425,7 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, bpy.types.Panel): texture_filter_common(tex, col) -class TEXTURE_PT_image_mapping(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_image_mapping(TextureTypePanel, Panel): bl_label = "Image Mapping" bl_options = {'DEFAULT_CLOSED'} tex_type = 'IMAGE' @@ -480,7 +481,7 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, bpy.types.Panel): col.prop(tex, "crop_max_y", text="Y") -class TEXTURE_PT_envmap(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_envmap(TextureTypePanel, Panel): bl_label = "Environment Map" tex_type = 'ENVIRONMENT_MAP' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -518,7 +519,7 @@ class TEXTURE_PT_envmap(TextureTypePanel, bpy.types.Panel): col.prop(env, "clip_end", text="End") -class TEXTURE_PT_envmap_sampling(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_envmap_sampling(TextureTypePanel, Panel): bl_label = "Environment Map Sampling" bl_options = {'DEFAULT_CLOSED'} tex_type = 'ENVIRONMENT_MAP' @@ -532,7 +533,7 @@ class TEXTURE_PT_envmap_sampling(TextureTypePanel, bpy.types.Panel): texture_filter_common(tex, layout) -class TEXTURE_PT_musgrave(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_musgrave(TextureTypePanel, Panel): bl_label = "Musgrave" tex_type = 'MUSGRAVE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -569,7 +570,7 @@ class TEXTURE_PT_musgrave(TextureTypePanel, bpy.types.Panel): row.prop(tex, "nabla") -class TEXTURE_PT_voronoi(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_voronoi(TextureTypePanel, Panel): bl_label = "Voronoi" tex_type = 'VORONOI' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -605,7 +606,7 @@ class TEXTURE_PT_voronoi(TextureTypePanel, bpy.types.Panel): row.prop(tex, "nabla") -class TEXTURE_PT_distortednoise(TextureTypePanel, bpy.types.Panel): +class TEXTURE_PT_distortednoise(TextureTypePanel, Panel): bl_label = "Distorted Noise" tex_type = 'DISTORTED_NOISE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -627,7 +628,7 @@ class TEXTURE_PT_distortednoise(TextureTypePanel, bpy.types.Panel): split.prop(tex, "nabla") -class TEXTURE_PT_voxeldata(TextureButtonsPanel, bpy.types.Panel): +class TEXTURE_PT_voxeldata(TextureButtonsPanel, Panel): bl_label = "Voxel Data" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -667,7 +668,7 @@ class TEXTURE_PT_voxeldata(TextureButtonsPanel, bpy.types.Panel): layout.prop(vd, "intensity") -class TEXTURE_PT_pointdensity(TextureButtonsPanel, bpy.types.Panel): +class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel): bl_label = "Point Density" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -733,7 +734,7 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, bpy.types.Panel): col.template_curve_mapping(pd, "falloff_curve", brush=False) -class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, bpy.types.Panel): +class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, Panel): bl_label = "Turbulence" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -770,7 +771,7 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, bpy.types.Panel): col.prop(pd, "turbulence_strength") -class TEXTURE_PT_mapping(TextureSlotPanel, bpy.types.Panel): +class TEXTURE_PT_mapping(TextureSlotPanel, Panel): bl_label = "Mapping" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -858,7 +859,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, bpy.types.Panel): row.column().prop(tex, "scale") -class TEXTURE_PT_influence(TextureSlotPanel, bpy.types.Panel): +class TEXTURE_PT_influence(TextureSlotPanel, Panel): bl_label = "Influence" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -1034,7 +1035,7 @@ class TEXTURE_PT_influence(TextureSlotPanel, bpy.types.Panel): sub.prop(tex, "bump_objectspace", text="Space") -class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, bpy.types.Panel): +class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "texture" _property_type = bpy.types.Texture diff --git a/release/scripts/startup/bl_ui/properties_world.py b/release/scripts/startup/bl_ui/properties_world.py index c577af01374..71ee03296a0 100644 --- a/release/scripts/startup/bl_ui/properties_world.py +++ b/release/scripts/startup/bl_ui/properties_world.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Panel from rna_prop_ui import PropertyPanel @@ -32,7 +33,7 @@ class WorldButtonsPanel(): return (context.world and context.scene.render.engine in cls.COMPAT_ENGINES) -class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_context_world(WorldButtonsPanel, Panel): bl_label = "" bl_options = {'HIDE_HEADER'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -61,7 +62,7 @@ class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel): split.label(text=str(texture_count), icon='TEXTURE') -class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_preview(WorldButtonsPanel, Panel): bl_label = "Preview" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -74,7 +75,7 @@ class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel): self.layout.template_preview(context.world) -class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_world(WorldButtonsPanel, Panel): bl_label = "World" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -99,7 +100,7 @@ class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel): row.prop(world, "color_range") -class WORLD_PT_ambient_occlusion(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_ambient_occlusion(WorldButtonsPanel, Panel): bl_label = "Ambient Occlusion" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -118,7 +119,7 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel, bpy.types.Panel): split.prop(light, "ao_blend_type", text="") -class WORLD_PT_environment_lighting(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_environment_lighting(WorldButtonsPanel, Panel): bl_label = "Environment Lighting" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -137,7 +138,7 @@ class WORLD_PT_environment_lighting(WorldButtonsPanel, bpy.types.Panel): split.prop(light, "environment_color", text="") -class WORLD_PT_indirect_lighting(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_indirect_lighting(WorldButtonsPanel, Panel): bl_label = "Indirect Lighting" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -159,7 +160,7 @@ class WORLD_PT_indirect_lighting(WorldButtonsPanel, bpy.types.Panel): layout.label(text="Only works with Approximate gather method") -class WORLD_PT_gather(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_gather(WorldButtonsPanel, Panel): bl_label = "Gather" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -207,7 +208,7 @@ class WORLD_PT_gather(WorldButtonsPanel, bpy.types.Panel): col.prop(light, "correction") -class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_mist(WorldButtonsPanel, Panel): bl_label = "Mist" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -236,7 +237,7 @@ class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel): layout.prop(world.mist_settings, "falloff") -class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel): +class WORLD_PT_stars(WorldButtonsPanel, Panel): bl_label = "Stars" bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -263,7 +264,7 @@ class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel): col.prop(world.star_settings, "average_separation", text="Separation") -class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, bpy.types.Panel): +class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "world" _property_type = bpy.types.World diff --git a/release/scripts/startup/bl_ui/space_console.py b/release/scripts/startup/bl_ui/space_console.py index da6c102100b..d457a66def8 100644 --- a/release/scripts/startup/bl_ui/space_console.py +++ b/release/scripts/startup/bl_ui/space_console.py @@ -18,32 +18,30 @@ # import bpy +from bpy.types import Header, Menu, Operator from bpy.props import StringProperty -class CONSOLE_HT_header(bpy.types.Header): +class CONSOLE_HT_header(Header): bl_space_type = 'CONSOLE' def draw(self, context): - layout = self.layout + layout = self.layout.row(align=True) - row = layout.row(align=True) - row.template_header() + layout.template_header() if context.area.show_menus: - sub = row.row(align=True) - sub.menu("CONSOLE_MT_console") + layout.menu("CONSOLE_MT_console") - row = layout.row(align=True) - row.operator("console.autocomplete", text="Autocomplete") + layout.operator("console.autocomplete", text="Autocomplete") -class CONSOLE_MT_console(bpy.types.Menu): +class CONSOLE_MT_console(Menu): bl_label = "Console" def draw(self, context): layout = self.layout - layout.column() + layout.operator("console.clear") layout.operator("console.copy") layout.operator("console.paste") @@ -55,7 +53,7 @@ class CONSOLE_MT_console(bpy.types.Menu): layout.operator("screen.screen_full_area") -class CONSOLE_MT_language(bpy.types.Menu): +class CONSOLE_MT_language(Menu): bl_label = "Languages..." def draw(self, context): @@ -82,7 +80,7 @@ def add_scrollback(text, text_type): type=text_type) -class ConsoleExec(bpy.types.Operator): +class ConsoleExec(Operator): '''Execute the current console line as a python expression''' bl_idname = "console.execute" bl_label = "Console Execute" @@ -100,7 +98,7 @@ class ConsoleExec(bpy.types.Operator): return {'FINISHED'} -class ConsoleAutocomplete(bpy.types.Operator): +class ConsoleAutocomplete(Operator): '''Evaluate the namespace up until the cursor and give a list of options or complete the name if there is only one''' bl_idname = "console.autocomplete" bl_label = "Console Autocomplete" @@ -117,7 +115,7 @@ class ConsoleAutocomplete(bpy.types.Operator): return {'FINISHED'} -class ConsoleBanner(bpy.types.Operator): +class ConsoleBanner(Operator): '''Print a message whem the terminal initializes''' bl_idname = "console.banner" bl_label = "Console Banner" @@ -139,7 +137,7 @@ class ConsoleBanner(bpy.types.Operator): return {'FINISHED'} -class ConsoleLanguage(bpy.types.Operator): +class ConsoleLanguage(Operator): '''Set the current language for this console''' bl_idname = "console.language" bl_label = "Console Language" diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py index 930a2029d32..dfbd7b3ae14 100644 --- a/release/scripts/startup/bl_ui/space_dopesheet.py +++ b/release/scripts/startup/bl_ui/space_dopesheet.py @@ -19,6 +19,7 @@ # import bpy +from bpy.types import Header, Menu ####################################### @@ -84,7 +85,7 @@ def dopesheet_filter(layout, context, genericFiltersOnly=False): ####################################### # DopeSheet Editor - General/Standard UI -class DOPESHEET_HT_header(bpy.types.Header): +class DOPESHEET_HT_header(Header): bl_space_type = 'DOPESHEET_EDITOR' def draw(self, context): @@ -96,21 +97,19 @@ class DOPESHEET_HT_header(bpy.types.Header): row.template_header() if context.area.show_menus: - sub = row.row(align=True) - - sub.menu("DOPESHEET_MT_view") - sub.menu("DOPESHEET_MT_select") - sub.menu("DOPESHEET_MT_marker") + row.menu("DOPESHEET_MT_view") + row.menu("DOPESHEET_MT_select") + row.menu("DOPESHEET_MT_marker") if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action != None): - sub.menu("DOPESHEET_MT_channel") + row.menu("DOPESHEET_MT_channel") elif st.mode == 'GPENCIL': - sub.menu("DOPESHEET_MT_gpencil_channel") + row.menu("DOPESHEET_MT_gpencil_channel") if st.mode != 'GPENCIL': - sub.menu("DOPESHEET_MT_key") + row.menu("DOPESHEET_MT_key") else: - sub.menu("DOPESHEET_MT_gpencil_frame") + row.menu("DOPESHEET_MT_gpencil_frame") layout.prop(st, "mode", text="") layout.prop(st.dopesheet, "show_summary", text="Summary") @@ -134,7 +133,7 @@ class DOPESHEET_HT_header(bpy.types.Header): row.operator("action.paste", text="", icon='PASTEDOWN') -class DOPESHEET_MT_view(bpy.types.Menu): +class DOPESHEET_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -142,8 +141,6 @@ class DOPESHEET_MT_view(bpy.types.Menu): st = context.space_data - layout.column() - layout.prop(st, "use_realtime_update") layout.prop(st, "show_frame_indicator") layout.prop(st, "show_sliders") @@ -170,13 +167,12 @@ class DOPESHEET_MT_view(bpy.types.Menu): layout.operator("screen.screen_full_area") -class DOPESHEET_MT_select(bpy.types.Menu): +class DOPESHEET_MT_select(Menu): bl_label = "Select" def draw(self, context): layout = self.layout - layout.column() # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None layout.operator("action.select_all_toggle") layout.operator("action.select_all_toggle", text="Invert Selection").invert = True @@ -206,7 +202,7 @@ class DOPESHEET_MT_select(bpy.types.Menu): layout.operator("action.select_linked") -class DOPESHEET_MT_marker(bpy.types.Menu): +class DOPESHEET_MT_marker(Menu): bl_label = "Marker" def draw(self, context): @@ -216,7 +212,6 @@ class DOPESHEET_MT_marker(bpy.types.Menu): #layout.operator_context = 'EXEC_REGION_WIN' - layout.column() layout.operator("marker.add", "Add Marker") layout.operator("marker.duplicate", text="Duplicate Marker") layout.operator("marker.delete", text="Delete Marker") @@ -237,7 +232,7 @@ class DOPESHEET_MT_marker(bpy.types.Menu): ####################################### # Keyframe Editing -class DOPESHEET_MT_channel(bpy.types.Menu): +class DOPESHEET_MT_channel(Menu): bl_label = "Channel" def draw(self, context): @@ -245,7 +240,6 @@ class DOPESHEET_MT_channel(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_CHANNELS' - layout.column() layout.operator("anim.channels_delete") layout.separator() @@ -268,13 +262,12 @@ class DOPESHEET_MT_channel(bpy.types.Menu): layout.operator("anim.channels_fcurves_enable") -class DOPESHEET_MT_key(bpy.types.Menu): +class DOPESHEET_MT_key(Menu): bl_label = "Key" def draw(self, context): layout = self.layout - layout.column() layout.menu("DOPESHEET_MT_key_transform", text="Transform") layout.operator_menu_enum("action.snap", "type", text="Snap") @@ -301,13 +294,12 @@ class DOPESHEET_MT_key(bpy.types.Menu): layout.operator("action.paste") -class DOPESHEET_MT_key_transform(bpy.types.Menu): +class DOPESHEET_MT_key_transform(Menu): bl_label = "Transform" def draw(self, context): layout = self.layout - layout.column() layout.operator("transform.transform", text="Grab/Move").mode = 'TIME_TRANSLATE' layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND' layout.operator("transform.transform", text="Slide").mode = 'TIME_SLIDE' @@ -317,7 +309,7 @@ class DOPESHEET_MT_key_transform(bpy.types.Menu): ####################################### # Grease Pencil Editing -class DOPESHEET_MT_gpencil_channel(bpy.types.Menu): +class DOPESHEET_MT_gpencil_channel(Menu): bl_label = "Channel" def draw(self, context): @@ -325,7 +317,6 @@ class DOPESHEET_MT_gpencil_channel(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_CHANNELS' - layout.column() layout.operator("anim.channels_delete") layout.separator() @@ -345,13 +336,12 @@ class DOPESHEET_MT_gpencil_channel(bpy.types.Menu): #layout.operator_menu_enum("anim.channels_move", "direction", text="Move...") -class DOPESHEET_MT_gpencil_frame(bpy.types.Menu): +class DOPESHEET_MT_gpencil_frame(Menu): bl_label = "Frame" def draw(self, context): layout = self.layout - layout.column() layout.menu("DOPESHEET_MT_key_transform", text="Transform") #layout.operator_menu_enum("action.snap", "type", text="Snap") diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py index 73fe1a97252..cf0d10c5844 100644 --- a/release/scripts/startup/bl_ui/space_filebrowser.py +++ b/release/scripts/startup/bl_ui/space_filebrowser.py @@ -18,9 +18,10 @@ # import bpy +from bpy.types import Header -class FILEBROWSER_HT_header(bpy.types.Header): +class FILEBROWSER_HT_header(Header): bl_space_type = 'FILE_BROWSER' def draw(self, context): diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py index bfc1a0e3a23..c379ea95ea2 100644 --- a/release/scripts/startup/bl_ui/space_graph.py +++ b/release/scripts/startup/bl_ui/space_graph.py @@ -19,9 +19,10 @@ # import bpy +from bpy.types import Header, Menu -class GRAPH_HT_header(bpy.types.Header): +class GRAPH_HT_header(Header): bl_space_type = 'GRAPH_EDITOR' def draw(self, context): @@ -35,13 +36,11 @@ class GRAPH_HT_header(bpy.types.Header): row.template_header() if context.area.show_menus: - sub = row.row(align=True) - - sub.menu("GRAPH_MT_view") - sub.menu("GRAPH_MT_select") - sub.menu("GRAPH_MT_marker") - sub.menu("GRAPH_MT_channel") - sub.menu("GRAPH_MT_key") + row.menu("GRAPH_MT_view") + row.menu("GRAPH_MT_select") + row.menu("GRAPH_MT_marker") + row.menu("GRAPH_MT_channel") + row.menu("GRAPH_MT_key") layout.prop(st, "mode", text="") @@ -61,7 +60,7 @@ class GRAPH_HT_header(bpy.types.Header): row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED') -class GRAPH_MT_view(bpy.types.Menu): +class GRAPH_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -69,8 +68,6 @@ class GRAPH_MT_view(bpy.types.Menu): st = context.space_data - layout.column() - layout.operator("graph.properties", icon='MENU_PANEL') layout.separator() @@ -107,13 +104,12 @@ class GRAPH_MT_view(bpy.types.Menu): layout.operator("screen.screen_full_area") -class GRAPH_MT_select(bpy.types.Menu): +class GRAPH_MT_select(Menu): bl_label = "Select" def draw(self, context): layout = self.layout - layout.column() # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None layout.operator("graph.select_all_toggle") layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True @@ -142,7 +138,7 @@ class GRAPH_MT_select(bpy.types.Menu): layout.operator("graph.select_linked") -class GRAPH_MT_marker(bpy.types.Menu): +class GRAPH_MT_marker(Menu): bl_label = "Marker" def draw(self, context): @@ -150,7 +146,6 @@ class GRAPH_MT_marker(bpy.types.Menu): #layout.operator_context = 'EXEC_REGION_WIN' - layout.column() layout.operator("marker.add", "Add Marker") layout.operator("marker.duplicate", text="Duplicate Marker") layout.operator("marker.delete", text="Delete Marker") @@ -163,7 +158,7 @@ class GRAPH_MT_marker(bpy.types.Menu): # TODO: pose markers for action edit mode only? -class GRAPH_MT_channel(bpy.types.Menu): +class GRAPH_MT_channel(Menu): bl_label = "Channel" def draw(self, context): @@ -171,7 +166,6 @@ class GRAPH_MT_channel(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_CHANNELS' - layout.column() layout.operator("anim.channels_delete") layout.separator() @@ -195,13 +189,12 @@ class GRAPH_MT_channel(bpy.types.Menu): layout.operator("anim.channels_fcurves_enable") -class GRAPH_MT_key(bpy.types.Menu): +class GRAPH_MT_key(Menu): bl_label = "Key" def draw(self, context): layout = self.layout - layout.column() layout.menu("GRAPH_MT_key_transform", text="Transform") layout.operator_menu_enum("graph.snap", "type", text="Snap") @@ -234,13 +227,12 @@ class GRAPH_MT_key(bpy.types.Menu): layout.operator("graph.euler_filter", text="Discontinuity (Euler) Filter") -class GRAPH_MT_key_transform(bpy.types.Menu): +class GRAPH_MT_key_transform(Menu): bl_label = "Transform" def draw(self, context): layout = self.layout - layout.column() layout.operator("transform.translate", text="Grab/Move") layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND' layout.operator("transform.rotate", text="Rotate") diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index fa5579ea2e0..5d72482ce9c 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Header, Menu, Panel class BrushButtonsPanel(): @@ -31,7 +32,7 @@ class BrushButtonsPanel(): return sima.show_paint and toolsettings.brush -class IMAGE_MT_view(bpy.types.Menu): +class IMAGE_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -79,7 +80,7 @@ class IMAGE_MT_view(bpy.types.Menu): layout.operator("screen.screen_full_area") -class IMAGE_MT_select(bpy.types.Menu): +class IMAGE_MT_select(Menu): bl_label = "Select" def draw(self, context): @@ -100,7 +101,7 @@ class IMAGE_MT_select(bpy.types.Menu): layout.operator("uv.select_linked") -class IMAGE_MT_image(bpy.types.Menu): +class IMAGE_MT_image(Menu): bl_label = "Image" def draw(self, context): @@ -151,7 +152,7 @@ class IMAGE_MT_image(bpy.types.Menu): layout.prop(sima, "use_image_paint") -class IMAGE_MT_image_invert(bpy.types.Menu): +class IMAGE_MT_image_invert(Menu): bl_label = "Invert" def draw(self, context): @@ -177,7 +178,7 @@ class IMAGE_MT_image_invert(bpy.types.Menu): op.invert_a = True -class IMAGE_MT_uvs_showhide(bpy.types.Menu): +class IMAGE_MT_uvs_showhide(Menu): bl_label = "Show/Hide Faces" def draw(self, context): @@ -188,7 +189,7 @@ class IMAGE_MT_uvs_showhide(bpy.types.Menu): layout.operator("uv.hide", text="Hide Unselected").unselected = True -class IMAGE_MT_uvs_transform(bpy.types.Menu): +class IMAGE_MT_uvs_transform(Menu): bl_label = "Transform" def draw(self, context): @@ -203,7 +204,7 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu): layout.operator("transform.shear") -class IMAGE_MT_uvs_snap(bpy.types.Menu): +class IMAGE_MT_uvs_snap(Menu): bl_label = "Snap" def draw(self, context): @@ -220,7 +221,7 @@ class IMAGE_MT_uvs_snap(bpy.types.Menu): layout.operator("uv.snap_cursor", text="Cursor to Selected").target = 'SELECTED' -class IMAGE_MT_uvs_mirror(bpy.types.Menu): +class IMAGE_MT_uvs_mirror(Menu): bl_label = "Mirror" def draw(self, context): @@ -231,7 +232,7 @@ class IMAGE_MT_uvs_mirror(bpy.types.Menu): layout.operator("transform.mirror", text="Y Axis").constraint_axis[1] = True -class IMAGE_MT_uvs_weldalign(bpy.types.Menu): +class IMAGE_MT_uvs_weldalign(Menu): bl_label = "Weld/Align" def draw(self, context): @@ -241,7 +242,7 @@ class IMAGE_MT_uvs_weldalign(bpy.types.Menu): layout.operator_enum("uv.align", "axis") # W, 2/3/4 -class IMAGE_MT_uvs(bpy.types.Menu): +class IMAGE_MT_uvs(Menu): bl_label = "UVs" def draw(self, context): @@ -286,7 +287,7 @@ class IMAGE_MT_uvs(bpy.types.Menu): layout.menu("IMAGE_MT_uvs_showhide") -class IMAGE_MT_uvs_select_mode(bpy.types.Menu): +class IMAGE_MT_uvs_select_mode(Menu): bl_label = "UV Select Mode" def draw(self, context): @@ -328,7 +329,7 @@ class IMAGE_MT_uvs_select_mode(bpy.types.Menu): prop.data_path = "tool_settings.uv_select_mode" -class IMAGE_HT_header(bpy.types.Header): +class IMAGE_HT_header(Header): bl_space_type = 'IMAGE_EDITOR' def draw(self, context): @@ -412,7 +413,7 @@ class IMAGE_HT_header(bpy.types.Header): layout.prop(sima, "use_realtime_update", text="", icon_only=True, icon='LOCKED') -class IMAGE_PT_image_properties(bpy.types.Panel): +class IMAGE_PT_image_properties(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' bl_label = "Image" @@ -431,7 +432,7 @@ class IMAGE_PT_image_properties(bpy.types.Panel): layout.template_image(sima, "image", iuser) -class IMAGE_PT_game_properties(bpy.types.Panel): +class IMAGE_PT_game_properties(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' bl_label = "Game Properties" @@ -451,15 +452,13 @@ class IMAGE_PT_game_properties(bpy.types.Panel): split = layout.split() col = split.column() - + + col.prop(ima, "use_animation") sub = col.column(align=True) - sub.prop(ima, "use_animation") - - subsub = sub.column() - subsub.active = ima.use_animation - subsub.prop(ima, "frame_start", text="Start") - subsub.prop(ima, "frame_end", text="End") - subsub.prop(ima, "fps", text="Speed") + sub.active = ima.use_animation + sub.prop(ima, "frame_start", text="Start") + sub.prop(ima, "frame_end", text="End") + sub.prop(ima, "fps", text="Speed") col.prop(ima, "use_tiles") sub = col.column(align=True) @@ -475,7 +474,7 @@ class IMAGE_PT_game_properties(bpy.types.Panel): col.prop(ima, "mapping", expand=True) -class IMAGE_PT_view_histogram(bpy.types.Panel): +class IMAGE_PT_view_histogram(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' bl_label = "Histogram" @@ -494,7 +493,7 @@ class IMAGE_PT_view_histogram(bpy.types.Panel): layout.prop(sima.scopes.histogram, "mode", icon_only=True) -class IMAGE_PT_view_waveform(bpy.types.Panel): +class IMAGE_PT_view_waveform(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' bl_label = "Waveform" @@ -508,13 +507,14 @@ class IMAGE_PT_view_waveform(bpy.types.Panel): layout = self.layout sima = context.space_data + layout.template_waveform(sima, "scopes") - sub = layout.row().split(percentage=0.75) - sub.prop(sima.scopes, "waveform_alpha") - sub.prop(sima.scopes, "waveform_mode", text="", icon_only=True) + row = layout.split(percentage=0.75) + row.prop(sima.scopes, "waveform_alpha") + row.prop(sima.scopes, "waveform_mode", text="", icon_only=True) -class IMAGE_PT_view_vectorscope(bpy.types.Panel): +class IMAGE_PT_view_vectorscope(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' bl_label = "Vectorscope" @@ -532,7 +532,7 @@ class IMAGE_PT_view_vectorscope(bpy.types.Panel): layout.prop(sima.scopes, "vectorscope_alpha") -class IMAGE_PT_sample_line(bpy.types.Panel): +class IMAGE_PT_sample_line(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' bl_label = "Sample Line" @@ -544,13 +544,15 @@ class IMAGE_PT_sample_line(bpy.types.Panel): def draw(self, context): layout = self.layout - layout.operator("image.sample_line") + sima = context.space_data + + layout.operator("image.sample_line") layout.template_histogram(sima, "sample_histogram") layout.prop(sima.sample_histogram, "mode") -class IMAGE_PT_scope_sample(bpy.types.Panel): +class IMAGE_PT_scope_sample(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' bl_label = "Scope Samples" @@ -562,16 +564,17 @@ class IMAGE_PT_scope_sample(bpy.types.Panel): def draw(self, context): layout = self.layout + sima = context.space_data - split = layout.split() - row = split.row() + + row = layout.row() row.prop(sima.scopes, "use_full_resolution") - row = split.row() - row.active = not sima.scopes.use_full_resolution - row.prop(sima.scopes, "accuracy") + sub = row.row() + sub.active = not sima.scopes.use_full_resolution + sub.prop(sima.scopes, "accuracy") -class IMAGE_PT_view_properties(bpy.types.Panel): +class IMAGE_PT_view_properties(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' bl_label = "Display" @@ -608,16 +611,16 @@ class IMAGE_PT_view_properties(bpy.types.Panel): if show_uvedit: col = layout.column() - col.label("Cursor Location") - row = col.row() - row.prop(uvedit, "cursor_location", text="") - - col = layout.column() + col.label("Cursor Location:") + col.row().prop(uvedit, "cursor_location", text="") + + col.separator() + col.label(text="UVs:") - row = col.row() - row.prop(uvedit, "edge_draw_type", expand=True) + col.row().prop(uvedit, "edge_draw_type", expand=True) split = layout.split() + col = split.column() col.prop(uvedit, "show_faces") col.prop(uvedit, "show_smooth_edges", text="Smooth") @@ -630,7 +633,7 @@ class IMAGE_PT_view_properties(bpy.types.Panel): sub.row().prop(uvedit, "draw_stretch_type", expand=True) -class IMAGE_PT_paint(bpy.types.Panel): +class IMAGE_PT_paint(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' bl_label = "Paint" @@ -646,9 +649,8 @@ class IMAGE_PT_paint(bpy.types.Panel): toolsettings = context.tool_settings.image_paint brush = toolsettings.brush - col = layout.split().column() - row = col.row() - col.template_ID_preview(toolsettings, "brush", new="brush.add", rows=3, cols=8) + col = layout.column() + col.template_ID_preview(toolsettings, "brush", new="brush.add", rows=2, cols=6) if brush: col = layout.column() @@ -675,7 +677,7 @@ class IMAGE_PT_paint(bpy.types.Panel): col.prop(brush, "clone_alpha", text="Alpha") -class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, bpy.types.Panel): +class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, Panel): bl_label = "Texture" bl_options = {'DEFAULT_CLOSED'} @@ -690,7 +692,7 @@ class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, bpy.types.Panel): col.prop(brush, "use_fixed_texture") -class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel): +class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, Panel): bl_label = "Tool" bl_options = {'DEFAULT_CLOSED'} @@ -699,9 +701,7 @@ class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel): settings = context.tool_settings.image_paint brush = settings.brush - col = layout.column(align=True) - - col.prop(brush, "image_tool", expand=False, text="") + layout.prop(brush, "image_tool", text="") row = layout.row(align=True) row.prop(brush, "use_paint_sculpt", text="", icon='SCULPTMODE_HLT') @@ -710,7 +710,7 @@ class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel): row.prop(brush, "use_paint_image", text="", icon='TPAINT_HLT') -class IMAGE_PT_paint_stroke(BrushButtonsPanel, bpy.types.Panel): +class IMAGE_PT_paint_stroke(BrushButtonsPanel, Panel): bl_label = "Paint Stroke" bl_options = {'DEFAULT_CLOSED'} @@ -721,9 +721,9 @@ class IMAGE_PT_paint_stroke(BrushButtonsPanel, bpy.types.Panel): brush = toolsettings.brush layout.prop(brush, "use_airbrush") - col = layout.column() - col.active = brush.use_airbrush - col.prop(brush, "rate", slider=True) + row = layout.row() + row.active = brush.use_airbrush + row.prop(brush, "rate", slider=True) layout.prop(brush, "use_space") row = layout.row(align=True) @@ -734,7 +734,7 @@ class IMAGE_PT_paint_stroke(BrushButtonsPanel, bpy.types.Panel): layout.prop(brush, "use_wrap") -class IMAGE_PT_paint_curve(BrushButtonsPanel, bpy.types.Panel): +class IMAGE_PT_paint_curve(BrushButtonsPanel, Panel): bl_label = "Paint Curve" bl_options = {'DEFAULT_CLOSED'} diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py index f66cee7f431..38c1e24f27e 100644 --- a/release/scripts/startup/bl_ui/space_info.py +++ b/release/scripts/startup/bl_ui/space_info.py @@ -18,9 +18,10 @@ # import bpy +from bpy.types import Header, Menu, Operator -class INFO_HT_header(bpy.types.Header): +class INFO_HT_header(Header): bl_space_type = 'INFO' def draw(self, context): @@ -86,19 +87,19 @@ class INFO_HT_header(bpy.types.Header): """ -class INFO_MT_report(bpy.types.Menu): +class INFO_MT_report(Menu): bl_label = "Report" def draw(self, context): layout = self.layout - layout.column() + layout.operator("console.select_all_toggle") layout.operator("console.select_border") layout.operator("console.report_delete") layout.operator("console.report_copy") -class INFO_MT_file(bpy.types.Menu): +class INFO_MT_file(Menu): bl_label = "File" def draw(self, context): @@ -152,7 +153,7 @@ class INFO_MT_file(bpy.types.Menu): layout.operator("wm.quit_blender", text="Quit", icon='QUIT') -class INFO_MT_file_import(bpy.types.Menu): +class INFO_MT_file_import(Menu): bl_idname = "INFO_MT_file_import" bl_label = "Import" @@ -161,7 +162,7 @@ class INFO_MT_file_import(bpy.types.Menu): self.layout.operator("wm.collada_import", text="COLLADA (.dae)") -class INFO_MT_file_export(bpy.types.Menu): +class INFO_MT_file_export(Menu): bl_idname = "INFO_MT_file_export" bl_label = "Export" @@ -170,7 +171,7 @@ class INFO_MT_file_export(bpy.types.Menu): self.layout.operator("wm.collada_export", text="COLLADA (.dae)") -class INFO_MT_file_external_data(bpy.types.Menu): +class INFO_MT_file_external_data(Menu): bl_label = "External Data" def draw(self, context): @@ -187,12 +188,13 @@ class INFO_MT_file_external_data(bpy.types.Menu): layout.operator("file.find_missing_files") -class INFO_MT_mesh_add(bpy.types.Menu): +class INFO_MT_mesh_add(Menu): bl_idname = "INFO_MT_mesh_add" bl_label = "Mesh" def draw(self, context): layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text="Plane") layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text="Cube") @@ -207,12 +209,13 @@ class INFO_MT_mesh_add(bpy.types.Menu): layout.operator("mesh.primitive_torus_add", text="Torus", icon='MESH_TORUS') -class INFO_MT_curve_add(bpy.types.Menu): +class INFO_MT_curve_add(Menu): bl_idname = "INFO_MT_curve_add" bl_label = "Curve" def draw(self, context): layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text="Bezier") layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text="Circle") @@ -221,7 +224,7 @@ class INFO_MT_curve_add(bpy.types.Menu): layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path") -class INFO_MT_edit_curve_add(bpy.types.Menu): +class INFO_MT_edit_curve_add(Menu): bl_idname = "INFO_MT_edit_curve_add" bl_label = "Add" @@ -237,12 +240,13 @@ class INFO_MT_edit_curve_add(bpy.types.Menu): INFO_MT_curve_add.draw(self, context) -class INFO_MT_surface_add(bpy.types.Menu): +class INFO_MT_surface_add(Menu): bl_idname = "INFO_MT_surface_add" bl_label = "Surface" def draw(self, context): layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text="NURBS Curve") layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text="NURBS Circle") @@ -252,17 +256,18 @@ class INFO_MT_surface_add(bpy.types.Menu): layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text="NURBS Torus") -class INFO_MT_armature_add(bpy.types.Menu): +class INFO_MT_armature_add(Menu): bl_idname = "INFO_MT_armature_add" bl_label = "Armature" def draw(self, context): layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA') -class INFO_MT_add(bpy.types.Menu): +class INFO_MT_add(Menu): bl_label = "Add" def draw(self, context): @@ -302,7 +307,7 @@ class INFO_MT_add(bpy.types.Menu): layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY') -class INFO_MT_game(bpy.types.Menu): +class INFO_MT_game(Menu): bl_label = "Game" def draw(self, context): @@ -323,7 +328,7 @@ class INFO_MT_game(bpy.types.Menu): layout.prop(gs, "use_auto_start") -class INFO_MT_render(bpy.types.Menu): +class INFO_MT_render(Menu): bl_label = "Render" def draw(self, context): @@ -343,7 +348,7 @@ class INFO_MT_render(bpy.types.Menu): layout.operator("render.play_rendered_anim") -class INFO_MT_help(bpy.types.Menu): +class INFO_MT_help(Menu): bl_label = "Help" def draw(self, context): @@ -352,7 +357,7 @@ class INFO_MT_help(bpy.types.Menu): layout = self.layout layout.operator("wm.url_open", text="Manual", icon='HELP').url = 'http://wiki.blender.org/index.php/Doc:Manual' - layout.operator("wm.url_open", text="Release Log", icon='URL').url = 'http://www.blender.org/development/release-logs/blender-258/' + layout.operator("wm.url_open", text="Release Log", icon='URL').url = 'http://www.blender.org/development/release-logs/blender-259/' layout.separator() @@ -379,7 +384,7 @@ class INFO_MT_help(bpy.types.Menu): # Help operators -class HELP_OT_operator_cheat_sheet(bpy.types.Operator): +class HELP_OT_operator_cheat_sheet(Operator): bl_idname = "help.operator_cheat_sheet" bl_label = "Operator Cheat Sheet" diff --git a/release/scripts/startup/bl_ui/space_logic.py b/release/scripts/startup/bl_ui/space_logic.py index 7f7aba71a46..869a91124d3 100644 --- a/release/scripts/startup/bl_ui/space_logic.py +++ b/release/scripts/startup/bl_ui/space_logic.py @@ -18,9 +18,10 @@ # import bpy +from bpy.types import Header, Menu, Panel -class LOGIC_PT_properties(bpy.types.Panel): +class LOGIC_PT_properties(Panel): bl_space_type = 'LOGIC_EDITOR' bl_region_type = 'UI' bl_label = "Properties" @@ -49,7 +50,7 @@ class LOGIC_PT_properties(bpy.types.Panel): row.operator("object.game_property_remove", text="", icon='X', emboss=False).index = i -class LOGIC_MT_logicbricks_add(bpy.types.Menu): +class LOGIC_MT_logicbricks_add(Menu): bl_label = "Add" def draw(self, context): @@ -60,30 +61,24 @@ class LOGIC_MT_logicbricks_add(bpy.types.Menu): layout.operator_menu_enum("logic.actuator_add", "type", text="Actuator") -class LOGIC_HT_header(bpy.types.Header): +class LOGIC_HT_header(Header): bl_space_type = 'LOGIC_EDITOR' def draw(self, context): - layout = self.layout + layout = self.layout.row(align=True) - row = layout.row(align=True) - row.template_header() + layout.template_header() if context.area.show_menus: - sub = row.row(align=True) - sub.menu("LOGIC_MT_view") - #sub.menu("LOGIC_MT_select") - #sub.menu("LOGIC_MT_add") + layout.menu("LOGIC_MT_view") -class LOGIC_MT_view(bpy.types.Menu): +class LOGIC_MT_view(Menu): bl_label = "View" def draw(self, context): layout = self.layout - layout.column() - layout.operator("logic.properties", icon='MENU_PANEL') if __name__ == "__main__": # only for live edit. diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py index 717adb3baa8..c69af2c9a60 100644 --- a/release/scripts/startup/bl_ui/space_nla.py +++ b/release/scripts/startup/bl_ui/space_nla.py @@ -19,9 +19,10 @@ # import bpy +from bpy.types import Header, Menu -class NLA_HT_header(bpy.types.Header): +class NLA_HT_header(Header): bl_space_type = 'NLA_EDITOR' def draw(self, context): @@ -35,20 +36,18 @@ class NLA_HT_header(bpy.types.Header): row.template_header() if context.area.show_menus: - sub = row.row(align=True) - - sub.menu("NLA_MT_view") - sub.menu("NLA_MT_select") - sub.menu("NLA_MT_marker") - sub.menu("NLA_MT_edit") - sub.menu("NLA_MT_add") + row.menu("NLA_MT_view") + row.menu("NLA_MT_select") + row.menu("NLA_MT_marker") + row.menu("NLA_MT_edit") + row.menu("NLA_MT_add") dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="") -class NLA_MT_view(bpy.types.Menu): +class NLA_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -56,8 +55,6 @@ class NLA_MT_view(bpy.types.Menu): st = context.space_data - layout.column() - layout.operator("nla.properties", icon='MENU_PANEL') layout.separator() @@ -78,13 +75,12 @@ class NLA_MT_view(bpy.types.Menu): layout.operator("screen.screen_full_area") -class NLA_MT_select(bpy.types.Menu): +class NLA_MT_select(Menu): bl_label = "Select" def draw(self, context): layout = self.layout - layout.column() # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None layout.operator("nla.select_all_toggle") layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True @@ -98,7 +94,7 @@ class NLA_MT_select(bpy.types.Menu): layout.operator("nla.select_leftright", text="After Current Frame").mode = 'RIGHT' -class NLA_MT_marker(bpy.types.Menu): +class NLA_MT_marker(Menu): bl_label = "Marker" def draw(self, context): @@ -106,7 +102,6 @@ class NLA_MT_marker(bpy.types.Menu): #layout.operator_context = 'EXEC_REGION_WIN' - layout.column() layout.operator("marker.add", "Add Marker") layout.operator("marker.duplicate", text="Duplicate Marker") layout.operator("marker.delete", text="Delete Marker") @@ -117,7 +112,7 @@ class NLA_MT_marker(bpy.types.Menu): layout.operator("marker.move", text="Grab/Move Marker") -class NLA_MT_edit(bpy.types.Menu): +class NLA_MT_edit(Menu): bl_label = "Edit" def draw(self, context): @@ -125,7 +120,6 @@ class NLA_MT_edit(bpy.types.Menu): scene = context.scene - layout.column() layout.menu("NLA_MT_edit_transform", text="Transform") layout.operator_menu_enum("nla.snap", "type", text="Snap") @@ -160,13 +154,12 @@ class NLA_MT_edit(bpy.types.Menu): layout.operator("nla.tweakmode_enter", text="Start Tweaking Strip Actions") -class NLA_MT_add(bpy.types.Menu): +class NLA_MT_add(Menu): bl_label = "Add" def draw(self, context): layout = self.layout - layout.column() layout.operator("nla.actionclip_add") layout.operator("nla.transition_add") @@ -179,13 +172,12 @@ class NLA_MT_add(bpy.types.Menu): layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True -class NLA_MT_edit_transform(bpy.types.Menu): +class NLA_MT_edit_transform(Menu): bl_label = "Transform" def draw(self, context): layout = self.layout - layout.column() layout.operator("transform.translate", text="Grab/Move") layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND' layout.operator("transform.transform", text="Scale").mode = 'TIME_SCALE' diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index abeee984fac..96744cf1969 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -18,28 +18,29 @@ # import bpy +from bpy.types import Header, Menu, Panel -class NODE_HT_header(bpy.types.Header): +class NODE_HT_header(Header): bl_space_type = 'NODE_EDITOR' def draw(self, context): layout = self.layout snode = context.space_data + snode_id = snode.id + id_from = snode.id_from row = layout.row(align=True) row.template_header() if context.area.show_menus: - sub = row.row(align=True) - sub.menu("NODE_MT_view") - sub.menu("NODE_MT_select") - sub.menu("NODE_MT_add") - sub.menu("NODE_MT_node") + row.menu("NODE_MT_view") + row.menu("NODE_MT_select") + row.menu("NODE_MT_add") + row.menu("NODE_MT_node") - row = layout.row() - row.prop(snode, "tree_type", text="", expand=True) + layout.prop(snode, "tree_type", text="", expand=True) if snode.tree_type == 'SHADER': row.prop(snode, "shader_type", text="", expand=True) @@ -53,10 +54,8 @@ class NODE_HT_header(bpy.types.Header): layout.prop(snode_id, "use_nodes") elif snode.tree_type == 'TEXTURE': - row.prop(snode, "texture_type", text="", expand=True) + layout.prop(snode, "texture_type", text="", expand=True) - snode_id = snode.id - id_from = snode.id_from if id_from: if snode.texture_type == 'BRUSH': layout.template_ID(id_from, "texture", new="texture.new") @@ -66,10 +65,8 @@ class NODE_HT_header(bpy.types.Header): layout.prop(snode_id, "use_nodes") elif snode.tree_type == 'COMPOSITING': - scene = snode.id - - layout.prop(scene, "use_nodes") - layout.prop(scene.render, "use_free_unused_nodes", text="Free Unused") + layout.prop(snode_id, "use_nodes") + layout.prop(snode_id.render, "use_free_unused_nodes", text="Free Unused") layout.prop(snode, "show_backdrop") if snode.show_backdrop: row = layout.row(align=True) @@ -81,7 +78,7 @@ class NODE_HT_header(bpy.types.Header): layout.template_running_jobs() -class NODE_MT_view(bpy.types.Menu): +class NODE_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -110,7 +107,7 @@ class NODE_MT_view(bpy.types.Menu): layout.operator("screen.screen_full_area") -class NODE_MT_select(bpy.types.Menu): +class NODE_MT_select(Menu): bl_label = "Select" def draw(self, context): @@ -127,7 +124,7 @@ class NODE_MT_select(bpy.types.Menu): layout.operator("node.select_same_type_prev") -class NODE_MT_node(bpy.types.Menu): +class NODE_MT_node(Menu): bl_label = "Node" def draw(self, context): @@ -168,7 +165,7 @@ class NODE_MT_node(bpy.types.Menu): # Node Backdrop options -class NODE_PT_properties(bpy.types.Panel): +class NODE_PT_properties(Panel): bl_space_type = 'NODE_EDITOR' bl_region_type = 'UI' bl_label = "Backdrop" diff --git a/release/scripts/startup/bl_ui/space_outliner.py b/release/scripts/startup/bl_ui/space_outliner.py index 1f196cbd191..b1e6eaf3245 100644 --- a/release/scripts/startup/bl_ui/space_outliner.py +++ b/release/scripts/startup/bl_ui/space_outliner.py @@ -18,9 +18,10 @@ # import bpy +from bpy.types import Header, Menu -class OUTLINER_HT_header(bpy.types.Header): +class OUTLINER_HT_header(Header): bl_space_type = 'OUTLINER' def draw(self, context): @@ -63,7 +64,7 @@ class OUTLINER_HT_header(bpy.types.Header): row.label(text="No Keying Set active") -class OUTLINER_MT_view(bpy.types.Menu): +class OUTLINER_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -71,14 +72,13 @@ class OUTLINER_MT_view(bpy.types.Menu): space = context.space_data - col = layout.column() if space.display_mode not in {'DATABLOCKS', 'USER_PREFERENCES', 'KEYMAPS'}: - col.prop(space, "show_restrict_columns") - col.separator() - col.operator("outliner.show_active") + layout.prop(space, "show_restrict_columns") + layout.separator() + layout.operator("outliner.show_active") - col.operator("outliner.show_one_level") - col.operator("outliner.show_hierarchy") + layout.operator("outliner.show_one_level") + layout.operator("outliner.show_hierarchy") layout.separator() @@ -86,7 +86,7 @@ class OUTLINER_MT_view(bpy.types.Menu): layout.operator("screen.screen_full_area") -class OUTLINER_MT_search(bpy.types.Menu): +class OUTLINER_MT_search(Menu): bl_label = "Search" def draw(self, context): @@ -94,27 +94,23 @@ class OUTLINER_MT_search(bpy.types.Menu): space = context.space_data - col = layout.column() - - col.prop(space, "use_filter_case_sensitive") - col.prop(space, "use_filter_complete") + layout.prop(space, "use_filter_case_sensitive") + layout.prop(space, "use_filter_complete") -class OUTLINER_MT_edit_datablocks(bpy.types.Menu): +class OUTLINER_MT_edit_datablocks(Menu): bl_label = "Edit" def draw(self, context): layout = self.layout - col = layout.column() + layout.operator("outliner.keyingset_add_selected") + layout.operator("outliner.keyingset_remove_selected") - col.operator("outliner.keyingset_add_selected") - col.operator("outliner.keyingset_remove_selected") + layout.separator() - col.separator() - - col.operator("outliner.drivers_add_selected") - col.operator("outliner.drivers_delete_selected") + layout.operator("outliner.drivers_add_selected") + layout.operator("outliner.drivers_delete_selected") if __name__ == "__main__": # only for live edit. bpy.utils.register_module(__name__) diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index c477a2ff62b..84cc365425e 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Header, Menu, Panel def act_strip(context): @@ -27,7 +28,7 @@ def act_strip(context): return None -class SEQUENCER_HT_header(bpy.types.Header): +class SEQUENCER_HT_header(Header): bl_space_type = 'SEQUENCE_EDITOR' def draw(self, context): @@ -39,14 +40,13 @@ class SEQUENCER_HT_header(bpy.types.Header): row.template_header() if context.area.show_menus: - sub = row.row(align=True) - sub.menu("SEQUENCER_MT_view") + row.menu("SEQUENCER_MT_view") if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}: - sub.menu("SEQUENCER_MT_select") - sub.menu("SEQUENCER_MT_marker") - sub.menu("SEQUENCER_MT_add") - sub.menu("SEQUENCER_MT_strip") + row.menu("SEQUENCER_MT_select") + row.menu("SEQUENCER_MT_marker") + row.menu("SEQUENCER_MT_add") + row.menu("SEQUENCER_MT_strip") layout.prop(st, "view_type", expand=True, text="") @@ -76,7 +76,7 @@ class SEQUENCER_HT_header(bpy.types.Header): row.prop(ed, "overlay_lock", text="", icon='LOCKED') -class SEQUENCER_MT_view_toggle(bpy.types.Menu): +class SEQUENCER_MT_view_toggle(Menu): bl_label = "View Type" def draw(self, context): @@ -87,7 +87,7 @@ class SEQUENCER_MT_view_toggle(bpy.types.Menu): layout.operator("sequencer.view_toggle").type = 'SEQUENCER_PREVIEW' -class SEQUENCER_MT_view(bpy.types.Menu): +class SEQUENCER_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -95,8 +95,6 @@ class SEQUENCER_MT_view(bpy.types.Menu): st = context.space_data - layout.column() - layout.operator("sequencer.properties", icon='MENU_PANEL') layout.separator() @@ -129,13 +127,12 @@ class SEQUENCER_MT_view(bpy.types.Menu): layout.operator("screen.screen_full_area") -class SEQUENCER_MT_select(bpy.types.Menu): +class SEQUENCER_MT_select(Menu): bl_label = "Select" def draw(self, context): layout = self.layout - layout.column() layout.operator("sequencer.select_active_side", text="Strips to the Left").side = 'LEFT' layout.operator("sequencer.select_active_side", text="Strips to the Right").side = 'RIGHT' layout.separator() @@ -148,7 +145,7 @@ class SEQUENCER_MT_select(bpy.types.Menu): layout.operator("sequencer.select_inverse") -class SEQUENCER_MT_marker(bpy.types.Menu): +class SEQUENCER_MT_marker(Menu): bl_label = "Marker" def draw(self, context): @@ -156,7 +153,6 @@ class SEQUENCER_MT_marker(bpy.types.Menu): #layout.operator_context = 'EXEC_REGION_WIN' - layout.column() layout.operator("marker.add", "Add Marker") layout.operator("marker.duplicate", text="Duplicate Marker") layout.operator("marker.delete", text="Delete Marker") @@ -169,14 +165,26 @@ class SEQUENCER_MT_marker(bpy.types.Menu): #layout.operator("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS) -class SEQUENCER_MT_add(bpy.types.Menu): +class SEQUENCER_MT_change(Menu): + bl_label = "Change" + + def draw(self, context): + layout = self.layout + + layout.operator_context = 'INVOKE_REGION_WIN' + + layout.operator_menu_enum("sequencer.change_effect_input", "swap") + layout.operator_menu_enum("sequencer.change_effect_type", "type") + layout.operator("sequencer.change_path", text="Path/Files") + + +class SEQUENCER_MT_add(Menu): bl_label = "Add" def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - layout.column() if len(bpy.data.scenes) > 10: layout.operator_context = 'INVOKE_DEFAULT' layout.operator("sequencer.scene_strip_add", text="Scene...") @@ -190,14 +198,13 @@ class SEQUENCER_MT_add(bpy.types.Menu): layout.menu("SEQUENCER_MT_add_effect") -class SEQUENCER_MT_add_effect(bpy.types.Menu): +class SEQUENCER_MT_add_effect(Menu): bl_label = "Effect Strip..." def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - layout.column() layout.operator("sequencer.effect_strip_add", text="Add").type = 'ADD' layout.operator("sequencer.effect_strip_add", text="Subtract").type = 'SUBTRACT' layout.operator("sequencer.effect_strip_add", text="Alpha Over").type = 'ALPHA_OVER' @@ -216,7 +223,7 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu): layout.operator("sequencer.effect_strip_add", text="Adjustment Layer").type = 'ADJUSTMENT' -class SEQUENCER_MT_strip(bpy.types.Menu): +class SEQUENCER_MT_strip(Menu): bl_label = "Strip" def draw(self, context): @@ -224,7 +231,6 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' - layout.column() layout.operator("transform.transform", text="Grab/Move").mode = 'TRANSLATION' layout.operator("transform.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND' # uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator @@ -233,6 +239,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator("sequencer.cut", text="Cut (hard) at frame").type = 'HARD' layout.operator("sequencer.cut", text="Cut (soft) at frame").type = 'SOFT' layout.operator("sequencer.images_separate") + layout.operator("sequencer.offset_clear") layout.operator("sequencer.deinterlace_selected_movies") layout.separator() @@ -292,6 +299,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.separator() layout.operator("sequencer.swap_data") + layout.menu("SEQUENCER_MT_change") class SequencerButtonsPanel(): @@ -320,7 +328,7 @@ class SequencerButtonsPanel_Output(): return cls.has_preview(context) -class SEQUENCER_PT_edit(SequencerButtonsPanel, bpy.types.Panel): +class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel): bl_label = "Edit Strip" def draw(self, context): @@ -374,9 +382,11 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, bpy.types.Panel): if elem and elem.orig_width > 0 and elem.orig_height > 0: col.label(text="Orig Dim: %dx%d" % (elem.orig_width, elem.orig_height)) + else: + col.label(text="Orig Dim: None") -class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel): +class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel): bl_label = "Effect Strip" @classmethod @@ -514,7 +524,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel): col.prop(strip, "rotation_start", text="Rotation") -class SEQUENCER_PT_input(SequencerButtonsPanel, bpy.types.Panel): +class SEQUENCER_PT_input(SequencerButtonsPanel, Panel): bl_label = "Strip Input" @classmethod @@ -558,6 +568,9 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, bpy.types.Panel): col = split.column() col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback + # also accessible from the menu + layout.operator("sequencer.change_path") + elif seq_type == 'MOVIE': split = layout.split(percentage=0.2) col = split.column() @@ -595,7 +608,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, bpy.types.Panel): col.prop(strip, "frame_offset_end", text="End") -class SEQUENCER_PT_sound(SequencerButtonsPanel, bpy.types.Panel): +class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel): bl_label = "Sound" @classmethod @@ -636,7 +649,7 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel, bpy.types.Panel): col.prop(strip, "animation_offset_end", text="End") -class SEQUENCER_PT_scene(SequencerButtonsPanel, bpy.types.Panel): +class SEQUENCER_PT_scene(SequencerButtonsPanel, Panel): bl_label = "Scene" @classmethod @@ -670,7 +683,7 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel, bpy.types.Panel): layout.label(text="Original frame range: %d-%d (%d)" % (sta, end, end - sta + 1)) -class SEQUENCER_PT_filter(SequencerButtonsPanel, bpy.types.Panel): +class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel): bl_label = "Filter" @classmethod @@ -732,7 +745,7 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, bpy.types.Panel): col.prop(strip.color_balance, "invert_gain", text="Inverse") -class SEQUENCER_PT_proxy(SequencerButtonsPanel, bpy.types.Panel): +class SEQUENCER_PT_proxy(SequencerButtonsPanel, Panel): bl_label = "Proxy" @classmethod @@ -766,7 +779,7 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel, bpy.types.Panel): flow.prop(strip.proxy, "filepath") -class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, bpy.types.Panel): +class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel): bl_label = "Scene Preview/Render" bl_space_type = 'SEQUENCE_EDITOR' bl_region_type = 'UI' @@ -791,7 +804,7 @@ class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, bpy.types.Panel): ''' -class SEQUENCER_PT_view(SequencerButtonsPanel_Output, bpy.types.Panel): +class SEQUENCER_PT_view(SequencerButtonsPanel_Output, Panel): bl_label = "View Settings" def draw(self, context): diff --git a/release/scripts/startup/bl_ui/space_text.py b/release/scripts/startup/bl_ui/space_text.py index b787fc5cf75..300211a26bf 100644 --- a/release/scripts/startup/bl_ui/space_text.py +++ b/release/scripts/startup/bl_ui/space_text.py @@ -18,9 +18,10 @@ # import bpy +from bpy.types import Header, Menu, Panel -class TEXT_HT_header(bpy.types.Header): +class TEXT_HT_header(Header): bl_space_type = 'TEXT_EDITOR' def draw(self, context): @@ -74,7 +75,7 @@ class TEXT_HT_header(bpy.types.Header): else "Text: Internal") -class TEXT_PT_properties(bpy.types.Panel): +class TEXT_PT_properties(Panel): bl_space_type = 'TEXT_EDITOR' bl_region_type = 'UI' bl_label = "Properties" @@ -105,7 +106,7 @@ class TEXT_PT_properties(bpy.types.Panel): col.prop(st, "margin_column") -class TEXT_PT_find(bpy.types.Panel): +class TEXT_PT_find(Panel): bl_space_type = 'TEXT_EDITOR' bl_region_type = 'UI' bl_label = "Find" @@ -139,7 +140,7 @@ class TEXT_PT_find(bpy.types.Panel): row.prop(st, "use_find_all", text="All") -class TEXT_MT_view(bpy.types.Menu): +class TEXT_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -162,7 +163,7 @@ class TEXT_MT_view(bpy.types.Menu): ).type = 'FILE_BOTTOM' -class TEXT_MT_text(bpy.types.Menu): +class TEXT_MT_text(Menu): bl_label = "Text" def draw(self, context): @@ -171,7 +172,6 @@ class TEXT_MT_text(bpy.types.Menu): st = context.space_data text = st.text - layout.column() layout.operator("text.new") layout.operator("text.open") @@ -188,13 +188,8 @@ class TEXT_MT_text(bpy.types.Menu): layout.column() layout.operator("text.run_script") - #ifdef WITH_PYTHON - # XXX if(BPY_is_pyconstraint(text)) - # XXX uiMenuItemO(head, 0, "text.refresh_pyconstraints"); - #endif - -class TEXT_MT_templates(bpy.types.Menu): +class TEXT_MT_templates(Menu): bl_label = "Templates" def draw(self, context): @@ -204,7 +199,7 @@ class TEXT_MT_templates(bpy.types.Menu): ) -class TEXT_MT_edit_select(bpy.types.Menu): +class TEXT_MT_edit_select(Menu): bl_label = "Select" def draw(self, context): @@ -214,7 +209,7 @@ class TEXT_MT_edit_select(bpy.types.Menu): layout.operator("text.select_line") -class TEXT_MT_edit_markers(bpy.types.Menu): +class TEXT_MT_edit_markers(Menu): bl_label = "Markers" def draw(self, context): @@ -225,7 +220,7 @@ class TEXT_MT_edit_markers(bpy.types.Menu): layout.operator("text.previous_marker") -class TEXT_MT_format(bpy.types.Menu): +class TEXT_MT_format(Menu): bl_label = "Format" def draw(self, context): @@ -244,7 +239,7 @@ class TEXT_MT_format(bpy.types.Menu): layout.operator_menu_enum("text.convert_whitespace", "type") -class TEXT_MT_edit_to3d(bpy.types.Menu): +class TEXT_MT_edit_to3d(Menu): bl_label = "Text To 3D Object" def draw(self, context): @@ -258,7 +253,7 @@ class TEXT_MT_edit_to3d(bpy.types.Menu): ).split_lines = True -class TEXT_MT_edit(bpy.types.Menu): +class TEXT_MT_edit(Menu): bl_label = "Edit" @classmethod @@ -292,7 +287,7 @@ class TEXT_MT_edit(bpy.types.Menu): layout.menu("TEXT_MT_edit_to3d") -class TEXT_MT_toolbox(bpy.types.Menu): +class TEXT_MT_toolbox(Menu): bl_label = "" def draw(self, context): diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py index 7e62465d1ee..db009fe43c2 100644 --- a/release/scripts/startup/bl_ui/space_time.py +++ b/release/scripts/startup/bl_ui/space_time.py @@ -18,9 +18,10 @@ # import bpy +from bpy.types import Header, Menu -class TIME_HT_header(bpy.types.Header): +class TIME_HT_header(Header): bl_space_type = 'TIMELINE' def draw(self, context): @@ -34,10 +35,9 @@ class TIME_HT_header(bpy.types.Header): row.template_header() if context.area.show_menus: - sub = row.row(align=True) - sub.menu("TIME_MT_view") - sub.menu("TIME_MT_frame") - sub.menu("TIME_MT_playback") + row.menu("TIME_MT_view") + row.menu("TIME_MT_frame") + row.menu("TIME_MT_playback") layout.prop(scene, "use_preview_range", text="", toggle=True) @@ -91,7 +91,7 @@ class TIME_HT_header(bpy.types.Header): row.operator("anim.keyframe_delete", text="", icon='KEY_DEHLT') -class TIME_MT_view(bpy.types.Menu): +class TIME_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -116,7 +116,7 @@ class TIME_MT_view(bpy.types.Menu): layout.operator("marker.camera_bind") -class TIME_MT_cache(bpy.types.Menu): +class TIME_MT_cache(Menu): bl_label = "Cache" def draw(self, context): @@ -136,7 +136,7 @@ class TIME_MT_cache(bpy.types.Menu): col.prop(st, "cache_smoke") -class TIME_MT_frame(bpy.types.Menu): +class TIME_MT_frame(Menu): bl_label = "Frame" def draw(self, context): @@ -162,7 +162,7 @@ class TIME_MT_frame(bpy.types.Menu): sub.menu("TIME_MT_autokey") -class TIME_MT_playback(bpy.types.Menu): +class TIME_MT_playback(Menu): bl_label = "Playback" def draw(self, context): @@ -187,7 +187,7 @@ class TIME_MT_playback(bpy.types.Menu): layout.prop(scene, "use_audio_scrub") -class TIME_MT_autokey(bpy.types.Menu): +class TIME_MT_autokey(Menu): bl_label = "Auto-Keyframing Mode" def draw(self, context): diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index e6fd8dcb949..148338368fe 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Header, Menu, Operator, Panel import os import addon_utils @@ -75,7 +76,7 @@ def opengl_lamp_buttons(column, lamp): col.prop(lamp, "direction", text="") -class USERPREF_HT_header(bpy.types.Header): +class USERPREF_HT_header(Header): bl_space_type = 'USER_PREFERENCES' def draw(self, context): @@ -99,7 +100,7 @@ class USERPREF_HT_header(bpy.types.Header): layout.operator("ui.reset_default_theme") -class USERPREF_PT_tabs(bpy.types.Panel): +class USERPREF_PT_tabs(Panel): bl_label = "" bl_space_type = 'USER_PREFERENCES' bl_region_type = 'WINDOW' @@ -113,14 +114,14 @@ class USERPREF_PT_tabs(bpy.types.Panel): layout.prop(userpref, "active_section", expand=True) -class USERPREF_MT_interaction_presets(bpy.types.Menu): +class USERPREF_MT_interaction_presets(Menu): bl_label = "Presets" preset_subdir = "interaction" preset_operator = "script.execute_preset" - draw = bpy.types.Menu.draw_preset + draw = Menu.draw_preset -class USERPREF_MT_appconfigs(bpy.types.Menu): +class USERPREF_MT_appconfigs(Menu): bl_label = "AppPresets" preset_subdir = "keyconfig" preset_operator = "wm.appconfig_activate" @@ -129,10 +130,10 @@ class USERPREF_MT_appconfigs(bpy.types.Menu): self.layout.operator("wm.appconfig_default", text="Blender (default)") # now draw the presets - bpy.types.Menu.draw_preset(self, context) + Menu.draw_preset(self, context) -class USERPREF_MT_splash(bpy.types.Menu): +class USERPREF_MT_splash(Menu): bl_label = "Splash" def draw(self, context): @@ -149,7 +150,7 @@ class USERPREF_MT_splash(bpy.types.Menu): row.menu("USERPREF_MT_appconfigs", text="Preset") -class USERPREF_PT_interface(bpy.types.Panel): +class USERPREF_PT_interface(Panel): bl_space_type = 'USER_PREFERENCES' bl_label = "Interface" bl_region_type = 'WINDOW' @@ -246,7 +247,7 @@ class USERPREF_PT_interface(bpy.types.Panel): col.prop(view, "show_splash") -class USERPREF_PT_edit(bpy.types.Panel): +class USERPREF_PT_edit(Panel): bl_space_type = 'USER_PREFERENCES' bl_label = "Edit" bl_region_type = 'WINDOW' @@ -359,7 +360,7 @@ class USERPREF_PT_edit(bpy.types.Panel): col.prop(edit, "use_duplicate_particle", text="Particle") -class USERPREF_PT_system(bpy.types.Panel): +class USERPREF_PT_system(Panel): bl_space_type = 'USER_PREFERENCES' bl_label = "System" bl_region_type = 'WINDOW' @@ -496,7 +497,7 @@ class USERPREF_PT_system(bpy.types.Panel): sub.template_color_ramp(system, "weight_color_range", expand=True) -class USERPREF_PT_theme(bpy.types.Panel): +class USERPREF_PT_theme(Panel): bl_space_type = 'USER_PREFERENCES' bl_label = "Themes" bl_region_type = 'WINDOW' @@ -679,7 +680,7 @@ class USERPREF_PT_theme(bpy.types.Panel): self._theme_generic(split, getattr(theme, theme.theme_area.lower())) -class USERPREF_PT_file(bpy.types.Panel): +class USERPREF_PT_file(Panel): bl_space_type = 'USER_PREFERENCES' bl_label = "Files" bl_region_type = 'WINDOW' @@ -755,7 +756,7 @@ class USERPREF_PT_file(bpy.types.Panel): from bl_ui.space_userpref_keymap import InputKeyMapPanel -class USERPREF_MT_ndof_settings(bpy.types.Menu): +class USERPREF_MT_ndof_settings(Menu): # accessed from the window keybindings in C (only) bl_label = "3D Mouse Settings" @@ -780,7 +781,7 @@ class USERPREF_MT_ndof_settings(bpy.types.Menu): layout.prop(input_prefs, "ndof_lock_horizon", icon='NDOF_DOM') -class USERPREF_PT_input(bpy.types.Panel, InputKeyMapPanel): +class USERPREF_PT_input(Panel, InputKeyMapPanel): bl_space_type = 'USER_PREFERENCES' bl_label = "Input" @@ -870,7 +871,7 @@ class USERPREF_PT_input(bpy.types.Panel, InputKeyMapPanel): #print("runtime", time.time() - start) -class USERPREF_MT_addons_dev_guides(bpy.types.Menu): +class USERPREF_MT_addons_dev_guides(Menu): bl_label = "Development Guides" # menu to open webpages with addons development guides @@ -881,7 +882,7 @@ class USERPREF_MT_addons_dev_guides(bpy.types.Menu): layout.operator('wm.url_open', text='How to share your addon', icon='URL').url = 'http://wiki.blender.org/index.php/Dev:Py/Sharing' -class USERPREF_PT_addons(bpy.types.Panel): +class USERPREF_PT_addons(Panel): bl_space_type = 'USER_PREFERENCES' bl_label = "Addons" bl_region_type = 'WINDOW' @@ -1071,28 +1072,36 @@ class USERPREF_PT_addons(bpy.types.Panel): row.operator("wm.addon_disable", icon='CHECKBOX_HLT', text="", emboss=False).module = module_name -class WM_OT_addon_enable(bpy.types.Operator): +class WM_OT_addon_enable(Operator): "Enable an addon" bl_idname = "wm.addon_enable" bl_label = "Enable Add-On" - module = StringProperty(name="Module", description="Module name of the addon to enable") + module = StringProperty( + name="Module", + description="Module name of the addon to enable", + ) def execute(self, context): mod = addon_utils.enable(self.module) if mod: - # check if add-on is written for current blender version, or raise a warning info = addon_utils.module_bl_info(mod) - if info.get("blender", (0, 0, 0)) > bpy.app.version: - self.report("WARNING','This script was written for a newer version of Blender and might not function (correctly).\nThe script is enabled though.") + info_ver = info.get("blender", (0, 0, 0)) + + if info_ver > bpy.app.version: + self.report({'WARNING'}, ("This script was written Blender " + "version %d.%d.%d and might not " + "function (correctly).\n" + "The script is enabled though.") % + info_ver) return {'FINISHED'} else: return {'CANCELLED'} -class WM_OT_addon_disable(bpy.types.Operator): +class WM_OT_addon_disable(Operator): "Disable an addon" bl_idname = "wm.addon_disable" bl_label = "Disable Add-On" @@ -1104,7 +1113,7 @@ class WM_OT_addon_disable(bpy.types.Operator): return {'FINISHED'} -class WM_OT_addon_install(bpy.types.Operator): +class WM_OT_addon_install(Operator): "Install an addon" bl_idname = "wm.addon_install" bl_label = "Install Add-On..." @@ -1250,7 +1259,7 @@ class WM_OT_addon_install(bpy.types.Operator): return {'RUNNING_MODAL'} -class WM_OT_addon_remove(bpy.types.Operator): +class WM_OT_addon_remove(Operator): "Disable an addon" bl_idname = "wm.addon_remove" bl_label = "Remove Add-On" @@ -1298,7 +1307,7 @@ class WM_OT_addon_remove(bpy.types.Operator): return wm.invoke_props_dialog(self, width=600) -class WM_OT_addon_expand(bpy.types.Operator): +class WM_OT_addon_expand(Operator): "Display more information on this add-on" bl_idname = "wm.addon_expand" bl_label = "" diff --git a/release/scripts/startup/bl_ui/space_userpref_keymap.py b/release/scripts/startup/bl_ui/space_userpref_keymap.py index 5658cc96281..6a81ff5830e 100644 --- a/release/scripts/startup/bl_ui/space_userpref_keymap.py +++ b/release/scripts/startup/bl_ui/space_userpref_keymap.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Menu, Operator, OperatorProperties import os @@ -124,7 +125,7 @@ def _merge_keymaps(kc1, kc2): return merged_keymaps -class USERPREF_MT_keyconfigs(bpy.types.Menu): +class USERPREF_MT_keyconfigs(Menu): bl_label = "KeyPresets" preset_subdir = "keyconfig" preset_operator = "wm.keyconfig_activate" @@ -135,7 +136,7 @@ class USERPREF_MT_keyconfigs(bpy.types.Menu): props.value = "context.window_manager.keyconfigs.default" # now draw the presets - bpy.types.Menu.draw_preset(self, context) + Menu.draw_preset(self, context) class InputKeyMapPanel: @@ -232,7 +233,7 @@ class InputKeyMapPanel: flow = box.column_flow(columns=2) for pname, value in properties.bl_rna.properties.items(): if pname != "rna_type" and not properties.is_property_hidden(pname): - if isinstance(value, bpy.types.OperatorProperties): + if isinstance(value, OperatorProperties): InputKeyMapPanel.draw_kmi_properties(box, value, title=pname) else: flow.prop(properties, pname) @@ -410,7 +411,7 @@ def export_properties(prefix, properties, lines=None): for pname in properties.bl_rna.properties.keys(): if pname != "rna_type" and not properties.is_property_hidden(pname): value = getattr(properties, pname) - if isinstance(value, bpy.types.OperatorProperties): + if isinstance(value, OperatorProperties): export_properties(prefix + "." + pname, value, lines) elif properties.is_property_set(pname): value = _string_value(value) @@ -419,7 +420,7 @@ def export_properties(prefix, properties, lines=None): return lines -class WM_OT_keyconfig_test(bpy.types.Operator): +class WM_OT_keyconfig_test(Operator): "Test keyconfig for conflicts" bl_idname = "wm.keyconfig_test" bl_label = "Test Key Configuration for Conflicts" @@ -527,7 +528,7 @@ def _string_value(value): return result -class WM_OT_keyconfig_import(bpy.types.Operator): +class WM_OT_keyconfig_import(Operator): "Import key configuration from a python script" bl_idname = "wm.keyconfig_import" bl_label = "Import Key Configuration..." @@ -542,22 +543,24 @@ class WM_OT_keyconfig_import(bpy.types.Operator): def execute(self, context): from os.path import basename import shutil - if not self.filepath: - raise Exception("Filepath not set") - f = open(self.filepath, "r") - if not f: - raise Exception("Could not open file") + if not self.filepath: + self.report({'ERROR'}, "Filepath not set") + return {'CANCELLED'} config_name = basename(self.filepath) path = bpy.utils.user_resource('SCRIPTS', os.path.join("presets", "keyconfig"), create=True) path = os.path.join(path, config_name) - if self.keep_original: - shutil.copy(self.filepath, path) - else: - shutil.move(self.filepath, path) + try: + if self.keep_original: + shutil.copy(self.filepath, path) + else: + shutil.move(self.filepath, path) + except Exception as e: + self.report({'ERROR'}, "Installing keymap failed: %s" % e) + return {'CANCELLED'} # sneaky way to check we're actually running the code. bpy.utils.keyconfig_set(path) @@ -572,7 +575,7 @@ class WM_OT_keyconfig_import(bpy.types.Operator): # This operator is also used by interaction presets saving - AddPresetBase -class WM_OT_keyconfig_export(bpy.types.Operator): +class WM_OT_keyconfig_export(Operator): "Export key configuration to a python script" bl_idname = "wm.keyconfig_export" bl_label = "Export Key Configuration..." @@ -665,7 +668,7 @@ class WM_OT_keyconfig_export(bpy.types.Operator): return {'RUNNING_MODAL'} -class WM_OT_keymap_restore(bpy.types.Operator): +class WM_OT_keymap_restore(Operator): "Restore key map(s)" bl_idname = "wm.keymap_restore" bl_label = "Restore Key Map(s)" @@ -685,7 +688,7 @@ class WM_OT_keymap_restore(bpy.types.Operator): return {'FINISHED'} -class WM_OT_keyitem_restore(bpy.types.Operator): +class WM_OT_keyitem_restore(Operator): "Restore key map item" bl_idname = "wm.keyitem_restore" bl_label = "Restore Key Map Item" @@ -707,7 +710,7 @@ class WM_OT_keyitem_restore(bpy.types.Operator): return {'FINISHED'} -class WM_OT_keyitem_add(bpy.types.Operator): +class WM_OT_keyitem_add(Operator): "Add key map item" bl_idname = "wm.keyitem_add" bl_label = "Add Key Map Item" @@ -729,7 +732,7 @@ class WM_OT_keyitem_add(bpy.types.Operator): return {'FINISHED'} -class WM_OT_keyitem_remove(bpy.types.Operator): +class WM_OT_keyitem_remove(Operator): "Remove key map item" bl_idname = "wm.keyitem_remove" bl_label = "Remove Key Map Item" @@ -747,7 +750,7 @@ class WM_OT_keyitem_remove(bpy.types.Operator): return {'FINISHED'} -class WM_OT_keyconfig_remove(bpy.types.Operator): +class WM_OT_keyconfig_remove(Operator): "Remove key config" bl_idname = "wm.keyconfig_remove" bl_label = "Remove Key Config" diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 17b631ae50c..3a28cd30947 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -18,9 +18,10 @@ # import bpy +from bpy.types import Header, Menu, Operator, Panel -class VIEW3D_HT_header(bpy.types.Header): +class VIEW3D_HT_header(Header): bl_space_type = 'VIEW_3D' def draw(self, context): @@ -128,7 +129,7 @@ class ShowHideMenu(): layout.operator("%s.hide" % self._operator_name, text="Hide Unselected").unselected = True -class VIEW3D_MT_transform(bpy.types.Menu): +class VIEW3D_MT_transform(Menu): bl_label = "Transform" # TODO: get rid of the custom text strings? @@ -180,7 +181,7 @@ class VIEW3D_MT_transform(bpy.types.Menu): layout.operator("object.align") -class VIEW3D_MT_mirror(bpy.types.Menu): +class VIEW3D_MT_mirror(Menu): bl_label = "Mirror" def draw(self, context): @@ -218,7 +219,7 @@ class VIEW3D_MT_mirror(bpy.types.Menu): layout.operator("object.vertex_group_mirror") -class VIEW3D_MT_snap(bpy.types.Menu): +class VIEW3D_MT_snap(Menu): bl_label = "Snap" def draw(self, context): @@ -235,7 +236,7 @@ class VIEW3D_MT_snap(bpy.types.Menu): layout.operator("view3d.snap_cursor_to_active", text="Cursor to Active") -class VIEW3D_MT_uv_map(bpy.types.Menu): +class VIEW3D_MT_uv_map(Menu): bl_label = "UV Mapping" def draw(self, context): @@ -268,7 +269,7 @@ class VIEW3D_MT_uv_map(bpy.types.Menu): # ********** View menus ********** -class VIEW3D_MT_view(bpy.types.Menu): +class VIEW3D_MT_view(Menu): bl_label = "View" def draw(self, context): @@ -327,7 +328,7 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.operator("screen.screen_full_area") -class VIEW3D_MT_view_navigation(bpy.types.Menu): +class VIEW3D_MT_view_navigation(Menu): bl_label = "Navigation" def draw(self, context): @@ -350,7 +351,7 @@ class VIEW3D_MT_view_navigation(bpy.types.Menu): layout.operator("view3d.fly") -class VIEW3D_MT_view_align(bpy.types.Menu): +class VIEW3D_MT_view_align(Menu): bl_label = "Align View" def draw(self, context): @@ -366,7 +367,7 @@ class VIEW3D_MT_view_align(bpy.types.Menu): layout.operator("view3d.view_center_cursor") -class VIEW3D_MT_view_align_selected(bpy.types.Menu): +class VIEW3D_MT_view_align_selected(Menu): bl_label = "Align View to Selected" def draw(self, context): @@ -392,7 +393,7 @@ class VIEW3D_MT_view_align_selected(bpy.types.Menu): props.type = 'LEFT' -class VIEW3D_MT_view_cameras(bpy.types.Menu): +class VIEW3D_MT_view_cameras(Menu): bl_label = "Cameras" def draw(self, context): @@ -404,7 +405,7 @@ class VIEW3D_MT_view_cameras(bpy.types.Menu): # ********** Select menus, suffix from context.mode ********** -class VIEW3D_MT_select_object(bpy.types.Menu): +class VIEW3D_MT_select_object(Menu): bl_label = "Select" def draw(self, context): @@ -430,7 +431,7 @@ class VIEW3D_MT_select_object(bpy.types.Menu): layout.operator("object.select_pattern", text="Select Pattern...") -class VIEW3D_MT_select_pose(bpy.types.Menu): +class VIEW3D_MT_select_pose(Menu): bl_label = "Select" def draw(self, context): @@ -467,7 +468,7 @@ class VIEW3D_MT_select_pose(bpy.types.Menu): layout.operator("object.select_pattern", text="Select Pattern...") -class VIEW3D_MT_select_particle(bpy.types.Menu): +class VIEW3D_MT_select_particle(Menu): bl_label = "Select" def draw(self, context): @@ -492,7 +493,7 @@ class VIEW3D_MT_select_particle(bpy.types.Menu): layout.operator("particle.select_tips", text="Tips") -class VIEW3D_MT_select_edit_mesh(bpy.types.Menu): +class VIEW3D_MT_select_edit_mesh(Menu): bl_label = "Select" def draw(self, context): @@ -544,7 +545,7 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu): layout.operator("mesh.region_to_loop") -class VIEW3D_MT_select_edit_curve(bpy.types.Menu): +class VIEW3D_MT_select_edit_curve(Menu): bl_label = "Select" def draw(self, context): @@ -573,7 +574,7 @@ class VIEW3D_MT_select_edit_curve(bpy.types.Menu): layout.operator("curve.select_less") -class VIEW3D_MT_select_edit_surface(bpy.types.Menu): +class VIEW3D_MT_select_edit_surface(Menu): bl_label = "Select" def draw(self, context): @@ -599,7 +600,7 @@ class VIEW3D_MT_select_edit_surface(bpy.types.Menu): layout.operator("curve.select_less") -class VIEW3D_MT_select_edit_metaball(bpy.types.Menu): +class VIEW3D_MT_select_edit_metaball(Menu): bl_label = "Select" def draw(self, context): @@ -617,7 +618,7 @@ class VIEW3D_MT_select_edit_metaball(bpy.types.Menu): layout.operator("mball.select_random_metaelems") -class VIEW3D_MT_select_edit_lattice(bpy.types.Menu): +class VIEW3D_MT_select_edit_lattice(Menu): bl_label = "Select" def draw(self, context): @@ -630,7 +631,7 @@ class VIEW3D_MT_select_edit_lattice(bpy.types.Menu): layout.operator("lattice.select_all", text="Select/Deselect All") -class VIEW3D_MT_select_edit_armature(bpy.types.Menu): +class VIEW3D_MT_select_edit_armature(Menu): bl_label = "Select" def draw(self, context): @@ -661,7 +662,7 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu): layout.operator("object.select_pattern", text="Select Pattern...") -class VIEW3D_MT_select_face(bpy.types.Menu): # XXX no matching enum +class VIEW3D_MT_select_face(Menu): # XXX no matching enum bl_label = "Select" def draw(self, context): @@ -674,7 +675,7 @@ class VIEW3D_MT_select_face(bpy.types.Menu): # XXX no matching enum # ********** Object menu ********** -class VIEW3D_MT_object(bpy.types.Menu): +class VIEW3D_MT_object(Menu): bl_context = "objectmode" bl_label = "Object" @@ -732,7 +733,7 @@ class VIEW3D_MT_object(bpy.types.Menu): layout.operator_menu_enum("object.convert", "target") -class VIEW3D_MT_object_animation(bpy.types.Menu): +class VIEW3D_MT_object_animation(Menu): bl_label = "Animation" def draw(self, context): @@ -743,7 +744,7 @@ class VIEW3D_MT_object_animation(bpy.types.Menu): layout.operator("anim.keying_set_active_set", text="Change Keying Set...") -class VIEW3D_MT_object_clear(bpy.types.Menu): +class VIEW3D_MT_object_clear(Menu): bl_label = "Clear" def draw(self, context): @@ -755,7 +756,7 @@ class VIEW3D_MT_object_clear(bpy.types.Menu): layout.operator("object.origin_clear", text="Origin") -class VIEW3D_MT_object_specials(bpy.types.Menu): +class VIEW3D_MT_object_specials(Menu): bl_label = "Specials" @classmethod @@ -850,7 +851,7 @@ class VIEW3D_MT_object_specials(bpy.types.Menu): props = layout.operator("object.hide_render_clear_all") -class VIEW3D_MT_object_apply(bpy.types.Menu): +class VIEW3D_MT_object_apply(Menu): bl_label = "Apply" def draw(self, context): @@ -869,7 +870,7 @@ class VIEW3D_MT_object_apply(bpy.types.Menu): layout.operator("object.duplicates_make_real") -class VIEW3D_MT_object_parent(bpy.types.Menu): +class VIEW3D_MT_object_parent(Menu): bl_label = "Parent" def draw(self, context): @@ -879,7 +880,7 @@ class VIEW3D_MT_object_parent(bpy.types.Menu): layout.operator("object.parent_clear", text="Clear") -class VIEW3D_MT_object_track(bpy.types.Menu): +class VIEW3D_MT_object_track(Menu): bl_label = "Track" def draw(self, context): @@ -889,7 +890,7 @@ class VIEW3D_MT_object_track(bpy.types.Menu): layout.operator("object.track_clear", text="Clear") -class VIEW3D_MT_object_group(bpy.types.Menu): +class VIEW3D_MT_object_group(Menu): bl_label = "Group" def draw(self, context): @@ -904,7 +905,7 @@ class VIEW3D_MT_object_group(bpy.types.Menu): layout.operator("group.objects_remove_active") -class VIEW3D_MT_object_constraints(bpy.types.Menu): +class VIEW3D_MT_object_constraints(Menu): bl_label = "Constraints" def draw(self, context): @@ -915,7 +916,7 @@ class VIEW3D_MT_object_constraints(bpy.types.Menu): layout.operator("object.constraints_clear") -class VIEW3D_MT_object_showhide(bpy.types.Menu): +class VIEW3D_MT_object_showhide(Menu): bl_label = "Show/Hide" def draw(self, context): @@ -926,7 +927,7 @@ class VIEW3D_MT_object_showhide(bpy.types.Menu): layout.operator("object.hide_view_set", text="Hide Unselected").unselected = True -class VIEW3D_MT_make_single_user(bpy.types.Menu): +class VIEW3D_MT_make_single_user(Menu): bl_label = "Make Single User" def draw(self, context): @@ -948,7 +949,7 @@ class VIEW3D_MT_make_single_user(bpy.types.Menu): props.animation = True -class VIEW3D_MT_make_links(bpy.types.Menu): +class VIEW3D_MT_make_links(Menu): bl_label = "Make Links" def draw(self, context): @@ -965,7 +966,7 @@ class VIEW3D_MT_make_links(bpy.types.Menu): layout.operator_enum("object.make_links_data", "type") # inline -class VIEW3D_MT_object_game(bpy.types.Menu): +class VIEW3D_MT_object_game(Menu): bl_label = "Game" def draw(self, context): @@ -987,7 +988,7 @@ class VIEW3D_MT_object_game(bpy.types.Menu): # ********** Vertex paint menu ********** -class VIEW3D_MT_paint_vertex(bpy.types.Menu): +class VIEW3D_MT_paint_vertex(Menu): bl_label = "Paint" def draw(self, context): @@ -1002,7 +1003,7 @@ class VIEW3D_MT_paint_vertex(bpy.types.Menu): layout.operator("paint.vertex_color_dirt") -class VIEW3D_MT_hook(bpy.types.Menu): +class VIEW3D_MT_hook(Menu): bl_label = "Hooks" def draw(self, context): @@ -1021,7 +1022,7 @@ class VIEW3D_MT_hook(bpy.types.Menu): layout.operator_menu_enum("object.hook_recenter", "modifier") -class VIEW3D_MT_vertex_group(bpy.types.Menu): +class VIEW3D_MT_vertex_group(Menu): bl_label = "Vertex Groups" def draw(self, context): @@ -1046,7 +1047,7 @@ class VIEW3D_MT_vertex_group(bpy.types.Menu): # ********** Weight paint menu ********** -class VIEW3D_MT_paint_weight(bpy.types.Menu): +class VIEW3D_MT_paint_weight(Menu): bl_label = "Weights" def draw(self, context): @@ -1076,7 +1077,7 @@ class VIEW3D_MT_paint_weight(bpy.types.Menu): # ********** Sculpt menu ********** -class VIEW3D_MT_sculpt(bpy.types.Menu): +class VIEW3D_MT_sculpt(Menu): bl_label = "Sculpt" def draw(self, context): @@ -1126,7 +1127,7 @@ class VIEW3D_MT_sculpt(bpy.types.Menu): # ********** Particle menu ********** -class VIEW3D_MT_particle(bpy.types.Menu): +class VIEW3D_MT_particle(Menu): bl_label = "Particle" def draw(self, context): @@ -1158,7 +1159,7 @@ class VIEW3D_MT_particle(bpy.types.Menu): layout.menu("VIEW3D_MT_particle_showhide") -class VIEW3D_MT_particle_specials(bpy.types.Menu): +class VIEW3D_MT_particle_specials(Menu): bl_label = "Specials" def draw(self, context): @@ -1176,13 +1177,13 @@ class VIEW3D_MT_particle_specials(bpy.types.Menu): layout.operator("particle.remove_doubles") -class VIEW3D_MT_particle_showhide(ShowHideMenu, bpy.types.Menu): +class VIEW3D_MT_particle_showhide(ShowHideMenu, Menu): _operator_name = "particle" # ********** Pose Menu ********** -class VIEW3D_MT_pose(bpy.types.Menu): +class VIEW3D_MT_pose(Menu): bl_label = "Pose" def draw(self, context): @@ -1251,7 +1252,7 @@ class VIEW3D_MT_pose(bpy.types.Menu): layout.menu("VIEW3D_MT_bone_options_toggle", text="Bone Settings") -class VIEW3D_MT_pose_transform(bpy.types.Menu): +class VIEW3D_MT_pose_transform(Menu): bl_label = "Clear Transform" def draw(self, context): @@ -1266,7 +1267,7 @@ class VIEW3D_MT_pose_transform(bpy.types.Menu): layout.label(text="Origin") -class VIEW3D_MT_pose_slide(bpy.types.Menu): +class VIEW3D_MT_pose_slide(Menu): bl_label = "In-Betweens" def draw(self, context): @@ -1277,7 +1278,7 @@ class VIEW3D_MT_pose_slide(bpy.types.Menu): layout.operator("pose.breakdown") -class VIEW3D_MT_pose_propagate(bpy.types.Menu): +class VIEW3D_MT_pose_propagate(Menu): bl_label = "Propagate" def draw(self, context): @@ -1295,7 +1296,7 @@ class VIEW3D_MT_pose_propagate(bpy.types.Menu): layout.operator("pose.propagate", text="On Selected Markers").mode = 'SELECTED_MARKERS' -class VIEW3D_MT_pose_library(bpy.types.Menu): +class VIEW3D_MT_pose_library(Menu): bl_label = "Pose Library" def draw(self, context): @@ -1310,7 +1311,7 @@ class VIEW3D_MT_pose_library(bpy.types.Menu): layout.operator("poselib.pose_remove", text="Remove Pose...") -class VIEW3D_MT_pose_motion(bpy.types.Menu): +class VIEW3D_MT_pose_motion(Menu): bl_label = "Motion Paths" def draw(self, context): @@ -1320,7 +1321,7 @@ class VIEW3D_MT_pose_motion(bpy.types.Menu): layout.operator("pose.paths_clear", text="Clear") -class VIEW3D_MT_pose_group(bpy.types.Menu): +class VIEW3D_MT_pose_group(Menu): bl_label = "Bone Groups" def draw(self, context): @@ -1334,7 +1335,7 @@ class VIEW3D_MT_pose_group(bpy.types.Menu): layout.operator("pose.group_unassign") -class VIEW3D_MT_pose_ik(bpy.types.Menu): +class VIEW3D_MT_pose_ik(Menu): bl_label = "Inverse Kinematics" def draw(self, context): @@ -1344,7 +1345,7 @@ class VIEW3D_MT_pose_ik(bpy.types.Menu): layout.operator("pose.ik_clear") -class VIEW3D_MT_pose_constraints(bpy.types.Menu): +class VIEW3D_MT_pose_constraints(Menu): bl_label = "Constraints" def draw(self, context): @@ -1355,11 +1356,11 @@ class VIEW3D_MT_pose_constraints(bpy.types.Menu): layout.operator("pose.constraints_clear") -class VIEW3D_MT_pose_showhide(ShowHideMenu, bpy.types.Menu): +class VIEW3D_MT_pose_showhide(ShowHideMenu, Menu): _operator_name = "pose" -class VIEW3D_MT_pose_apply(bpy.types.Menu): +class VIEW3D_MT_pose_apply(Menu): bl_label = "Apply" def draw(self, context): @@ -1398,24 +1399,24 @@ class BoneOptions: props.type = self.type -class VIEW3D_MT_bone_options_toggle(bpy.types.Menu, BoneOptions): +class VIEW3D_MT_bone_options_toggle(Menu, BoneOptions): bl_label = "Toggle Bone Options" type = 'TOGGLE' -class VIEW3D_MT_bone_options_enable(bpy.types.Menu, BoneOptions): +class VIEW3D_MT_bone_options_enable(Menu, BoneOptions): bl_label = "Enable Bone Options" type = 'ENABLE' -class VIEW3D_MT_bone_options_disable(bpy.types.Menu, BoneOptions): +class VIEW3D_MT_bone_options_disable(Menu, BoneOptions): bl_label = "Disable Bone Options" type = 'DISABLE' # ********** Edit Menus, suffix from ob.type ********** -class VIEW3D_MT_edit_mesh(bpy.types.Menu): +class VIEW3D_MT_edit_mesh(Menu): bl_label = "Mesh" def draw(self, context): @@ -1462,7 +1463,7 @@ class VIEW3D_MT_edit_mesh(bpy.types.Menu): layout.menu("VIEW3D_MT_edit_mesh_showhide") -class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu): +class VIEW3D_MT_edit_mesh_specials(Menu): bl_label = "Specials" def draw(self, context): @@ -1487,7 +1488,7 @@ class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu): layout.operator("mesh.select_vertex_path") -class VIEW3D_MT_edit_mesh_select_mode(bpy.types.Menu): +class VIEW3D_MT_edit_mesh_select_mode(Menu): bl_label = "Mesh Select Mode" def draw(self, context): @@ -1508,7 +1509,7 @@ class VIEW3D_MT_edit_mesh_select_mode(bpy.types.Menu): prop.data_path = "tool_settings.mesh_select_mode" -class VIEW3D_MT_edit_mesh_extrude(bpy.types.Menu): +class VIEW3D_MT_edit_mesh_extrude(Menu): bl_label = "Extrude" _extrude_funcs = { \ @@ -1542,7 +1543,7 @@ class VIEW3D_MT_edit_mesh_extrude(bpy.types.Menu): self._extrude_funcs[menu_id](layout) -class VIEW3D_OT_edit_mesh_extrude_individual_move(bpy.types.Operator): +class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator): "Extrude individual elements and move" bl_label = "Extrude Individual and Move" bl_idname = "view3d.edit_mesh_extrude_individual_move" @@ -1571,7 +1572,7 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(bpy.types.Operator): return self.execute(context) -class VIEW3D_OT_edit_mesh_extrude_move(bpy.types.Operator): +class VIEW3D_OT_edit_mesh_extrude_move(Operator): "Extrude and move along normals" bl_label = "Extrude and Move on Normals" bl_idname = "view3d.edit_mesh_extrude_move_normal" @@ -1597,7 +1598,7 @@ class VIEW3D_OT_edit_mesh_extrude_move(bpy.types.Operator): return self.execute(context) -class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu): +class VIEW3D_MT_edit_mesh_vertices(Menu): bl_label = "Vertices" def draw(self, context): @@ -1629,7 +1630,7 @@ class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu): layout.menu("VIEW3D_MT_hook") -class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu): +class VIEW3D_MT_edit_mesh_edges(Menu): bl_label = "Edges" def draw(self, context): @@ -1669,7 +1670,7 @@ class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu): layout.operator("mesh.region_to_loop") -class VIEW3D_MT_edit_mesh_faces(bpy.types.Menu): +class VIEW3D_MT_edit_mesh_faces(Menu): bl_label = "Faces" bl_idname = "VIEW3D_MT_edit_mesh_faces" @@ -1717,7 +1718,7 @@ class VIEW3D_MT_edit_mesh_faces(bpy.types.Menu): layout.operator_menu_enum("mesh.colors_mirror", "axis") -class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu): +class VIEW3D_MT_edit_mesh_normals(Menu): bl_label = "Normals" def draw(self, context): @@ -1731,7 +1732,7 @@ class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu): layout.operator("mesh.flip_normals") -class VIEW3D_MT_edit_mesh_showhide(ShowHideMenu, bpy.types.Menu): +class VIEW3D_MT_edit_mesh_showhide(ShowHideMenu, Menu): _operator_name = "mesh" # Edit Curve @@ -1771,13 +1772,13 @@ def draw_curve(self, context): layout.menu("VIEW3D_MT_edit_curve_showhide") -class VIEW3D_MT_edit_curve(bpy.types.Menu): +class VIEW3D_MT_edit_curve(Menu): bl_label = "Curve" draw = draw_curve -class VIEW3D_MT_edit_curve_ctrlpoints(bpy.types.Menu): +class VIEW3D_MT_edit_curve_ctrlpoints(Menu): bl_label = "Control Points" def draw(self, context): @@ -1799,7 +1800,7 @@ class VIEW3D_MT_edit_curve_ctrlpoints(bpy.types.Menu): layout.menu("VIEW3D_MT_hook") -class VIEW3D_MT_edit_curve_segments(bpy.types.Menu): +class VIEW3D_MT_edit_curve_segments(Menu): bl_label = "Segments" def draw(self, context): @@ -1809,7 +1810,7 @@ class VIEW3D_MT_edit_curve_segments(bpy.types.Menu): layout.operator("curve.switch_direction") -class VIEW3D_MT_edit_curve_specials(bpy.types.Menu): +class VIEW3D_MT_edit_curve_specials(Menu): bl_label = "Specials" def draw(self, context): @@ -1823,17 +1824,17 @@ class VIEW3D_MT_edit_curve_specials(bpy.types.Menu): layout.operator("curve.smooth_radius") -class VIEW3D_MT_edit_curve_showhide(ShowHideMenu, bpy.types.Menu): +class VIEW3D_MT_edit_curve_showhide(ShowHideMenu, Menu): _operator_name = "curve" -class VIEW3D_MT_edit_surface(bpy.types.Menu): +class VIEW3D_MT_edit_surface(Menu): bl_label = "Surface" draw = draw_curve -class VIEW3D_MT_edit_font(bpy.types.Menu): +class VIEW3D_MT_edit_font(Menu): bl_label = "Text" def draw(self, context): @@ -1853,7 +1854,7 @@ class VIEW3D_MT_edit_font(bpy.types.Menu): layout.operator("font.style_toggle", text="Toggle Small Caps").style = 'SMALL_CAPS' -class VIEW3D_MT_edit_text_chars(bpy.types.Menu): +class VIEW3D_MT_edit_text_chars(Menu): bl_label = "Special Characters" def draw(self, context): @@ -1887,7 +1888,7 @@ class VIEW3D_MT_edit_text_chars(bpy.types.Menu): layout.operator("font.text_insert", text="Spanish Exclamation Mark|Alt !").text = b'\xC2\xA1'.decode() -class VIEW3D_MT_edit_meta(bpy.types.Menu): +class VIEW3D_MT_edit_meta(Menu): bl_label = "Metaball" def draw(self, context): @@ -1920,7 +1921,7 @@ class VIEW3D_MT_edit_meta(bpy.types.Menu): layout.menu("VIEW3D_MT_edit_meta_showhide") -class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu): +class VIEW3D_MT_edit_meta_showhide(Menu): bl_label = "Show/Hide" def draw(self, context): @@ -1931,7 +1932,7 @@ class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu): layout.operator("mball.hide_metaelems", text="Hide Unselected").unselected = True -class VIEW3D_MT_edit_lattice(bpy.types.Menu): +class VIEW3D_MT_edit_lattice(Menu): bl_label = "Lattice" def draw(self, context): @@ -1953,7 +1954,7 @@ class VIEW3D_MT_edit_lattice(bpy.types.Menu): layout.prop_menu_enum(settings, "proportional_edit_falloff") -class VIEW3D_MT_edit_armature(bpy.types.Menu): +class VIEW3D_MT_edit_armature(Menu): bl_label = "Armature" def draw(self, context): @@ -2008,7 +2009,7 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu): layout.menu("VIEW3D_MT_bone_options_toggle", text="Bone Settings") -class VIEW3D_MT_armature_specials(bpy.types.Menu): +class VIEW3D_MT_armature_specials(Menu): bl_label = "Specials" def draw(self, context): @@ -2028,7 +2029,7 @@ class VIEW3D_MT_armature_specials(bpy.types.Menu): layout.operator("armature.flip_names", text="Flip Names") -class VIEW3D_MT_edit_armature_parent(bpy.types.Menu): +class VIEW3D_MT_edit_armature_parent(Menu): bl_label = "Parent" def draw(self, context): @@ -2038,7 +2039,7 @@ class VIEW3D_MT_edit_armature_parent(bpy.types.Menu): layout.operator("armature.parent_clear", text="Clear") -class VIEW3D_MT_edit_armature_roll(bpy.types.Menu): +class VIEW3D_MT_edit_armature_roll(Menu): bl_label = "Bone Roll" def draw(self, context): @@ -2053,7 +2054,7 @@ class VIEW3D_MT_edit_armature_roll(bpy.types.Menu): # ********** Panel ********** -class VIEW3D_PT_view3d_properties(bpy.types.Panel): +class VIEW3D_PT_view3d_properties(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "View" @@ -2094,7 +2095,7 @@ class VIEW3D_PT_view3d_properties(bpy.types.Panel): layout.column().prop(view, "cursor_location") -class VIEW3D_PT_view3d_name(bpy.types.Panel): +class VIEW3D_PT_view3d_name(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Item" @@ -2119,7 +2120,7 @@ class VIEW3D_PT_view3d_name(bpy.types.Panel): row.prop(bone, "name", text="") -class VIEW3D_PT_view3d_display(bpy.types.Panel): +class VIEW3D_PT_view3d_display(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Display" @@ -2190,7 +2191,7 @@ class VIEW3D_PT_view3d_display(bpy.types.Panel): row.prop(region, "use_box_clip") -class VIEW3D_PT_view3d_meshdisplay(bpy.types.Panel): +class VIEW3D_PT_view3d_meshdisplay(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Mesh Display" @@ -2227,7 +2228,7 @@ class VIEW3D_PT_view3d_meshdisplay(bpy.types.Panel): col.prop(mesh, "show_extra_face_area") -class VIEW3D_PT_view3d_curvedisplay(bpy.types.Panel): +class VIEW3D_PT_view3d_curvedisplay(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Curve Display" @@ -2249,7 +2250,7 @@ class VIEW3D_PT_view3d_curvedisplay(bpy.types.Panel): col.prop(context.scene.tool_settings, "normal_size", text="Normal Size") -class VIEW3D_PT_background_image(bpy.types.Panel): +class VIEW3D_PT_background_image(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Background Images" @@ -2302,7 +2303,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel): row.prop(bg, "offset_y", text="Y") -class VIEW3D_PT_transform_orientations(bpy.types.Panel): +class VIEW3D_PT_transform_orientations(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Transform Orientations" @@ -2330,7 +2331,7 @@ class VIEW3D_PT_transform_orientations(bpy.types.Panel): col.operator("transform.delete_orientation", text="Delete") -class VIEW3D_PT_etch_a_ton(bpy.types.Panel): +class VIEW3D_PT_etch_a_ton(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Skeleton Sketching" @@ -2375,7 +2376,7 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel): col.operator("sketch.convert", text="Convert") -class VIEW3D_PT_context_properties(bpy.types.Panel): +class VIEW3D_PT_context_properties(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Properties" diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 85dd6f7da5e..864d59f0cdb 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -18,6 +18,7 @@ # import bpy +from bpy.types import Menu, Panel class View3DPanel(): @@ -61,7 +62,7 @@ def draw_gpencil_tools(context, layout): # ********** default tools for objectmode **************** -class VIEW3D_PT_tools_objectmode(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_objectmode(View3DPanel, Panel): bl_context = "objectmode" bl_label = "Object Tools" @@ -106,7 +107,7 @@ class VIEW3D_PT_tools_objectmode(View3DPanel, bpy.types.Panel): # ********** default tools for editmode_mesh **************** -class VIEW3D_PT_tools_meshedit(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_meshedit(View3DPanel, Panel): bl_context = "mesh_edit" bl_label = "Mesh Tools" @@ -165,7 +166,7 @@ class VIEW3D_PT_tools_meshedit(View3DPanel, bpy.types.Panel): draw_gpencil_tools(context, layout) -class VIEW3D_PT_tools_meshedit_options(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_meshedit_options(View3DPanel, Panel): bl_context = "mesh_edit" bl_label = "Mesh Options" @@ -191,7 +192,7 @@ class VIEW3D_PT_tools_meshedit_options(View3DPanel, bpy.types.Panel): # ********** default tools for editmode_curve **************** -class VIEW3D_PT_tools_curveedit(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_curveedit(View3DPanel, Panel): bl_context = "curve_edit" bl_label = "Curve Tools" @@ -237,7 +238,7 @@ class VIEW3D_PT_tools_curveedit(View3DPanel, bpy.types.Panel): # ********** default tools for editmode_surface **************** -class VIEW3D_PT_tools_surfaceedit(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_surfaceedit(View3DPanel, Panel): bl_context = "surface_edit" bl_label = "Surface Tools" @@ -269,7 +270,7 @@ class VIEW3D_PT_tools_surfaceedit(View3DPanel, bpy.types.Panel): # ********** default tools for editmode_text **************** -class VIEW3D_PT_tools_textedit(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_textedit(View3DPanel, Panel): bl_context = "text_edit" bl_label = "Text Tools" @@ -299,7 +300,7 @@ class VIEW3D_PT_tools_textedit(View3DPanel, bpy.types.Panel): # ********** default tools for editmode_armature **************** -class VIEW3D_PT_tools_armatureedit(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_armatureedit(View3DPanel, Panel): bl_context = "armature_edit" bl_label = "Armature Tools" @@ -328,7 +329,7 @@ class VIEW3D_PT_tools_armatureedit(View3DPanel, bpy.types.Panel): draw_gpencil_tools(context, layout) -class VIEW3D_PT_tools_armatureedit_options(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_armatureedit_options(View3DPanel, Panel): bl_context = "armature_edit" bl_label = "Armature Options" @@ -340,7 +341,7 @@ class VIEW3D_PT_tools_armatureedit_options(View3DPanel, bpy.types.Panel): # ********** default tools for editmode_mball **************** -class VIEW3D_PT_tools_mballedit(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_mballedit(View3DPanel, Panel): bl_context = "mball_edit" bl_label = "Meta Tools" @@ -360,7 +361,7 @@ class VIEW3D_PT_tools_mballedit(View3DPanel, bpy.types.Panel): # ********** default tools for editmode_lattice **************** -class VIEW3D_PT_tools_latticeedit(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_latticeedit(View3DPanel, Panel): bl_context = "lattice_edit" bl_label = "Lattice Tools" @@ -384,7 +385,7 @@ class VIEW3D_PT_tools_latticeedit(View3DPanel, bpy.types.Panel): # ********** default tools for posemode **************** -class VIEW3D_PT_tools_posemode(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_posemode(View3DPanel, Panel): bl_context = "posemode" bl_label = "Pose Tools" @@ -425,7 +426,7 @@ class VIEW3D_PT_tools_posemode(View3DPanel, bpy.types.Panel): draw_gpencil_tools(context, layout) -class VIEW3D_PT_tools_posemode_options(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_posemode_options(View3DPanel, Panel): bl_context = "posemode" bl_label = "Pose Options" @@ -459,7 +460,7 @@ class PaintPanel(): return None -class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel): +class VIEW3D_PT_tools_brush(PaintPanel, Panel): bl_label = "Brush" @classmethod @@ -677,7 +678,7 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel): #row.prop(brush, "use_pressure_jitter", toggle=True, text="") -class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel): +class VIEW3D_PT_tools_brush_texture(PaintPanel, Panel): bl_label = "Texture" bl_options = {'DEFAULT_CLOSED'} @@ -775,7 +776,7 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel): col.active = tex_slot.map_mode in {'FIXED', 'TILED'} and brush.use_texture_overlay -class VIEW3D_PT_tools_brush_tool(PaintPanel, bpy.types.Panel): +class VIEW3D_PT_tools_brush_tool(PaintPanel, Panel): bl_label = "Tool" bl_options = {'DEFAULT_CLOSED'} @@ -809,7 +810,7 @@ class VIEW3D_PT_tools_brush_tool(PaintPanel, bpy.types.Panel): row.prop(brush, "use_paint_image", text="", icon='TPAINT_HLT') -class VIEW3D_PT_tools_brush_stroke(PaintPanel, bpy.types.Panel): +class VIEW3D_PT_tools_brush_stroke(PaintPanel, Panel): bl_label = "Stroke" bl_options = {'DEFAULT_CLOSED'} @@ -907,7 +908,7 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel, bpy.types.Panel): # row.prop(brush, "use_pressure_spacing", toggle=True, text="") -class VIEW3D_PT_tools_brush_curve(PaintPanel, bpy.types.Panel): +class VIEW3D_PT_tools_brush_curve(PaintPanel, Panel): bl_label = "Curve" bl_options = {'DEFAULT_CLOSED'} @@ -934,7 +935,7 @@ class VIEW3D_PT_tools_brush_curve(PaintPanel, bpy.types.Panel): row.operator("brush.curve_preset", icon="NOCURVE", text="").shape = 'MAX' -class VIEW3D_PT_sculpt_options(PaintPanel, bpy.types.Panel): +class VIEW3D_PT_sculpt_options(PaintPanel, Panel): bl_label = "Options" bl_options = {'DEFAULT_CLOSED'} @@ -964,7 +965,7 @@ class VIEW3D_PT_sculpt_options(PaintPanel, bpy.types.Panel): layout.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Strength") -class VIEW3D_PT_sculpt_symmetry(PaintPanel, bpy.types.Panel): +class VIEW3D_PT_sculpt_symmetry(PaintPanel, Panel): bl_label = "Symmetry" bl_options = {'DEFAULT_CLOSED'} @@ -992,7 +993,7 @@ class VIEW3D_PT_sculpt_symmetry(PaintPanel, bpy.types.Panel): layout.prop(sculpt, "use_symmetry_feather", text="Feather") -class VIEW3D_PT_tools_brush_appearance(PaintPanel, bpy.types.Panel): +class VIEW3D_PT_tools_brush_appearance(PaintPanel, Panel): bl_label = "Appearance" bl_options = {'DEFAULT_CLOSED'} @@ -1038,7 +1039,7 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, bpy.types.Panel): # ********** default tools for weightpaint **************** -class VIEW3D_PT_tools_weightpaint(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel): bl_context = "weightpaint" bl_label = "Weight Tools" @@ -1056,7 +1057,7 @@ class VIEW3D_PT_tools_weightpaint(View3DPanel, bpy.types.Panel): col.operator("object.vertex_group_levels", text="Levels") -class VIEW3D_PT_tools_weightpaint_options(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_weightpaint_options(View3DPanel, Panel): bl_context = "weightpaint" bl_label = "Options" @@ -1093,7 +1094,7 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel, bpy.types.Panel): # ********** default tools for vertexpaint **************** -class VIEW3D_PT_tools_vertexpaint(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_vertexpaint(View3DPanel, Panel): bl_context = "vertexpaint" bl_label = "Options" @@ -1122,7 +1123,7 @@ class VIEW3D_PT_tools_vertexpaint(View3DPanel, bpy.types.Panel): # ********** default tools for texturepaint **************** -class VIEW3D_PT_tools_projectpaint(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_projectpaint(View3DPanel, Panel): bl_context = "imagepaint" bl_label = "Project Paint" @@ -1214,7 +1215,7 @@ class VIEW3D_PT_imagepaint_options(PaintPanel): col.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Strength") -class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu): +class VIEW3D_MT_tools_projectpaint_clone(Menu): bl_label = "Clone Layer" def draw(self, context): @@ -1225,7 +1226,7 @@ class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu): prop.value = i -class VIEW3D_MT_tools_projectpaint_stencil(bpy.types.Menu): +class VIEW3D_MT_tools_projectpaint_stencil(Menu): bl_label = "Mask Layer" def draw(self, context): @@ -1236,7 +1237,7 @@ class VIEW3D_MT_tools_projectpaint_stencil(bpy.types.Menu): prop.value = i -class VIEW3D_PT_tools_particlemode(View3DPanel, bpy.types.Panel): +class VIEW3D_PT_tools_particlemode(View3DPanel, Panel): '''default tools for particle mode''' bl_context = "particlemode" bl_label = "Options" diff --git a/release/scripts/templates/operator_modal.py b/release/scripts/templates/operator_modal.py index 78dbd4c6b43..a428b097f82 100644 --- a/release/scripts/templates/operator_modal.py +++ b/release/scripts/templates/operator_modal.py @@ -18,7 +18,7 @@ class ModalOperator(bpy.types.Operator): elif event.type == 'LEFTMOUSE': return {'FINISHED'} - elif event.type in ('RIGHTMOUSE', 'ESC'): + elif event.type in {'RIGHTMOUSE', 'ESC'}: context.object.location.x = self.first_value return {'CANCELLED'} @@ -47,4 +47,4 @@ if __name__ == "__main__": register() # test call - bpy.ops.object.modal_operator() + bpy.ops.object.modal_operator('INVOKE_DEFAULT') diff --git a/release/scripts/templates/operator_modal_draw.py b/release/scripts/templates/operator_modal_draw.py index e7a1f6e4ffe..b3d525a59bf 100644 --- a/release/scripts/templates/operator_modal_draw.py +++ b/release/scripts/templates/operator_modal_draw.py @@ -45,7 +45,7 @@ class ModalDrawOperator(bpy.types.Operator): context.region.callback_remove(self._handle) return {'FINISHED'} - elif event.type in ('RIGHTMOUSE', 'ESC'): + elif event.type in {'RIGHTMOUSE', 'ESC'}: context.region.callback_remove(self._handle) return {'CANCELLED'} diff --git a/release/scripts/templates/operator_modal_timer.py b/release/scripts/templates/operator_modal_timer.py index d2267191cf5..ec47390da81 100644 --- a/release/scripts/templates/operator_modal_timer.py +++ b/release/scripts/templates/operator_modal_timer.py @@ -10,7 +10,7 @@ class ModalTimerOperator(bpy.types.Operator): def modal(self, context, event): if event.type == 'ESC': - return self.cancel() + return self.cancel(context) if event.type == 'TIMER': # change theme color, silly! diff --git a/release/scripts/templates/operator_modal_view3d.py b/release/scripts/templates/operator_modal_view3d.py index c494f121017..925449835ca 100644 --- a/release/scripts/templates/operator_modal_view3d.py +++ b/release/scripts/templates/operator_modal_view3d.py @@ -29,7 +29,7 @@ class ViewOperator(bpy.types.Operator): context.area.header_text_set() return {'FINISHED'} - elif event.type in ('RIGHTMOUSE', 'ESC'): + elif event.type in {'RIGHTMOUSE', 'ESC'}: rv3d.view_location = self._initial_location context.area.header_text_set() return {'CANCELLED'} diff --git a/release/text/readme.html b/release/text/readme.html index 2b5a4071a7f..95094b9c0cb 100644 --- a/release/text/readme.html +++ b/release/text/readme.html @@ -12,22 +12,22 @@ -

Blender 2.58

+

Blender 2.59


About

Welcome to Blender, the free, open source 3D application for modeling, animation, rendering, compositing, video editing and game creation. Blender is available for Linux, Mac OS X, Windows, Solaris and FreeBSD and has a large world-wide community.

Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.

For more information, visit blender.org.


-

2.58

-

The Blender Foundation and online developer community is proud to present Blender 2.58. This release is the second official stable release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. More information about this release.

+

2.59

+

The Blender Foundation and online developer community is proud to present Blender 2.59. This release is the third official stable release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. More information about this release.

What to Expect:

• Big improvements - This is our most exciting version to date, already a significant improvement in many ways over 2.49

• Missing/Incomplete Features - Although most of it is there, not all functionality from pre-2.5 versions has been restored yet. Some functionality may be re-implemented a different way.

• Changes - If you're used to the old Blenders, Blender 2.5 may seem quite different at first, but it won't be long before it grows on you even more than before.


Bugs

-

Although Blender 2.58 is considered a stable release, you may encounter a bug. If you do, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender 2.58. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.

+

Although Blender 2.59 is considered a stable release, you may encounter a bug. If you do, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender 2.59. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.


Package Contents

The downloaded Blender package includes:

@@ -51,11 +51,11 @@

Links

Users:

General information www.blender.org
- Full release log www.blender.org/development/release-logs/blender-258/
+ Full release log www.blender.org/development/release-logs/blender-259/
Tutorials www.blender.org/education-help/
Manual wiki.blender.org/index.php/Doc:Manual
User Forum www.blenderartists.org
- IRC #blender on irc.freenode.net
+ IRC #blenderchat on irc.freenode.net

Developers:

Development www.blender.org/development/
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 18f6ad21333..162b0de1d5a 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -43,17 +43,17 @@ extern "C" { /* these lines are grep'd, watch out for our not-so-awesome regex * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ -#define BLENDER_VERSION 258 -#define BLENDER_SUBVERSION 1 +#define BLENDER_VERSION 259 +#define BLENDER_SUBVERSION 0 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 /* used by packaging tools */ /* can be left blank, otherwise a,b,c... etc with no quotes */ -#define BLENDER_VERSION_CHAR a +#define BLENDER_VERSION_CHAR /* alpha/beta/rc/release, docs use this */ -#define BLENDER_VERSION_CYCLE beta +#define BLENDER_VERSION_CYCLE alpha struct ListBase; struct MemFile; diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 13a84e0452f..97abc740c43 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -301,6 +301,7 @@ static void dag_add_driver_relation(AnimData *adt, DagForest *dag, DagNode *node for (fcu= adt->drivers.first; fcu; fcu= fcu->next) { ChannelDriver *driver= fcu->driver; DriverVar *dvar; + int isdata_fcu = isdata || (fcu->rna_path && strstr(fcu->rna_path, "modifiers[")); /* loop over variables to get the target relationships */ for (dvar= driver->variables.first; dvar; dvar= dvar->next) { @@ -320,14 +321,14 @@ static void dag_add_driver_relation(AnimData *adt, DagForest *dag, DagNode *node ( ((dtar->rna_path) && strstr(dtar->rna_path, "pose.bones[")) || ((dtar->flag & DTAR_FLAG_STRUCT_REF) && (dtar->pchan_name[0])) )) { - dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver"); + dag_add_relation(dag, node1, node, isdata_fcu?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver"); } /* check if ob data */ else if (dtar->rna_path && strstr(dtar->rna_path, "data.")) - dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver"); + dag_add_relation(dag, node1, node, isdata_fcu?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver"); /* normal */ else - dag_add_relation(dag, node1, node, isdata?DAG_RL_OB_DATA:DAG_RL_OB_OB, "Driver"); + dag_add_relation(dag, node1, node, isdata_fcu?DAG_RL_OB_DATA:DAG_RL_OB_OB, "Driver"); } } } diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 8f57490d057..c2ed6468643 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -1369,6 +1369,11 @@ void makeDispListCurveTypes(Scene *scene, Object *ob, int forOrco) Curve *cu= ob->data; ListBase *dispbase; + /* The same check for duplis as in do_makeDispListCurveTypes. + Happens when curve used for constraint/bevel was converted to mesh. + check there is still needed for render displist and orco displists. */ + if(!ELEM3(ob->type, OB_SURF, OB_CURVE, OB_FONT)) return; + freedisplist(&(ob->disp)); dispbase= &(ob->disp); freedisplist(dispbase); diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index d6a9d950015..13e13fbc3ff 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -1002,7 +1002,7 @@ static float dtar_get_prop_val (ChannelDriver *driver, DriverTarget *dtar) /* get property to read from, and get value as appropriate */ if (RNA_path_resolve_full(&id_ptr, dtar->rna_path, &ptr, &prop, &index)) { - if(RNA_property_array_check(&ptr, prop)) { + if(RNA_property_array_check(prop)) { /* array */ if (index < RNA_property_array_length(&ptr, prop)) { switch (RNA_property_type(prop)) { diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c index c02b5dda9ce..bd238e72d0c 100644 --- a/source/blender/blenkernel/intern/nla.c +++ b/source/blender/blenkernel/intern/nla.c @@ -1582,7 +1582,7 @@ void BKE_nla_tweakmode_exit (AnimData *adt) /* Baking Tools ------------------------------------------- */ -static void BKE_nla_bake (Scene *scene, ID *UNUSED(id), AnimData *adt, int UNUSED(flag)) +static void UNUSED_FUNCTION(BKE_nla_bake) (Scene *scene, ID *UNUSED(id), AnimData *adt, int UNUSED(flag)) { /* verify that data is valid diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index f6b40527637..927d406eb61 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -3399,7 +3399,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node) int driven, len=1, index; prop = (PropertyRNA *)link; - if (RNA_property_array_check(&ptr, prop)) + if (RNA_property_array_check(prop)) len = RNA_property_array_length(&ptr, prop); for (index=0; indeximat); transpose_m3(nmat); mul_m3_v3(nmat, nor); + normalize_v3(nor); /* make sure that we get a proper side vector */ if(fabs(dot_v3v3(nor,vec))>0.999999) { diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index d6a152a5280..3aebbea789f 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -699,6 +699,7 @@ void reload_sequence_new_file(Scene *scene, Sequence * seq, int lock_range) seq->len = 0; } seq->strip->len = seq->len; + break; case SEQ_SOUND: #ifdef WITH_AUDASPACE if(!seq->sound) diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 036ba34d0c8..493baebd197 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -1005,7 +1005,7 @@ void autotexname(Tex *tex) Tex *give_current_object_texture(Object *ob) { - Material *ma; + Material *ma, *node_ma; Tex *tex= NULL; if(ob==NULL) return NULL; @@ -1015,6 +1015,10 @@ Tex *give_current_object_texture(Object *ob) tex= give_current_lamp_texture(ob->data); } else { ma= give_current_material(ob, ob->actcol); + + if((node_ma=give_node_material(ma))) + ma= node_ma; + tex= give_current_material_texture(ma); } @@ -1080,17 +1084,6 @@ Tex *give_current_material_texture(Material *ma) tex= (Tex *)node->id; ma= NULL; } - else { - node= nodeGetActiveID(ma->nodetree, ID_MA); - if(node) { - ma= (Material*)node->id; - if(ma) { - mtex= ma->mtex[(int)(ma->texact)]; - if(mtex) tex= mtex->tex; - } - } - } - return tex; } if(ma) { @@ -1165,11 +1158,6 @@ void set_current_material_texture(Material *ma, Tex *newtex) id_us_plus(&newtex->id); ma= NULL; } - else { - node= nodeGetActiveID(ma->nodetree, ID_MA); - if(node) - ma= (Material*)node->id; - } } if(ma) { int act= (int)ma->texact; @@ -1198,16 +1186,8 @@ int has_current_material_texture(Material *ma) if(ma && ma->use_nodes && ma->nodetree) { node= nodeGetActiveID(ma->nodetree, ID_TE); - if(node) { + if(node) return 1; - } - else { - node= nodeGetActiveID(ma->nodetree, ID_MA); - if(node) - ma= (Material*)node->id; - else - ma= NULL; - } } return (ma != NULL); diff --git a/source/blender/blenkernel/intern/unit.c b/source/blender/blenkernel/intern/unit.c index b89e576a562..a9792bc44fa 100644 --- a/source/blender/blenkernel/intern/unit.c +++ b/source/blender/blenkernel/intern/unit.c @@ -136,7 +136,7 @@ static struct bUnitDef buImperialLenDef[] = { {"yard", "yards", "yd", NULL, "Yards", UN_SC_YD, 0.0, B_UNIT_DEF_NONE}, {"foot", "feet", "'", "ft", "Feet", UN_SC_FT, 0.0, B_UNIT_DEF_NONE}, /* base unit */ {"inch", "inches", "\"", "in", "Inches", UN_SC_IN, 0.0, B_UNIT_DEF_NONE}, - {"thou", "thous", "mil", NULL, "Thous", UN_SC_MIL, 0.0, B_UNIT_DEF_NONE}, + {"thou", "thou", "thou", "mil", "Thou", UN_SC_MIL, 0.0, B_UNIT_DEF_NONE}, /* plural for thou has no 's' */ {NULL, NULL, NULL, NULL, NULL, 0.0, 0.0} }; static struct bUnitCollection buImperialLenCollecton = {buImperialLenDef, 4, 0, sizeof(buImperialLenDef)/sizeof(bUnitDef)}; diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index 4db53999f10..fe7a7a18177 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -658,10 +658,12 @@ static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, Report switch(ffmpeg_type) { case FFMPEG_AVI: case FFMPEG_MOV: - case FFMPEG_OGG: case FFMPEG_MKV: fmt->video_codec = ffmpeg_codec; break; + case FFMPEG_OGG: + fmt->video_codec = CODEC_ID_THEORA; + break; case FFMPEG_DV: fmt->video_codec = CODEC_ID_DVVIDEO; break; @@ -1310,6 +1312,9 @@ void ffmpeg_verify_image_type(RenderData *rd) /* Don't set preset, disturbs render resolution. * ffmpeg_set_preset(rd, FFMPEG_PRESET_DVD); */ } + if(rd->ffcodecdata.type == FFMPEG_OGG) { + rd->ffcodecdata.type = FFMPEG_MPEG2; + } audio= 1; } diff --git a/source/blender/blenlib/BLI_ghash.h b/source/blender/blenlib/BLI_ghash.h index dcc71fa1258..e4afc6ad79b 100644 --- a/source/blender/blenlib/BLI_ghash.h +++ b/source/blender/blenlib/BLI_ghash.h @@ -53,14 +53,14 @@ typedef void (*GHashValFreeFP) (void *val); typedef struct Entry { struct Entry *next; - + void *key, *val; } Entry; typedef struct GHash { GHashHashFP hashfp; GHashCmpFP cmpfp; - + Entry **buckets; struct BLI_mempool *entrypool; int nbuckets, nentries, cursize; @@ -72,15 +72,15 @@ typedef struct GHashIterator { struct Entry *curEntry; } GHashIterator; -GHash* BLI_ghash_new (GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info); -void BLI_ghash_free (GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp); +/* *** */ -//BM_INLINE void BLI_ghash_insert (GHash *gh, void *key, void *val); -//BM_INLINE int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp); -//BM_INLINE void* BLI_ghash_lookup (GHash *gh, void *key); -//BM_INLINE int BLI_ghash_haskey (GHash *gh, void *key); - -int BLI_ghash_size (GHash *gh); +GHash* BLI_ghash_new (GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info); +void BLI_ghash_free (GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp); +void BLI_ghash_insert(GHash *gh, void *key, void *val); +void * BLI_ghash_lookup(GHash *gh, const void *key); +int BLI_ghash_remove(GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp); +int BLI_ghash_haskey(GHash *gh, void *key); +int BLI_ghash_size (GHash *gh); /* *** */ @@ -149,127 +149,10 @@ unsigned int BLI_ghashutil_strhash (const void *key); int BLI_ghashutil_strcmp (const void *a, const void *b); unsigned int BLI_ghashutil_inthash (const void *ptr); -int BLI_ghashutil_intcmp(const void *a, const void *b); - -/*begin of macro-inlined functions*/ -extern unsigned int hashsizes[]; - -#if 0 -#define BLI_ghash_insert(gh, _k, _v){\ - unsigned int _hash= (gh)->hashfp(_k)%gh->nbuckets;\ - Entry *_e= BLI_mempool_alloc((gh)->entrypool);\ - _e->key= _k;\ - _e->val= _v;\ - _e->next= (gh)->buckets[_hash];\ - (gh)->buckets[_hash]= _e;\ - if (++(gh)->nentries>(gh)->nbuckets*3) {\ - Entry *_e, **_old= (gh)->buckets;\ - int _i, _nold= (gh)->nbuckets;\ - (gh)->nbuckets= hashsizes[++(gh)->cursize];\ - (gh)->buckets= malloc((gh)->nbuckets*sizeof(*(gh)->buckets));\ - memset((gh)->buckets, 0, (gh)->nbuckets*sizeof(*(gh)->buckets));\ - for (_i=0; _i<_nold; _i++) {\ - for (_e= _old[_i]; _e;) {\ - Entry *_n= _e->next;\ - _hash= (gh)->hashfp(_e->key)%(gh)->nbuckets;\ - _e->next= (gh)->buckets[_hash];\ - (gh)->buckets[_hash]= _e;\ - _e= _n;\ - }\ - }\ - free(_old); } } -#endif - -/*---------inlined functions---------*/ -BM_INLINE void BLI_ghash_insert(GHash *gh, void *key, void *val) { - unsigned int hash= gh->hashfp(key)%gh->nbuckets; - Entry *e= (Entry*) BLI_mempool_alloc(gh->entrypool); - - e->key= key; - e->val= val; - e->next= gh->buckets[hash]; - gh->buckets[hash]= e; - - if (++gh->nentries>(float)gh->nbuckets/2) { - Entry **old= gh->buckets; - int i, nold= gh->nbuckets; - - gh->nbuckets= hashsizes[++gh->cursize]; - gh->buckets= (Entry**)MEM_mallocN(gh->nbuckets*sizeof(*gh->buckets), "buckets"); - memset(gh->buckets, 0, gh->nbuckets*sizeof(*gh->buckets)); - - for (i=0; inext; - - hash= gh->hashfp(e->key)%gh->nbuckets; - e->next= gh->buckets[hash]; - gh->buckets[hash]= e; - - e= n; - } - } - - MEM_freeN(old); - } -} - -BM_INLINE void* BLI_ghash_lookup(GHash *gh, const void *key) -{ - if(gh) { - unsigned int hash= gh->hashfp(key)%gh->nbuckets; - Entry *e; - - for (e= gh->buckets[hash]; e; e= e->next) - if (gh->cmpfp(key, e->key)==0) - return e->val; - } - return NULL; -} - -BM_INLINE int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp) -{ - unsigned int hash= gh->hashfp(key)%gh->nbuckets; - Entry *e; - Entry *p = NULL; - - for (e= gh->buckets[hash]; e; e= e->next) { - if (gh->cmpfp(key, e->key)==0) { - Entry *n= e->next; - - if (keyfreefp) keyfreefp(e->key); - if (valfreefp) valfreefp(e->val); - BLI_mempool_free(gh->entrypool, e); - - - e= n; - if (p) - p->next = n; - else - gh->buckets[hash] = n; - - --gh->nentries; - return 1; - } - p = e; - } - - return 0; -} - -BM_INLINE int BLI_ghash_haskey(GHash *gh, void *key) { - unsigned int hash= gh->hashfp(key)%gh->nbuckets; - Entry *e; - - for (e= gh->buckets[hash]; e; e= e->next) - if (gh->cmpfp(key, e->key)==0) - return 1; - - return 0; -} +int BLI_ghashutil_intcmp (const void *a, const void *b); #ifdef __cplusplus } #endif -#endif +#endif /* BLI_GHASH_H */ diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h index 9af55601ff7..28ebb254f2a 100644 --- a/source/blender/blenlib/BLI_utildefines.h +++ b/source/blender/blenlib/BLI_utildefines.h @@ -183,6 +183,12 @@ # define UNUSED(x) UNUSED_ ## x #endif +#ifdef __GNUC__ +# define UNUSED_FUNCTION(x) __attribute__((__unused__)) UNUSED_ ## x +#else +# define UNUSED_FUNCTION(x) UNUSED_ ## x +#endif + #ifdef __GNUC__ # define WARN_UNUSED __attribute__((warn_unused_result)) #else diff --git a/source/blender/blenlib/intern/BLI_ghash.c b/source/blender/blenlib/intern/BLI_ghash.c index ff08ef4dba9..bfee350037a 100644 --- a/source/blender/blenlib/intern/BLI_ghash.c +++ b/source/blender/blenlib/intern/BLI_ghash.c @@ -49,8 +49,6 @@ unsigned int hashsizes[]= { /***/ -/***/ - GHash *BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) { GHash *gh= MEM_mallocN(sizeof(*gh), info); gh->hashfp= hashfp; @@ -67,14 +65,96 @@ GHash *BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) { return gh; } -#ifdef BLI_ghash_insert -#undef BLI_ghash_insert -#endif - int BLI_ghash_size(GHash *gh) { return gh->nentries; } +void BLI_ghash_insert(GHash *gh, void *key, void *val) { + unsigned int hash= gh->hashfp(key)%gh->nbuckets; + Entry *e= (Entry*) BLI_mempool_alloc(gh->entrypool); + + e->key= key; + e->val= val; + e->next= gh->buckets[hash]; + gh->buckets[hash]= e; + + if (++gh->nentries>(float)gh->nbuckets/2) { + Entry **old= gh->buckets; + int i, nold= gh->nbuckets; + + gh->nbuckets= hashsizes[++gh->cursize]; + gh->buckets= (Entry**)MEM_mallocN(gh->nbuckets*sizeof(*gh->buckets), "buckets"); + memset(gh->buckets, 0, gh->nbuckets*sizeof(*gh->buckets)); + + for (i=0; inext; + + hash= gh->hashfp(e->key)%gh->nbuckets; + e->next= gh->buckets[hash]; + gh->buckets[hash]= e; + + e= n; + } + } + + MEM_freeN(old); + } +} + +void *BLI_ghash_lookup(GHash *gh, const void *key) { + if(gh) { + unsigned int hash= gh->hashfp(key)%gh->nbuckets; + Entry *e; + + for (e= gh->buckets[hash]; e; e= e->next) + if (gh->cmpfp(key, e->key)==0) + return e->val; + } + return NULL; +} + +int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp) +{ + unsigned int hash= gh->hashfp(key)%gh->nbuckets; + Entry *e; + Entry *p = NULL; + + for (e= gh->buckets[hash]; e; e= e->next) { + if (gh->cmpfp(key, e->key)==0) { + Entry *n= e->next; + + if (keyfreefp) keyfreefp(e->key); + if (valfreefp) valfreefp(e->val); + BLI_mempool_free(gh->entrypool, e); + + /* correct but 'e' isnt used before return */ + /* e= n; */ /*UNUSED*/ + if (p) + p->next = n; + else + gh->buckets[hash] = n; + + --gh->nentries; + return 1; + } + p = e; + } + + return 0; +} + +int BLI_ghash_haskey(GHash *gh, void *key) { + unsigned int hash= gh->hashfp(key)%gh->nbuckets; + Entry *e; + + for (e= gh->buckets[hash]; e; e= e->next) + if (gh->cmpfp(key, e->key)==0) + return 1; + + return 0; +} + void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp) { int i; diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c index 3d6888d87dc..69b7fff3607 100644 --- a/source/blender/editors/armature/poseSlide.c +++ b/source/blender/editors/armature/poseSlide.c @@ -1000,7 +1000,7 @@ static short pose_propagate_get_refVal (Object *ob, FCurve *fcu, float *value) /* resolve the property... */ if (RNA_path_resolve(&id_ptr, fcu->rna_path, &ptr, &prop)) { - if (RNA_property_array_check(&ptr, prop)) { + if (RNA_property_array_check(prop)) { /* array */ if (fcu->array_index < RNA_property_array_length(&ptr, prop)) { found= TRUE; diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c index aa358275335..a3343496be7 100644 --- a/source/blender/editors/datafiles/splash.png.c +++ b/source/blender/editors/datafiles/splash.png.c @@ -1,6314 +1,6405 @@ /* DataToC output of file */ -int datatoc_splash_png_size= 201866; +int datatoc_splash_png_size= 204738; char datatoc_splash_png[]= { -137, 80, 78, 71, 13, 10, 26, 10, 0, 0, - 0, 13, 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 2, 0, 0, 0,135, 56, 89, 17, 0, 0, 10, 79,105, 67, 67, 80, 80, -104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218,157, 83,103, 84, 83,233, 22, 61, -247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, 16, 74,136, 33,161,217, 21, 81, -193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33,162,142,131,163,136,138,202,251, -225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150, 72, 51, 81, 53,128, 12,169, 66, - 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, 1, 0,248,126, 60, 60, 43, 34, -192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1,128,132, 1,192,116,145, 56, 75, - 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, 99, 98,227, 0, 80, 45, 0, 96, - 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, 68, 0,104, 59, 0,172,207, 86, -138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0,192,206, 16, 11,178, 0, 8, 12, - 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60,241, 43,174, 16,231, 42, 0, 0, -120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97, 2, 97,154, 64, 46,194, -121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174,206,206, 54,142,182, 14, 95, 45, -234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179, 26,128, 59, 6,128,109,254,162, - 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126, 60, 60, 69,161,144,185,217,217, -229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252,247,245,224,190,226, 36,129, 50, - 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11,255,252, 29,211, 34,196, 73, 98, -185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255,100,226,223, 44,251, 3, 62,223, - 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0,242,187,111,193,212, 40, 8, 3, -128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, 46, 84,202,179, 63,199, 8, 0, - 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, 66, 36,196,194, 66, 16, 66, 10, -100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104,134,147,112, 14, 46,194, 85,184, - 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98,138, 88, 35,142, 8, 23,153,133, -248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29,242, 61,114, 2, 57,135, - 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185,168, 55, 26,132, 70,162, 11,208, -100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62, 67,199, 48,192,232, 24, 7, 51, -196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172, 3,187,137,245, 99,207,177,119, - 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52, 17,218, 9, 55, 9, 3, -132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, 18,143, 19, 47, 16,123,136, 67, -196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233, 44,169,155, 52, 72, 26, 35,147, -201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242, 91, 10,157, 98, 64,113,164,248, - 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168,161, 84, 17, 53,143, 90, 66,173, -161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104, 23,104,247,105,175,232,116,186, - 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199,136,103, 40, 25,155, 24, 7, 24, -103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111, 85, 88, 42,182, 42,124, 21,145, -202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143,169, 94, 83,125,174, 70, 85, 51, - 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111, 84, 63,164,126, 89,253,137, 6, - 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13,171,134,117,129, 53,196, 38,177, -205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243,148,102, 63, 7,227,152,113,248, -156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, 92,107,170,150,151,150, 88,171, - 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, 92, 39, 71,103,143,206, 5,157, -231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191,110,167,238,152,158,190, 94,128, -158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179, 12, 36, 6,219, 12,206, 24, 60, -197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145,185,209, 60,163,213, 70,141, 70, - 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, 82, 77,185,166, 41,166, 59, 76, - 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183, 96, 90,120, 90, 44,182,168,182, -184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173,157,173, 37,214,187,173,187,167, - 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219,174,182,109,182,125, 97,103, 98, - 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, 29,126,115,180,114, 20, 58, 86, - 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203, 41,196,105,157, 83,155,211, 71, -103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228, 74,116,245,113, 93,225,122,210, -245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89, 51,115,208,195,200, 67,224, 81, -229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87,173,215,176,183,165,119,170,247, - 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183,203, 79,195,111,158, 95,133,223, - 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248,122,124, 33,191,142, 63, 58,219, -101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144,173, 33,247,231,152,206,145,206, -105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142,112,136, 88, 26,209, 49,151, 53, -119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, 46,106, 60,218, 55,186, 52,186, - 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252,237,243,135,226,157,226, 11,227, -123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, 78, 56,148,240, 65, 16, 42,168, - 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, 30, 78,242, 72, 42, 77,122,146, -236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158, 22,154,118, 32,109, 50, 61, 58, -189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178,254,197,110,139,183, 47, 30,149, - 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87,102,191,205,137,202, 57,150,171, -158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75, 87, 45, 29, 88,230,189,172,106, - 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171,237, 87,151,174,126,189, 38,122, - 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79, 88, 47, 89,223,181, 97,250,134, -157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153,220,148,180,169,171,196,185,100, -207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223, 86,180,237,245,246, 69,219, 47, -151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84,244, 84,250, 84, 54,238,210,221, -181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85, 1, 85, 77,213,102,213,101,251, - 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253, 7, 35, 14,182,215,185,212,213, - 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141,156,198,226, 35,112, 68,121,228, -233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66,154,242,154, 70,155, 83,154,251, - 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, 84,201,105,218,233,130,211,147, -103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111,239,186, 16,116,225,210, 69,255, -139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234,116,234, 60,254,147,211, 79,199, -187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189,121,241, 22,255,214,213,158, 57, - 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238,173,188, 79,188, 95,244, 64,237, - 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6,133,131,207,254,145,245,143, 15, - 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207,100,207, 38,158, 23,254,162,254, -203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253,234,192,235, 25,175,219,198,194, -198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124, 32,127, 40,255,104,249,177,245, - 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0, -249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, 0, 0, 7,116, 73, 77, - 69, 7,219, 6, 21, 16, 50, 48,139, 37,211,236, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,105,148, 93,215,117, 30,184,135, -115,135, 55,215,171, 1, 19, 1, 2, 40, 78, 18, 73,137,166, 65, 41, 22,101,205,160, 90, 67,162, 88,138, 1,183,149,216, 89,113, - 98, 32,238,100,181,148,172,101, 3, 29,219,105,199, 75,178, 72,175,229, 33,113,187, 19,194, 67, 71,109, 39,110, 17,146, 45,219, -138,221, 22,161,182, 45,107,176, 45, 66,150,100, 81,226, 0, 20, 49,213,128, 26,222,171, 55,223,225,156,189,251,199,121, 85,134, - 1, 18, 4, 41,208, 36,237,251,253, 32, 11, 85,119, 56,247,220,123,191,253,157,111,239,123, 14, 64,129, 2, 5, 10, 20, 40, 80, -160, 64,129, 2, 5, 10, 20, 40, 80,160, 64,129, 2, 5, 10, 20, 40, 80,160, 64,129, 2, 5, 10, 20, 40, 80,160, 64,129, 2, 5, - 10, 20, 40, 80,160, 64,129, 2, 5, 10, 20, 40,240,210, 7,191, 64,199,125,239,119,236,254,207,255,226,222, 67,111,191, 45,119, -242,151,103,219, 69, 71, 23, 40, 80,160,192,223, 6,126,127,203,171,182,253,222,191,249,142,221,152,237,154,170,191,239,190, 59, -111,217, 86,253,244, 95, 92,200,172, 20,221, 93,160, 64,129, 2,127, 99,160, 23,226,160, 21,200, 96,241,204,104,241,252,240,212, - 55,135, 79, 60,249,254, 55,220,250,181, 95, 56,112,235, 13,141,162,187, 11, 20, 40, 80,224,229,173,223,159, 92, 25, 37, 0,239, -188,163,169, 86, 93,175,107,123,189,153,109, 91,255,213,119,221,253,232,185,181,111,158, 95, 47, 58,189, 64,129, 2, 5, 94,174, -252, 14, 0,159,155,235,255,249,252,232,192,183, 79,197,108,242,209,200,173,183, 32, 42,127,239, 59,239,158, 40,243, 31,253,229, -130, 19, 45,186,190, 64,129, 2, 5, 94, 80,224, 11,122,244,155,102,162,223,251, 23,183,221, 90, 11,134,195, 28,152,105,199,158, -120,215,174,175,158, 94,250,174, 15,253,254,153,139,189, 23,247,202,247,237,219,215,108, 54, 1, 96,110,110,110,110,110,238,101, -113,183, 94,142,109, 46, 80,160,192,223, 78,126, 7,128, 74, 72,191,254,125,123,223, 51,219, 72, 70, 14, 64,112,235,206,210,141, -123, 51,149,191,255,147,159,122,248,203, 23,158,247, 97,103,103,103,103,103,103,175,178, 65,187,221, 62,121,242,228, 85, 54,120, -248,225,135,247,239,223, 15, 0, 71,143, 30,125,224,129, 7, 94, 22,119,235,165,217,230,125,251,246,237,223,191,191,217,108,238, -219,183,207,255,230,228,201,147,115,115,115,199,143, 31,111,183,159,115,233,212,165,199,185, 58,158,245, 22, 23, 40,240,119, 28, -230, 57,239,192, 24, 25,186, 50, 74,168,255, 63,254, 85,196, 64, 68, 68, 0,192, 15,254,238, 82,116, 48,126,251,174,122,150, 43, -180,215,146,114, 53,152,218,250,233, 15,189,247,223,255,250,159,126,228, 99,143, 88,247,124,188,154, 3, 7, 14,220,127,255,253, -207,186,217,241,227,199, 79,156, 56,113,236,216,177,226, 78,191, 16,180,126,224,192,129, 3, 7, 14, 92, 25,104,125, 16,122,240, -193, 7,143, 29, 59,118,244,232,209,231,196,242,251,246,237,123,248,225,135,175,101,203, 19, 39, 78,220,119,223,125,197,141, 40, - 80,224, 58,240, 59, 33, 30,122,221,182, 31,125,235,141,211,213, 80,144, 0, 17,136,128, 8, 16,209,240,230,207, 64,132,204,227, -159,145,128,200, 41,166, 2, 54, 12,104, 99, 47,235,114, 25,225, 79,126,255,235,223,118,247,174, 3, 31,254,253,149,245,209, 11, -116,121, 7, 54,112,240,224,193,231,161, 37, 11, 92, 5,143, 60,242,200,179,110,115,232,208,161,253,251,247, 31, 60,120,176, 16, -218, 5, 10,188,164,249,253, 3,111,218,241,179,239,185, 57, 27,138, 10, 50, 33, 0,129, 34, 40, 2, 16, 10,130, 2, 40, 0, 33, - 8,128, 40, 48, 32, 34, 16,128, 2, 35, 6,140,170, 94,226,251, 45, 85, 16,211, 97,246,166, 59,118, 61,246, 75,223,119,223,191, -251,173, 47, 63,185,242,188,175,225,196,137, 19, 87,254,210, 75,200,205,159, 31,126,248,225,251,238,187,175,160,248, 23, 2, 39, - 79,158, 60,126,252,248,201,147, 39,253,141,104, 54,155,251,247,239,247,204, 14, 0,179,179,179, 15, 61,244,208, 61,247,220,243, - 60, 58,255,216,177, 99, 87, 73, 51, 20,119,179, 64,129,235,195,239,132,240, 67,175,219,166,131, 60, 79, 82, 16, 65,244, 70, 12, - 2, 2, 32, 0,226,216,164, 97,162,169, 45, 64, 8, 34, 72, 0, 66, 0, 2, 8,224,153,158, 4, 68,129, 8, 28, 0, 3, 32,100, -105,222,140,162,147,191,240,143,127,232, 23, 63,243,224,167,190, 62,142, 1,207, 17,207, 52, 72,247, 30,142,119, 15,246,237,219, -119,232,208,161,151,139,207,254,114,193,177, 99,199,142, 29, 59,118,153, 54,111,183,219,199,143, 31, 63,126,252,248,131, 15, 62, -120,232,208, 33, 79,241,207,175,243,189,189, 86,244,115,129, 2,207, 15,215,250,125,147, 40,252,204,103,231,145,210, 74,232, 42, - 37, 40,199, 90,142,181, 28,203,248,135, 72, 98,202,192,229, 24,149, 1, 17, 68, 64,228, 18,178,206, 64, 18,144, 17,104, 2,144, -130, 36,160, 25,136,128,168,170,228, 78,108,234,254,243, 7,222,254,208,143,191,187, 28, 5,215,241,218,142, 31, 63,126,169,102, - 63,112,224, 64,113,191,175, 35,238,187,239,190,195,135, 15, 95,197,120, 57,124,248,240,166,250, 62,114,228, 72,209, 99, 5, 10, -188,116,253,153, 7, 63,191,244,153,199,219, 55,207, 68, 8, 40, 27,220,237, 11,217, 83, 43,175,187,169,113,228, 29,183,149,131, -146,136, 0, 51, 32,128,136,102,125,100,164, 93,119,209,204,205, 88,223,134,113, 29,108, 42,131, 21,237, 45,202,202, 19, 96, 71, -128, 37, 5,231, 20,164,159,125,247, 27, 94,177,119, 71,227, 77, 31,124,104,144,228,215,235,242,124, 21,135, 87,145,215, 88,149, -113, 25, 46, 43, 11,121, 30,158,192,102,169,207,181, 23, 53, 62,143, 93,174, 99,155, 55,207,126,245,125,175, 69, 89, 31, 59,118, -204,167,193,125,147, 10, 23,190, 64,129,151, 40,191, 3,192,169,213,244,212,106,122,229,239, 95,189,171,254, 79, 94, 55, 91,229, -200,138, 2, 33, 36,137,166, 3,112, 3,190,245, 13,230,158,247,243,222,239,184,114,200,160,173, 51,246,244,103,220,217,207, 35, -135,160,170, 8,217, 48,219,119,211,246,223,251,169,247,237,255,145,227,249,245,155,172,230,249,213,137, 55,155,205, 67,135, 14, - 29, 56,112,224,178,168, 48, 55, 55,231, 77,137, 43,137,239,254,251,239,247, 27, 31, 63,126,252,216,177, 99,254, 8,135, 14, 29, -186,180,188,100,110,110,238,129, 7, 30,184, 74, 61,207,161, 67,135,142, 28, 57,114,217, 46,207,116,198,111,177,205, 87, 54,248, -200,145, 35,135, 14, 29,242, 37,246,112, 61, 10, 84, 46, 37,244,205,195, 22, 40, 80,224,101,131,195,111,222,169,191,248,118,251, -115,111, 31,254,236,219, 7, 15,188,169,255, 31, 94,211,255,241, 87,247,255,195,171,242, 47,253,119,125, 54,216,115,127,158,124, -226, 80,242,201,195,201, 39,255,117,250, 59,255,107,250,219, 31,208, 63, 60,242,161,127,118,239,179,158,244,200,145, 35,155, 7, -185,250,150,247,223,127,191,223,172,213,106, 93,250,251,135, 31,126,216,255,254, 74,235, 96,255,254,253,173, 86,235, 42,205, 62, -125,250,244,149,163,129, 75, 15,184,111,223,190, 71, 30,121,228,153,118,127,240,193, 7,159,150,157, 31,122,232,161,103,218,229, -145, 71, 30,105, 54,155,215,183,205,151, 53,248,202,221,175,177, 78,241, 42,216,191,127,255,230,209, 46,205,120, 95,223, 93, 10, - 20, 40,112, 29,244,251,101, 40,135,252, 11,223,115,235, 15,188,246,134,116, 36,206,229,144,142,192,230,128,138, 1, 68,239,253, - 8,223,249,110,191, 89,119,148,254,193, 87,206,252,193, 87,207,180,250,163,128,241,149, 59, 38,223,115,207,205,223,126,211,118, - 0,224, 93,175,193,176,150,127,238,103, 32, 52, 0, 10,132,182,159,254,232,251,239,253,175,159,254,198,169,249,235, 48, 83, 77, -179,217,220,180,221,175, 49, 83,119,224,192,129,135, 30,122,232, 82, 5,122,226,196, 9,175,124, 55,165,241,236,236,172, 47,200, -121, 90,195,193, 51,181,215,224,190,176, 4, 54,170,197, 55, 69,186, 23,242,151,197,161, 75, 51, 4,155, 59,250,147,238,219,183, -239,210, 86, 93,223, 54,251,200,225,245,245,230, 71, 67, 87,255,124,236,218,249,253,105,181,252,223,164, 63, 86,160, 64,129,231, -140, 91,182,148,158,252,241,191,167, 63,251,214,225,253,111, 25,124,248,222,193, 79,236, 27,252,196,190,193, 79,222, 51,248,247, -175,204, 62,243, 51,155, 18,236,139, 79, 44,124,231,255,254,177, 29,255,234,151,103,255,237, 71,111,251,145, 95,123,229, 15,255, -218,109,255,230, 87,239,248,192,177,163,191,246,153, 65,146,141, 85,252, 99,159, 78,126,227,123,211, 79,125, 48,253,212, 7,210, - 79,125, 80, 63,253,195,255,227,195,239,251,214,245,251,101,138,248, 50, 49,248,180, 90,120,118,118,118, 83,198,158, 62,125,250, - 74,253,120,169, 76,190,172, 0,124,243,128, 30, 15, 61,244,208,101,142,196,236,236,236,166,168,111,181, 90,151,254,245,208,161, - 67,151, 74,245,203,184,245, 74,109,126, 93,218,124, 89,131, 79,159, 62,125, 89, 10,250, 91,119, 84, 78,159, 62,253,180,125,117, -141,250,253,202, 33,197,233,211,167, 55,107,162, 10, 20, 40,240,130,232,247,119,220,222,252,228, 63,187,221,136, 25,166, 57,184, - 12,156, 5, 66, 64, 0,117, 56,189,203,188,246,251,253,102, 79, 46,181,191,255, 23,255, 96,121,100,203,149, 82,206, 28, 4, 28, - 50,178,134,232,236, 39,254,236, 20, 19,125,232,253,111, 6, 0,190,249, 45,238,241,255, 23, 92, 31, 76, 9, 16,108,150,239,191, -251,198,237, 83,149,197,181,193,181, 52,230,105,107, 51,246,239,223,127, 41,211, 29, 62,124,248, 90,244,251,131, 15, 62,184, 41, - 99,159,182,100,219, 91,210, 94,237,250,154,203,167, 53,211, 79,156, 56,113,240,224,193,203,126, 57, 55, 55,119,244,232, 81,111, -122,248, 34,241,227,199,143, 95,118, 9,115,115,115, 87,214,233,251,147, 62, 19, 69, 94,151, 54,207,205,205, 93,185,239,183, 40, -150, 47, 77, 36, 60,191, 79,136,175, 12, 48,179,179,179, 71,142, 28, 57,114,228,200,203,104, 86,137, 2, 5, 94, 54,252, 30, 48, -126,232,221,187,127,228,205, 55,164, 9,164,152,131,228,128, 10, 1, 1, 0, 32,104,158,153, 91,223,136,213,105,191,241,209,255, -246,249, 39, 47,116,160, 81,237,244, 45,160, 99,132, 50,227,116,197, 52, 75,166,209,168,126,242,207,159,124,243, 29,187,247,223, -181, 23,216,240,236, 27,237, 87, 62,138, 51,123, 64, 69, 16,195, 82,248, 15,239,189,233,191,252,238,215,174,165, 73, 87,159,168, -224,216,177, 99,215, 88, 70,237,231, 81, 25,183,252,153,191,170, 63,121,242,228,177, 99,199, 60, 35,239,223,191,255,105,153,235, -240,225,195, 79,187,239,137, 19, 39, 78,158, 60,185,105,152,108,186, 43,155, 63, 63,240,192, 3, 79,123, 94,127, 82, 95, 8,244, - 66,180,249,153,206,251,188,177,111,223,190,205,251,226,207,254, 92,143,224, 39,177,217,116,117, 54,103,185,217,188,233,179,179, -179,207,212,207, 5, 10, 20,128,231,186,190,199,206,137,240,243,255,250,142, 31,121,253,246,225,208, 57,112, 32, 57, 16, 0, 35, - 50,162, 65,100, 66,131,180,227, 78,191,241, 83, 23,215,127,255, 43,231,160, 92, 2, 63, 93, 1,179, 3,234,165,238,169,149,225, -220,242, 48, 87, 20,230,207,252,229, 89,191, 49, 78,223,172,163, 46,128, 5, 4, 64, 5, 43,175,189,109,219,117,185, 66,111, 64, - 95,139,213,176, 73,148,237,118,251,234,124,180, 25, 45,158,182,166,222, 19,211, 85,104,235,178,211, 93, 58,206,184,202,121, 55, -197,254,117,111,179, 47,176,185,142, 79,149,247,250, 55, 27,246,156, 88,184,221,110, 31, 61,122,244,166,155,110,186,231,158,123, - 14, 30, 60,248,192, 6, 14, 30, 60, 56, 57, 57,121,105, 12,243,197, 66,197, 59, 92,160,192,117,208,239,175,159,173,125,230,159, -223, 22, 8, 15, 51, 1, 86, 80, 65, 5, 20, 84, 70, 32, 4, 68, 0, 69, 19, 82,243, 70,191,253,153,149,238,104,152, 67, 61,242, - 95,184,250, 25,200,128, 8, 84,215,251,121,158,217,157, 13,211,219, 40,117,199,218, 86, 0,134,116,136,165,154,130,130,181,119, -205, 78, 19,161, 92,195, 76,241, 71,143, 30,125, 90,138,217,191,127,255,236,236,108,179,217,244,169,203,103,157,159, 96,147, 43, -159, 53, 19,120,233,104,224,202,178,238,171,143, 21,174,164,254, 77,241,126,245, 29,175, 62, 13,195,183,210,230,235, 91,150,238, -211, 30,155, 1,245,232,209,163,207,233,248, 39, 79,158,188,202,246, 15, 60,240,192,137, 19, 39, 54,173,170,251,239,191,255,105, -195, 94,129, 2, 5,174,149,223,153,240,223,190,113,235, 79,191,125,103,150, 65, 18, 8, 18,168, 83,204, 37, 12,169,109, 93, 5, - 8, 12,251,149, 66, 16, 0,212,250,189,182, 52,202, 28, 6, 78, 0, 20, 65, 21, 20, 0, 20, 20, 64, 17,152, 6,195,252,108,146, - 68,119,109, 52, 64, 29,104, 14, 54, 1,170,163,138,138,236,104,198, 1, 83, 42,238, 89,155,119, 21, 31,214,123,181,222,119,126, -248,225,135,239,185,231,158,171, 91, 10, 87,202,207,107,161,179, 43, 21,232,115,186, 7,215,206,209,155,222,206,245,109,243,117, -228,119, 95,138,179,217,170,195,135, 15, 95,247,201, 59, 79,158, 60,121,244,232, 81,111,254,204,206,206, 30, 56,112,160,160,248, - 2, 5,158, 39,191, 55, 74,252,241,127, 50,187,127,119,125,148, 9, 68, 6, 9, 52, 23,147, 75, 88,226, 31,252,228,153,217,169, -232,232, 27,182, 39, 10,232, 37,124,158,203,234, 41,218,245, 26, 0,120,229, 13, 83,127,239,150, 45, 95,248,230, 10, 24, 3,138, - 64, 10, 10,224,191, 91, 18, 4,196,164, 53,184,101,219,152,104,180,187, 0,105, 87,211,137,141,233,199, 20, 20,240, 91,158,157, -222, 83,191,231,130,171,164, 67, 47, 99,189,103,157, 92,254, 5,194,179, 6,134, 43, 55,120,209,219,124, 21,114, 63,122,244,232, - 11, 52, 51,243,230,103,177,112,157,234, 56, 11, 20,248,187,200,239,119,237, 40,255,238,247,221,180,171, 18, 14, 5,177,204, 0, -160,153,196,162, 73, 8,239,249,232, 19,127,240,205,206,135,222,121, 3,122, 34,102, 4, 4, 48,164, 23,191, 14, 99, 39, 6,127, -236,189,247,188,235, 27,159,130, 36,135, 40, 4, 69, 0, 0, 1, 16, 0, 21,232, 15,239,190,253,134,239,123,211, 29,126, 99, 89, -254,166,106,142, 46, 3, 16, 80, 37,212,197,214, 32,187, 30, 95,177, 62,240,192, 3,155, 92,112,224,192,129,107, 97,156,231, 52, - 43,192, 75,164, 34,251,165,208,230, 75,201,253,216,177, 99, 47, 92,125,139, 47,210,247,231,218,191,127,127, 81, 72, 83,160,192, -115,227,119, 4,248,129,215, 78,253,210,123,246, 88, 11, 67, 67, 24,145,138,234,200, 85, 12, 62, 62,200,255,193,175, 60,241,228, -114, 2, 0,167, 86, 83, 64,213,177,126, 7,136,203,238,204,231, 76,251, 12, 54,247, 0,192, 59,239,222,115,236,135,222,242,193, - 95,249,147,225,122, 10,113, 4, 76,160, 10, 89, 14,195,209,183,191, 98,235,199,127,248,221,149, 56, 0, 0,200, 71,238, 27,159, -192, 48, 2,116,160,162,226,128,232, 47,158, 90,145,235,180, 76,235,137, 19, 39,188, 7,114,141,223, 67,190,160,220,244, 2,225, - 69,111,243,131, 15, 62,120, 41,185,191,208,149, 45,197,135, 78, 5, 10, 60, 43,158,177,126,230,208,235,102,126,249,187,246, 36, - 22,242,178,193, 18,171, 0, 12, 93, 37,230,223, 60,213,121,237,207, 63,234,201, 29, 0, 30, 93, 30, 1, 33,248, 53,152,152,192, - 24,176,253,252,115, 63,183,121,156, 31,124,219, 29, 95,252,200,119,127,240,239,191,106,239,100, 20,107, 94, 37,119,239, 45,211, -255,199,255,242,214,207,126,248,192,222,173, 13,191,141,253,210, 47,235,250, 25, 8, 34, 69, 4, 80,176, 14, 8, 79, 62,185,252, - 55,220, 23, 87, 86,182,188,212,206,123,229, 6, 47, 86,155,175, 36,247,205,218,205,191, 1,114, 47, 80,160,192,243,215,239,229, -144,126,234, 45,219,179, 68,160, 26, 96,136,154, 41, 39, 54,170,240, 79,127,118,233,199,254,199,249,252,146, 21,245, 30, 93, 28, -157,239,100,219,170,161, 83, 29,207, 5, 95, 42,203,185,207,218,207,255,188,121,253, 7,253, 54,175,222, 61,253,115, 63,240,198, -143,124,159, 93,106, 13,194,192,236,152,172, 92,122, 46,247,141,223,182, 95,251, 53,136,203, 0,128,196,234, 4,157,228, 73,250, -169, 63, 61,115,189, 46,242, 26, 45,218, 75,135,252,205,102,243,111, 76, 33,206,205,205,249,243, 94,125,134,203,167,253,235,139, -213,230, 23,157,220,175, 61, 41, 93,160, 64,161,223,255, 26,166, 43,166, 25,177, 21, 80,167, 58,116, 97,230, 48,194,131,191,113, -234,200,239,156,203,255,250,114,169,195, 76,126,225, 79,151, 3, 3,154, 56, 0, 69, 2,100,194,114,205,125,237,255,206, 79,252, -152, 14, 87, 55,183,140, 3,179,103,107,227,175,145,123, 62,114,127,246,127,218, 63,249, 48, 70, 33, 50, 35, 2, 4, 17,228, 54, - 32,248,189, 71,206,156, 91,238, 95, 47,114,223,228,247,171,115,193,165, 21,132, 87,126, 73,244,194, 97,243,188,254,163,214,107, - 23,239, 47, 98,155, 95, 92,114,191,244, 74,159,223,252,160, 5, 10,252,221,229,247,165, 94,126, 38,177,229, 50,151,115, 87,102, -232,145,188,241,191, 60,118,252,100,235,105, 55,254,229, 47,174,116,114,103,114, 7,185,128, 95,147,143, 17, 42, 53, 57,253,251, -217, 39,190,223, 61,250, 9,237,206, 95,182,139, 14, 86,228,244,137,236,183,126,192,254,197, 47, 65, 28, 3, 27, 64, 5, 68,164, - 0,147, 28, 88,255,183,255,250,165,235,114,121,190, 22,123,243,159, 87, 47,164, 59,126,252,248,165,235, 81, 60,191,249,226,159, - 7,142, 31, 63,190,169,187,159,105, 29, 12, 63,121,239, 75,167,205, 87,146,187, 47, 91,124, 78,113,247,200, 6, 54, 67,215,181, -124,134,230, 63,104,240, 63,251,181,162,138,215,184, 64,129,231,192,239,153,213, 55, 63,248,196,127,124,100,229,227,115,221, 35, - 39,230,111,251,200, 95,254,217, 83,207,168,166,219, 67,251,131, 31, 63, 27, 68,172,125,171,185, 0, 32, 32, 2, 34,148,235, 96, - 59,249,231,126, 42,251,196,251,179,223, 57,108, 63,247,211,246, 79,255,147,253,194,207,100,191,247,129,236,227,223,155,159, 56, -170,253, 51, 80,105, 0, 17,248, 58, 72, 33, 77, 49,136,233, 35, 15,253,197, 55,207,127,171,147, 71,250, 53,225, 30,121,228,145, - 77,202,123,214, 47, 60,225,146,121, 5,124,169,223, 85,212,244, 38, 61,125,235,247,160,221,110,111,166, 70,247,239,223,127,229, -236,193,151,206,239,248, 18,105,243,149,228,254, 92,151,183,157,157,157,189,127, 3,155,247,200,127,166,112,149,175, 82,253, 6, -155, 93,113,221,167, 85, 40, 80,224,111, 19,158,177,126,230, 92, 43,253,224,111,158,189,198,163,124,252,203,107, 63,191,183,250, -193, 55,108, 27,117, 51,172,135, 16, 17, 16, 2, 40, 4, 1, 6, 1,168,232,218, 87,237,242, 73, 0, 5, 0, 36, 3, 38,132, 74, -245, 18, 61, 15,144, 57,149, 82, 28,133,127,248,181, 11, 63,241,223,191,242,156,174,225, 26, 87,109, 61,124,248,240,179,114,193, -137, 19, 39, 14, 31, 62,236, 25,214,211,229,137, 19, 39,252,164, 49,151,186, 61,251,247,239,247,148,244,156, 20,235, 85,112,236, -216,177,205,137,124,253,202,212,155,235,154,250,181,170,155,205,230,220,220, 92,187,221,190, 82,161,191, 40,109,246,173,186,244, - 55, 87,153,190,120,115,168,113, 45,197,169,126, 98,184,185,185,185, 19, 39, 78, 92, 54,255,204,165,115, 44,251,160, 82, 84, 70, - 22, 40,240,124,248,253,185, 49, 44,192,143,124,242,220,150,122,240,254,187,166,146, 78, 6,181, 0, 99, 30, 87,196, 3, 0, 18, -132, 49, 62,211,158,162,144, 58,233,102,165,237, 91, 79,158, 89,121,223, 79,253, 81,118,253, 22,111,218, 36,130,171,175, 20,122, - 25,213, 2,192,253,247,223,239, 69,226,101,243, 80,190, 64,104,183,219, 7, 15, 30,124,248,225,135,125,170,192,107,219, 43, 55, -120,166,153,212, 94,148, 54, 95, 38,171,159,117,155,231,180, 82,182, 31,126, 93,253, 54, 93,175,224, 90,160,192,223, 45,127,230, -121, 32,119,250, 79, 63,122,250,167,255,104, 49, 14, 41,232,230,210,201, 33, 17,176, 0, 10, 8,120, 57, 0, 17, 16, 28, 64, 38, -218,181,216, 78, 75,205,137,223,252,218,202, 91,126,244,211,235,131,236,122, 53,233,196,137, 19,199,142, 29, 59,120,240,224, 61, -247,220,243,156,170, 44,142, 29, 59,118,207, 61,247, 92,125, 73,188,227,199,143, 95,223,143,239,253, 12,189,207, 52,219,240,179, - 94,194,139,210,230,235, 14,111,226, 95,253, 74,253,178,233,215, 50, 26, 43, 80,224,239, 56,240,186, 31,241,173,183, 53,126,245, -253,123,119, 55, 35,155,170, 53, 8, 49,163, 33,240,115,144,109,248, 41,224, 64,173, 64,226, 56,151, 32,192,174,131,127,249, 91, -243, 31,251,252,188,168,190,212, 58,104,211,214,216,100,225,118,187,253,156,164,232,115,133,247, 82, 54,167,116,247, 54,197, 75, -188,205, 47, 80,207,251,233,225, 46,101,255, 98, 9,167, 2, 5, 94, 76,126, 7,128,122,204,223,243,154,169,127,247,214, 29,123, - 38, 66, 80, 84, 85, 65,148,141, 83,145, 2,169, 34, 2, 32,172,140,220,207,127,118,233, 87,191,184,178,212,201,138,155, 81,160, - 64,129, 2, 47,117,126,247,136, 2,186,117, 75,252,221,223, 54,249,250,217,218,246,106, 48, 17, 81,200,152, 59,232,228,238,226, -192,126,229,252,224, 55,190,188,246,232,194,168,159,186,226, 54, 20, 40, 80,160,192,203,137,223, 47,133, 97, 52,132, 76, 32, 10, -214,233,101, 31, 73, 21, 40, 80,160, 64,129, 2, 5, 10, 20, 40, 80,160, 64,129, 2, 5, 10, 20, 40, 80,160, 64,129, 2, 5, 10, - 20, 40, 80,160, 64,129, 2, 5, 10, 20, 40, 80,160, 64,129, 2, 5, 10, 20, 40, 80,160, 64,129, 2, 5, 10, 20, 40, 80,160, 64, -129, 2, 5, 10, 20, 40, 80,160, 64,129, 2, 5, 94,210,192, 95,251, 79, 63,139,136, 10, 10, 0,196, 12, 0, 42, 14,156, 34, 17, - 18, 40, 16, 51, 33,249, 73,125,129,144, 56, 96, 85, 69, 96, 4, 61, 51,247,196,142,221,183,133, 70,156, 40, 17, 2,224,120,186, - 3, 68, 36, 12, 16, 68, 65, 65, 1, 8, 9,213,137, 10, 16, 19, 33, 18, 83, 16,176,168,130,128, 56, 0, 68, 17, 5, 64, 80,161, -144, 9, 8, 17, 1,128, 8, 0, 64, 65, 85,149, 0,137,200, 47,229, 65,196,164, 0,140,170,126,238, 50, 4,192, 63,254,227, 63, - 68,228, 59,110,191,157,131, 32,207,242,213,165,149, 71, 30,253,250, 91,247,223,247,138,217,157,189,110,207,230, 73, 20,242,176, -211, 10,234,211,146,182, 79,125,227,113, 83, 42,205, 76, 54, 75,149, 74, 20,213, 76, 16, 0,177,225, 0, 16, 17, 65, 69, 20, 80, -213, 17, 32, 16, 17, 50, 17,249,150,136,106,200, 70, 17, 1, 9,145, 16,192, 57,135, 8,132,172,170,128, 10,138, 64, 8,170,227, - 93,209,128,138,170, 32, 32, 16, 1,168, 10,154,128, 1, 65, 69,129, 16, 1,197, 58,100, 32,242,157, 47,227,213,175, 20, 1,148, -153, 0, 64, 68, 1, 65, 68, 12, 27, 17,241, 55, 67, 68, 16, 20, 56, 64, 0, 16, 17, 16,102, 3,128, 72,136,196,190, 91, 69,133, -201,119, 38,178, 9,178,100,216, 91, 62,195, 1, 2, 32, 34, 35, 2, 41, 8, 0,179, 65, 4, 68, 84,113, 20, 84,103,118,223,201, -153, 77, 71,157,184, 84, 62,127,254,169,143,254,198,111,221,126,211, 45,255,232, 61,111,183, 20, 0,200,185, 39, 30,255,210, 87, -190, 30, 69, 49, 51,155,176, 92,153,217,158,165, 25, 56,235, 40, 88, 56,253,167,147,245,106,127, 48, 58,249,245,111,158, 91, 90, - 94, 94,105,125,231,189,111,189,113,215,246, 44, 3,201, 71,128, 65,181,222,116,105, 47, 27, 14, 70,253,118, 62,232, 13,250, 93, - 50, 1, 33,213,227,176, 62, 57, 83,106,110,205,179, 97,169, 62,185,117,231,238,184, 62,211,235,246,178,164,189,248,248, 35,147, - 55,220, 82,111,110,201,211, 81,142, 1, 42,113, 96,108, 50, 4, 2,198, 64,156,123,234,236, 19, 54,205,235, 19,205, 60,233,238, -188,249,149,103, 31,253,115,142,167, 9,176,212,104,100,163, 78, 92,155, 82, 7,105,178, 94,170, 76,219, 60, 27, 13, 86, 84, 41, -207,242, 56, 10, 43,213,134, 42, 36,233,168,191,190, 58,189,101,199,212,150, 27, 91,139, 79,214,167,182,128, 41,247, 59,237, 97, -119, 49, 8,171, 38,174, 72,214,103,138, 52, 44, 25,162,128,176, 92,171,138, 98, 80, 42,167,105,154,245,123,105,127,173, 62,181, - 83,144,122,107, 23, 37, 89,189,241,206,123,151,151,230,215,151, 23,226,250, 36, 37,235,253,238,122, 20,150,219, 43,103, 51, 8, - 92,150,199, 1, 89,103, 47,182,214, 74, 97, 92, 42, 87, 75,113, 84, 42, 87, 37, 29,118,251,157,229,213,229, 90,125,154, 77, 88, -171, 55, 75, 81, 9, 8, 91,171, 23, 70,195, 81,169, 82, 37, 10,211, 81,223, 58,155,166,105,173, 20,246, 7, 73,154,167,132, 80, -137,203,173, 78,123,190,213,189,101,231, 13,185,211, 48, 14, 80,236,160,183, 94,105,108,137,163,184, 18, 5, 97, 64,231, 46,156, -153,158,217,179,103,239,206,187,239,186,145, 56, 84,231,128, 0, 65, 85, 68,129, 17, 25, 85,129, 72, 84, 81, 1, 8, 21, 16, 0, -196, 9,160,127,213, 16, 20, 84,133,152, 68,198,239, 34, 48,177, 56,107,237,210,202, 74,183, 55,152,221,189,171, 86,141, 71,105, -134,200, 34, 0,168,254,229, 21, 43, 0, 66,102, 99,133, 9, 79, 49, 8,168, 42,128, 42,142, 0, 20,157, 8,182, 59,163, 97,202, -149,198, 68,100,176,219, 94, 95, 90, 90, 88, 88, 90, 88,106,181, 91,157,206,210,234, 90,175, 63,108, 54,106,111,187,119,223, 91, - 95,115, 39, 3, 38, 22, 98, 34,206,243,245,229,149,211,243, 11, 75,235,189, 97,150, 85,226,232,214, 87,220,186,180,116, 49, 8, - 77,125, 98,226,179,127,246,149,225,250,122, 16,176,128,160,106, 41, 42, 49, 83, 64,236,223, 14, 98, 66,164,241,178, 64,136,153, -205, 73, 33, 10, 66,244,196,194,100,136, 50, 85, 98, 69, 7,169,181,224, 68, 17, 17,193,138,250, 21,138,156,170, 1, 0, 32, 1, - 5, 39,192, 8,170, 0, 72,136, 78,197, 40, 90,223,153, 42,130,224, 15, 11, 10,162,162,138,136,170, 10,170,160, 42,160,106, 85, -213,119,183, 40, 17,170,170, 83,145, 60, 87, 28,243, 36, 17, 89, 85, 84, 84,155,131,225,128, 13, 33,137,191, 87, 10,162, 0, 0, -170,234, 84, 13, 32, 16, 32, 5,170,150,144, 80, 53,181,150,223,247,206,251, 0, 0,136,136, 8,128, 84,101,124, 39,252,196,237, -128, 72,196,200, 68, 68,136,136, 36,162,136, 4, 32, 65, 20,187, 44, 31,229,174, 18,135,136, 8,160, 72,228,159, 8, 66, 4,103, -253,109,222,156,241, 23, 61,243,248, 69, 86, 9,124,204, 80, 5, 80,117,170,132, 12,160, 0,168, 34,200,138,254, 81, 0, 20, 21, - 2, 64, 0, 1, 85, 81, 64, 36,100, 98, 32, 30, 31, 93, 65, 84,149,144,171,149,232,137, 39, 79, 69, 81, 28, 71,113,169, 92, 99, - 86,205,221, 99, 79,204,221, 52,123, 83, 41, 10,179, 44, 87,117,198, 4,189,246,218,214,157,123,187,157,214, 43, 95,253,218,116, -212,182, 86,226,184,132, 48,110, 63, 19,161,162,162, 2, 34, 1, 9, 40, 51, 35,145,168, 16,177,170, 0,168,147, 28, 0, 16, 61, -227, 3,109,206,105,239,251, 12, 55, 46,118,131, 88,193, 7, 13, 66, 85, 5, 68, 31, 47, 1, 17,145, 64, 55, 58,200, 47,133, 66, -128, 68, 32,160,128,160, 74,100, 68, 28,136, 2,145, 63,220,198, 74, 85,168, 10, 2, 72, 68,104,124, 44, 65, 68, 26,119, 25, 34, -168,128, 2, 33,108, 68, 68,255,156, 64, 50, 26,217,108,157,145, 13,177, 95, 97, 11, 8, 8, 9,137, 1, 84, 85, 65,121,122,247, -157, 81, 24, 38,221,245, 40, 10,207,156, 57,245,235, 31,251,237, 93, 91,183,191,247, 31,190, 27,152, 84,164,181,188,252,231,143, - 60, 66, 28, 16,170,137,171,113,117,194,162, 81,155, 16, 7,253, 94,203, 37,173, 90,173,210,234,116,206,206, 47,173,247, 6, 86, -244,238, 87,221, 19,154,192, 57,196,160,100,216,128,138, 36,253,124,212,149,100, 96,243, 52,205, 70,164, 84,138,194,184, 84,226, - 40,140,202, 77, 19, 87,131,184,188,101,251, 30, 1,114,249, 8,197,153,210, 68,154, 75,169, 54, 81,153,152,177,121, 38, 2,214, - 14, 93, 58,234,247,122, 28,132,163,193, 96,148,164, 54,235,149,171,141, 81,123, 65, 52, 76, 83,225, 48, 76,211,174,179,185, 29, -117,131,168,130, 38, 72,134,189,106,185, 62,234,175, 85, 39,111, 8,131,168,209,168,247,147, 97, 58,236,130,104,169, 20,113, 80, - 17,117,149,106,189,213, 90,234,182,214, 56,136, 20,205,168,187,170,192, 2,129, 77,147,184, 62,157, 14, 90,206, 57,201, 19, 73, - 7, 65, 92,149, 60, 5,103,173,205, 41, 44, 5, 97, 20,150, 75, 0,184,182, 54, 63, 49,181, 51, 46, 87,134,189,181, 82,101,130, -216,164,131,158, 2,169, 16, 51,165, 89,110, 76, 16,132, 37, 1,100, 14, 74,149,186, 81, 71, 28,168,138, 49, 81, 80,106, 32,134, - 6,181,223,111, 35,234,176,191,110,130,160, 55, 24, 84,170, 13,155,166,195, 97, 15,213, 41,106,218,107,213,170, 85,231, 92, 57, -142, 50, 7, 97, 16,154,192,156,185,120,177, 81, 46,151,194,176, 63, 24,176, 9, 41, 8,243, 44, 47,151, 74,185,179,204,145,178, -185,184,220, 22,167,211,205, 32, 42,197,226, 28, 0,224,198, 19, 53,214, 25,254,209, 85, 20, 0, 5, 69, 66,245,143, 19, 17,160, -248, 7,218,115, 99, 16, 24,201,178,133,149,181,165,149,149,114,165,182,103,215,142, 48, 52,137,181,168,136,104,112, 44, 19, 16, - 0,148,188,222, 67,242,175, 4, 33,232,248, 13, 65, 85, 54,104,157,116,250, 89,187,151,115,216,152,156,108,228, 73,178,180, 56, -127,230,236,217,243, 11,243,243, 43,203, 11,171,171, 23, 22,151,197,201,235,191,253, 85,239,127,231,155, 94,115,199, 77,121,238, - 64, 48, 86, 29,173,183,230,230,206, 62,121, 97,241, 66,187,147,165,233, 77,123,118,236,220,179,253,212,249,165,246,218,170,137, -227, 47,127,237, 27,118, 56,156,168,149, 9,137, 80, 17, 41, 10,130,128, 13, 51,177, 33, 38, 50, 72, 10,162, 10, 68, 8, 8,108, -152,144,152,199,175,108, 16, 4,128, 10,170,206, 58, 81,101, 64, 68,100, 36, 11,234,223,108, 43, 46,100, 6, 5, 64, 34, 34, 32, - 96, 68, 5, 4, 66, 66, 84, 65,167,162,158, 8,136, 16, 81, 0, 16, 20, 17,212, 33, 49, 58,209,192,235, 60, 31, 44, 1,157,138, -136,128,122,137, 12, 10,170,136, 42, 96,216, 43, 72, 97, 50, 72, 8, 28, 48, 97,192, 6,137, 8, 16,145,156,232, 38,185,123, 70, - 17, 4, 20, 5, 0, 70,200, 69,197, 57,126,223,187,254, 39,212,113,200, 5, 80, 68, 64,175, 64, 17,152,145,136,144,144,153, 24, -128,189,192, 84,117, 42,128,164,162,113, 20,174,175,175, 55,106, 53,245,234, 85, 21, 68, 0,199,203,240,161,103,116, 4, 68,127, - 91,217,207,102, 70, 64,204, 4,136,160,160,128,170,128, 62,100,160,162, 1, 66, 98, 34, 5, 29,255,217,247, 15, 2, 35,161,215, -209,232,167, 23, 70, 85,113,155, 15,140, 72,173,222, 28, 14,215,207,158,159,159,153,158, 12,194, 40, 12,227,128,105,121,117,105, -165,221,190,101,118,150, 77,152,102,137, 97, 21,235,150, 47,206,183,214, 86,227, 82,165, 86,175,181,150,150,194, 40, 10,163, 24, - 20,208,160,205,114, 32, 70, 68, 80, 96, 66, 36, 82, 21, 81, 69, 0,242,193, 14, 17, 0, 85,213, 57, 71, 72,134,140,234, 95, 91, -193,196,175, 92,130,138, 0, 56, 30,189,160,128,167, 99, 54, 60,238, 17, 66, 0, 98, 3,226, 16, 4, 1, 16,198,225,205,223, 5, -242,157, 35, 78,156, 83, 66,102, 6,244,239, 36,136,117,234, 28,248, 67, 40,128,128, 63,170,170,250, 72, 2,170,136, 24, 4,129, -138, 40, 0, 17, 34,168,130, 34, 81, 50,236, 99, 62, 98,230,113,115,137, 16, 9,136,252, 46,106,221,150,155,239,174, 77,111, 77, -187,157,184, 84,106, 47, 47,252,234,127,251,127,166, 39,183,124,255, 63,254,158,168, 90,177,105,154,141,250, 95,251,234, 87,251, - 35, 65, 73,140,137,195,198, 54,113, 78,236,208, 4, 33, 71,141,108,212, 69, 55, 48, 97,184,178,210, 89,110,181, 58,189, 1, 51, -237,221,121, 3, 33,170, 83,151,245, 13, 89,100,182,195,110, 54,234, 57,235, 68, 1,208, 88,200, 9,164, 82,169, 84, 38,102, 40, -142, 37, 79,103,118,236,169,212, 39, 70,163, 65,150, 12,109,110, 43,149, 74,158,229, 46,205,179, 65, 91,213,165,105, 58, 28, 12, -109,150,138,112,181,214, 92, 95, 95, 25,101,121, 41, 10, 89, 53,174,214, 21,201, 58,167,249, 96,106,235,174,184,212, 40,215,182, - 84, 27,117,176,214, 2, 77, 52,106,224,146,110,167, 29,134, 37,151,117,178, 36,113,162,245,230, 13,154,117,234,141,153,250,228, -214,114,101,178,215,237,244, 58,173, 82,181,234,210, 30,135, 37,230, 48, 46,149, 64, 44,184,212, 10,113, 16, 77,109,221,102,109, -194, 38, 6,213,220,102,121, 50,140,203,141,124,212,203,179,145,130, 10, 26,114, 25,169,205, 83, 91,111, 78,170,115,134, 96,216, -239, 68,113,196,128, 10,129, 2,132, 6,195, 48,136,162, 50, 32,244, 59,171, 89, 50, 98,142,242,108,148,140,146, 36, 79, 66, 38, - 80, 65, 19,137,203, 42,213,102,183,211, 14,131,208,230,163,208, 68,195,225, 42, 19, 87,234, 91,157, 56, 0,104, 78,204, 12, 58, -171,195, 36,153,158,168, 59,224,167,150,230, 43, 97, 80,138, 75, 66,134,208,168,230, 44,163,114, 84,142, 75, 85,112,110,152,246, -215, 91,221,126, 47,159,222, 58, 83, 45, 71,206,137, 87,216,160,168, 99,110, 34, 0,135,196,176,241,246,146, 87, 88,170,170,138, - 4, 32, 66,204,113, 20,175,119,218,143,157,122,178, 92,174,222,120,195,182,122,173,230,156, 19, 81, 38,220,144, 32, 94, 23,145, - 31,176,250, 87,193,203, 23, 79, 29, 8,192,170,204,212, 29,142,150, 91, 35, 52,213,102,115, 75, 28, 6,107,203, 75,231,206, 62, -117,238,194,133,249,149,165,133,149,181,243, 23,151, 47,182,218,187,183,111,255,193, 3,239,124,243,190, 87,150, 74,129,115, 88, -162,208,246,251,231,207,158, 63,125,126,241,252,234,234,210,122,103,215, 84,179,210,168,174,180,187,103,231, 23, 83, 7, 23,230, - 23, 58,173,142, 1,136,195,208, 4, 33, 32,196, 65, 96, 56,100, 38, 66, 12, 67, 19, 48, 41,128, 19, 21, 81, 66, 54, 68,162,202, - 64,228, 25, 80, 20,145, 25, 48,119, 78, 65, 81, 1, 9, 68, 84, 65, 17,209,137, 42, 40, 35, 6, 76,138, 72,136, 28, 50, 18,140, - 5, 58,128, 1,204,124,199,142,165, 60, 24, 67,168, 32, 72,128,104, 16, 77,200,170,200, 32, 2,154,139, 3, 81, 1,112, 42, 34, -206, 83,171, 31,241, 19, 49, 17, 25, 98, 50, 20,112, 96, 69,141, 97, 67,100,152, 13,179, 42, 16, 42, 18,139, 8,129, 0, 49, 18, - 18,146, 10,228,206, 50,141, 3,182,170, 24, 54,204,204,239,123,199,219, 97, 60, 18,131,177,226, 6, 37, 19, 4,198,248,136,198, -134,193, 9,120, 37, 10, 4, 4,226,172,181, 14, 85,136,185,223,235,155,184,204, 8, 0,130,224,159, 27, 68,246,244, 1,140, 36, -170, 0,200,228,131,186, 23,178,140, 4, 27, 93,131, 72, 34, 0, 42, 74, 62, 96, 17, 16, 26, 68,149,141, 1,161, 23, 15, 0,180, - 33, 7, 20, 17,101, 99,180,227, 7, 1, 68,192,200, 91,183,109,123,242,137,199,243,204,150, 75,113, 92, 46, 9, 96,100,130, 71, - 31,123, 98,203,246,173, 19,213,146,181,226,108, 90, 42,149, 69,225,214, 59,247, 45,159, 63, 85,159,190, 65, 37, 3, 64, 14, 2, - 31,184,136,141,120, 59, 9, 17, 80, 65,188, 26,182, 72, 6, 25,199, 44,140, 74, 68, 76, 44, 27, 61,182,209,111,227, 39,218,143, -154,254,234, 15, 0, 72,196, 76,168, 64,204,108, 80,196,249,105,241,253,184, 4,199, 99, 69,221, 60,154,202,120, 81, 89,102, 67, -190,211, 12, 35, 0, 56,177,214,137,115, 27,177, 6,137,201, 71, 56,220,240,143,144,136, 0,114,103,137,152, 3,163, 10,158,208, -137, 77,210,235,160,228,136, 6,213, 1, 18,140, 3,230,248,133,172,205,236,153,190, 97,214,165, 35, 86, 73,250,173,143,254, 95, -191,210, 25, 6,141, 90,101,239,238, 27, 3, 68,100, 60,117,250,236,252,194, 60,177, 33,142,130,202,132, 41, 85, 76, 84, 42,215, - 38,156,160,230,233,104,208, 10, 88, 16, 97,109,173,213,234,244, 46,174,181,234,181,230,237,183,239, 19,117, 78, 53, 42,149, 53, - 25,216,100,228,172,213, 52,205,179, 20, 0, 6,163, 62,169, 76,214,155, 81, 41, 14,227, 42, 25, 14, 74,181,169,237,187,243,100, -221, 41, 6, 97, 20, 70, 85,116,169, 40,167,121, 46, 46, 43,149,106,113,173, 97,147,172,183,190,140, 0,234,178,213,165,179, 38, - 44, 87,234,211, 78, 68, 57,204,211,132, 77, 24,215,167,243, 65, 59,205,210, 81, 58, 92, 57,243,141,245,181,243,113, 84,179, 18, -228, 14, 1,145,195, 88, 53, 74, 6, 23,227,114,173, 54, 57,213,235,180,173,115,181,137,105,219, 91,238,244, 90, 86,141,164,131, -204,230,165, 90, 51, 25,116,203,113,212,152,220, 34,206,230,142,103,182,110,109,135,221,156,195, 0, 0, 32, 0, 73, 68, 65, 84, - 76, 52,146, 68,114,155, 57,155,102,105,194, 65, 69, 80, 7,221, 69,226,216, 57, 27, 85, 38,243,100,148, 14,215, 43,181,201, 60, -207, 59,171, 23,114,135, 96, 71, 1, 75,107,109, 9,213,142,146,129,136, 84,106,205,100,208, 3,149, 70,163,153, 99, 48, 28,116, - 13,155, 52, 29,245,250, 45, 22,113,105,127,199,182, 93,136,148,228,163, 60,207, 51,155, 84,171,205,193,104,128, 92, 98, 14, 76, - 16, 34, 82,146,101,129,230,235,157,149, 52,179, 97,104, 34, 70,235,116,173,215,223,218,108, 24,102, 0,137,226, 74,110,109,154, - 14,146,204, 13, 71,125, 43, 46,205,157,117, 48, 24,216,230,100, 57, 14, 3,231, 28,130,215, 25, 8, 2, 72,128,202, 48,142,248, -168,254,213, 27, 51, 52, 42, 40, 41,128,218, 51,103, 46,156,191,184,242,138, 91,111,218, 50, 53,229, 60,245,143,227,129, 31, 2, -226, 37,250,157, 0,189,139, 73, 0,160,214,191,170, 64,164, 78,117,173, 51,234, 12, 97,106,122, 71,173, 90, 73,211,222,133,243, -103,231,230, 78,157, 89, 88, 88,105,183, 47, 44, 46,207,175,172,146,194,254,239,216,247,207,191,235,109,219,166,235,163,204, 6, - 28, 5, 78,151, 23,206, 61,113,234,236,133,139, 43, 43,189,126,104,176, 92,105,128,100,213,137,122,185, 57,245,232,163, 79, 12, - 59,221,106, 96,162, 32, 48, 76,204,108,115, 9, 2,102,102, 68, 98,102, 34,227, 45, 40,113, 42,224,226,208, 56, 21, 43, 98,152, - 17,192, 57, 29,123, 54, 0, 86,196,233,248,229,205,157, 24, 68, 67,228, 64, 12,177, 97, 34,196, 52,119,158,169, 68,196, 58, 33, - 68, 4,117,170, 78, 53, 52,108, 69, 64, 33, 12,195, 49,161, 50, 25, 0, 81,151, 89, 69, 68, 66,112, 0, 78, 21, 68,157,130,147, - 92,192, 33,176, 85, 33, 0,246,236, 8, 24, 48, 5, 97, 96,136, 1,212, 95,144,215,216, 12,168, 48,214,142, 62,112, 50, 27,111, - 18, 8, 64, 96,140,122,233, 41, 26,135,134,131,192, 9,240,123,223,113,223,216, 92, 22, 65,130,141,155,164,134, 25,112, 44, 94, - 9,128,252,240, 74, 21, 8, 65,145, 9,189,178, 71, 80,107, 53,142, 3, 80,245,227, 33, 64,224,192,120, 5,138,222, 46, 71,218, - 20,244,222,121,242, 79, 18, 40, 48, 50,160, 23,181, 72,136,228,159, 54,111, 22,168,122, 67,130,152, 65,197,135,181, 13, 79, 70, -253, 14,222,230, 70, 5, 64,116,206,197,229,122,189, 94,254,198, 55,191, 81, 10,130,114,165, 86,169, 85,153,120,212,239, 45,174, -180,111,153,221,131, 72, 54,203,131, 48,136,194,112,216,105, 47, 46,204, 39,163, 81,158, 39, 8, 96, 8,152, 13,155,144, 77, 64, -128, 68,232, 31,111,221,112,150, 0,209,199, 48,167, 22,145, 84, 81, 68, 54, 28,152,191,162,112,220, 92,236, 27, 55,199,165,127, -165,169, 9, 73, 65, 92, 46,168,136,164, 10, 34, 86,253,181,251,211,121, 59, 30, 54,188, 79,239,174, 40, 32, 19, 3, 8, 56, 21, - 1,113, 34, 54, 23,113,196,134,216,248,213,176,136, 88, 21, 20,156,151,235,158,184,253,176,102,220, 70, 1, 21,151, 12,123, 6, -199,207, 49, 18, 27, 10, 17,141, 42,168,216,184, 62,179,253, 21,119,129, 2,137, 14,150,231, 63,246,177,227,167, 23,123,181, 74, -240,198,183,190,109,235,238,189,221, 78,239,236,169,199,158, 58,115,142, 20, 24,208,148,106, 65, 24, 7, 81, 37, 46,199, 42,249, -176,125,209,196,213, 78,235, 66,185, 18,165,163,100,105,101,109, 97,117,173,211,237,238,216,190,103,251,182,157,233,160, 31,134, -229, 16,193, 89,135,234,210, 65, 43, 75,211,209,176,215, 77,134, 12, 84, 45,149,227, 74,149, 76,152, 91, 75,200,113,185, 86,169, -213,243,204,137,179, 42,214,138,154, 32, 30,246,186,136, 80,105,212, 7, 73, 26,129, 29,117, 86,170,245, 45,128, 98, 51,187,184, -116, 33,233,174,148,171,117, 0, 81, 69, 33,204,135,189,168, 58,193, 65, 28, 6,209,176,215,141,234, 83,229,198,142,116,216,234, -183, 46, 84,106,147,229, 40,242,189,137,170,245,230,118,231, 50, 52,113,169,210,212,100, 61,201,109, 46,106, 45, 12,134,157, 45, -219,111,118,105,191,187,190,108, 93,206,224, 64,105,148,102, 81,104,106,245, 90,150,231,221,245,238,250,197,179,206, 41, 71, 97, - 88,170, 5, 38, 18, 65, 64,206,135, 93, 50, 6, 36, 67,132,184, 54,137, 20,172,175,183,152,184, 20,135,195, 52, 31,244, 59, 78, -185, 90,107,168,104,167,223, 67,100, 54, 36, 54, 3, 98,102, 42,197,241, 96,208,171, 53,102,144,204,182,173,219, 20, 33, 79,179, -204,201,112, 56, 66,144, 70,189, 97, 76, 56, 74, 6, 32, 46, 8,130,254,112, 96, 76, 96,202,141, 82,185, 26,134, 49,161, 76, 78, - 52, 3,198, 51, 75, 75,219, 38,167, 26,149,154,147, 60,179,208,172, 79,148,194,184,189,222,177,249, 8, 68, 85,165,215,237,166, - 9, 77,111,105, 6,129, 81,245, 47, 28,123,181,228,173, 61,245,146, 30, 1,145, 84, 69, 69, 67,195, 8,186,214, 90, 95, 88, 92, -142, 74,165,219,110,190, 41,142,163, 36, 77,199, 82,125, 60,220,100, 29, 15, 92,121, 28, 22, 54,172, 73,239, 37, 2, 41, 19,170, -213,222, 48, 91,235,102, 24, 84,167,183,108, 53, 42, 75,243,103,159,124,226,241,185,179,103,207, 95, 92,153,191,184,124,225,226, -106,111, 56,250,182, 59,110,249,167,255,224, 45,111,125,205,237,136,144, 91,140, 49,200, 58,235,231,159, 58,123,234,220,252, 66, -187, 51,204,242,157, 91, 38,103,103,247, 92, 28, 12,203, 1,141, 20, 31,127,236,113,116,110,178, 86, 54,204, 94,246, 24,166, 48, - 32,102, 70,111, 60, 51,251, 87,204,191, 28,132, 36,130, 68, 68, 8, 4,128,136,134, 9, 16,157, 83, 1, 53,204, 68, 64, 48, 30, - 80, 59,167,214,251,242, 4,162,154,229, 22, 17, 66, 99,156,138,127, 87,189,233,234, 37,178,248, 33, 56, 98,238,156, 33, 34, 38, -231,156, 3, 5,192,192, 24, 39, 98,197,121, 18,244, 1,144,201,243, 40, 8,248,180, 29, 1,104,192, 28, 4, 6, 20, 55, 50,149, - 28, 4, 20, 50, 17,170, 19, 0, 16, 5,197, 77,165,143,232, 0, 8,125, 56, 5,167,160,162,129, 33, 85, 33, 5, 36,230,127,244, -174,119,168,247,103,136,200, 4,155, 41,149,141,241, 62,123, 99,192,223, 46, 5,240,222,207, 6,173, 49, 7,220,239,173, 87,170, - 13, 80,245,140, 14, 10, 99,226,247,214, 47,249, 61, 85,252,144,109, 60,244, 3, 21,128,177, 5, 70,136, 4, 42,136, 27, 25, 24, - 68,244, 97, 47, 87,111, 85,123,189, 12, 62, 59,233,221, 28, 81, 64,244,118,183,110, 12, 3,157,181,147,147,211,237,214,234,242, -234, 90,173, 82, 46, 87,170,204, 20, 24,243,216,227,143, 85, 27,147, 55,238,216,154, 57, 7, 2, 81, 92,177, 89, 62,179,107, 54, -224, 44,119,102,106,122, 50,207,109, 16,132,132, 62, 70, 10,241,216,178, 66, 4, 34, 70,246,193, 10, 64,201, 41, 24, 68, 25,143, -120,132, 48, 32, 98, 80,241,254,137,239, 52,192,205,120,201, 62,206,249,102,142,169,159,128,188, 85,165, 58,142, 89, 10,200,132, - 0,226, 28,168, 2, 1,121,107,104,156, 45, 69, 0, 32, 38,102, 68, 0, 17,113,226,136, 24, 84,153, 13, 25,218, 48, 6,145,144, -125,148,245,105, 15, 68, 32, 68,239,243, 33, 34, 18,247,219,171,225,198,168,140, 40, 64, 38, 4,117,154,113, 84,219,118,203,171, -131, 48,178,105,230,214,150, 63,241,241,143,159, 94,234,139,164,111,126,227, 27, 95,255,166, 55,148,235,213,198,244,214,139, 75, -173,115,231,207, 90,129,106,115,154,163, 82, 84,169, 85,170,117, 4,155,142, 44,133,161,181,210,107,159,175,196,241,112,152, 44, -174,172, 46,174,182, 70,163,116,215,142, 27, 38,235, 21, 70, 52,140,234,114,176, 35,181, 46, 29, 14, 20,100,100,109, 16,196, 17, -101,108, 98, 54, 97, 20,132,104, 2, 11,184,235,230, 59, 65,243,206,234, 98, 80,174, 26,194,225,160, 99, 5,109, 54, 90, 91,248, -134, 40, 75,150,166,195, 97,111,125,129, 76, 56, 88,111,165,121, 54, 74,134, 72,152, 13,215,171, 91,118,187, 44, 69, 17, 99, 2, -210, 44,239, 47,133, 81,153, 3,195,204, 0, 24, 87,234, 89,210, 35, 50,189,238, 50, 82, 4, 8,121,210, 17, 53, 4, 82, 41,149, -243,108,148, 12,211, 44,207, 93, 62, 10,163,210,196,196,180, 9,226,209,168,175, 88, 14,194,106, 50,236,165,217, 40,138, 99,230, -192,144,102,253,245, 81,103, 69, 57,230, 48,172, 53,102, 80,173,203, 50, 69,142, 74,213,128,169, 90,155,112,214,149, 43,205,133, -167,254, 98,148, 90,235,136, 56, 8, 48, 15,163,138,136, 41,197,209, 68,173, 82, 41,151,147, 65,183, 62, 49, 57, 92, 95, 67, 98, - 39,106,179, 52,183,153, 9,202,229, 82, 57,177,121, 72, 48, 53, 61,221,106,173, 24,142, 65, 93,146,165, 54,203, 84,115, 68, 10, -194, 88, 92, 30, 6, 65,150,165,113, 24, 6,198, 48,106, 24,132, 83,141,250,182,169,201,213,110,114,126,249,226,100,204, 32,106, - 85,135,131, 30,100,189,173, 83,211,232,243,120, 28,177, 9, 49,136,114, 87,174, 86, 98, 99,198,111,178,110, 26, 40,227,247,147, -198, 73, 40,226, 40, 14, 7,253,193,169,185,115, 74,188,107,215,141,147,205, 9, 17,235,114, 7,160, 27,254,224,216,132,245, 98, - 98,156,101, 28,219,194,226, 77, 25,131, 38, 8, 76,146,229, 23,219,195, 84,131,122,115,178, 26,151, 6,157,181,167,158, 58,245, -196,169,185,133,165,139,139,173,181,133,229,181,139,107,237,102,163,254, 63,191,243,245,239,121,203,190, 70,181,146, 58, 12, 32, -160,204, 46,205, 95, 56,117,230,236,185,229,181,214,160, 95,171, 84, 69, 92,185, 86, 90,233,245,207, 47,172,174, 44,175,182, 86, -214, 2,128, 74, 28, 25, 34, 64, 96, 98,226,141, 60, 31, 18, 19,179, 23,107,234,243, 3, 62,235,228, 95,152,141,215, 6, 1, 0, -172,170, 55,153,144, 8,144, 17, 8, 64,145, 24, 81,153,144,137, 5, 4, 20,162, 40, 0,192, 92, 28, 51, 33,146,119,108, 4,192, -187,231,138,184,145, 35,220, 40, 6,217,176, 41,116, 60,224,166,141, 88,224,101,234, 56,123,103,144,198,255, 37,242, 14, 7,143, -115,116,158, 31, 52,117,146,139, 50,161, 32, 26, 66,227,229, 49, 34, 0,133, 99,234, 0, 98, 10, 9,137,216,137, 6, 65,200,196, -162,150,223,251,142,183,143,125, 50, 4,220, 48,206, 65,198,170,148, 55, 92,229,177, 57,226, 51,162,155,166, 4, 42, 34, 15, 7, - 61, 54,113,104, 0, 1, 68, 20, 69,124,171, 5, 4, 54, 92, 94,208, 49, 83,163, 2, 33, 91,117,228, 19,249,164,170, 2, 4, 98, -197, 87,134, 16, 17,141,203, 80, 16, 60,243,171,194,152, 98, 69,193,249,203, 86, 4, 2, 26, 27,220,227,102,131, 19, 33,196,137, -137,198, 19,167, 79,161, 72,169, 82, 46,151,171, 76,152, 13, 71, 95,125,236,177, 87,222,118,107, 28, 71,105, 50, 10,194, 32, 10, - 3,103,211,106,163, 1,214,166,201,160,223, 27,148, 75, 21,175, 54,140, 49,162, 0,170, 76,140, 72,161, 9, 68,156, 56,241, 73, - 41, 20, 21, 34, 0,144,113, 66, 66, 1,193,223, 16,177, 66, 76,190,215, 21,198,105, 21, 34,162,192,120,175,105, 51,245,170, 0, -136,204, 76, 50, 30,201, 16,128,138,138,175,101,241,105, 47,241, 67, 92, 39, 62,241,139, 8,227, 82, 33, 34, 95,238, 98,130,192, -191, 98,226,159, 34, 34,255,110,138,147,205, 78,247,133, 73, 68,172, 0, 78, 32, 31,245,194,136, 1,124,130, 6,144,200,103,211, -182,222,116,119,185, 57, 9, 78,121,208, 61,241,251,191,249,165,111,158, 31,141,122,187,183,207,188,251, 29,239, 82, 21,113,182, -189,178,182,190,222,109,181, 90,253, 4, 71,195, 94,169, 82,155,152,154, 98,195,171,243,231,195, 74, 13,208,228,217, 48, 29,172, -150,163,184,221,107, 47,175,182,151,219,107,105, 46,175,188,245,206,201,122, 29,216, 16,128, 56,103,140,201,134, 61, 39,214, 58, - 59, 24,142,226, 32, 36, 67,128, 32, 78,234, 19,147,200, 84,159,218,182,231,182,187, 71,217, 72,213,152, 40, 90,159, 63,213,239, -172,148,203, 19, 6, 50, 75,241,212,204,158,193,250,121,144, 60,119,138, 20, 50,201, 83, 79, 61, 90, 46, 55, 57,136, 59,107,139, -245,122, 3,145,109,154, 40,134, 89,158,244, 86,207, 83,121, 26,212,181, 46,206,169,106, 24,149,227,250, 84,185, 82,203, 83,171, -224, 68,209, 57, 33,198, 52, 25,170, 27,218,204, 82, 80,234,117, 91,204,198, 89, 48, 65, 60,236, 46, 83, 80,206, 70,189,238,250, - 50, 32,131, 9,202,229,114, 58,236,215, 38,166,152,163, 81,210, 47,215,183,132, 97, 57, 10, 40, 27,118, 22,231,159,234,247, 59, -131,126,127,189,211,238, 15,186,173,245,214, 90,123,117,109,117,117,117,125,173,223,107,239,217,123, 83,167,219, 94,239,180, 29, - 25,118,233,206, 93, 55,132, 38, 72,178, 52, 10, 34, 5,169,213,103,234,181,106,183, 61,223,104,238,184,253,214, 91,115,197, 86, -167, 19,134,229,192, 48,146,233,172,175,245,187,107,166,220, 8, 56, 32,208,220, 89, 85,137,152, 12, 7,131,126,143, 66, 3,128, - 73,150,161,205,183, 76, 78,139,234, 68,173,218,234, 14, 46,172,172, 6,154, 76,212, 27, 1,135,163,209, 48,142, 99, 67, 88,174, -212,146,209, 16, 9, 37, 79,147,100,100,169, 50, 81, 11, 66, 67, 99, 5,129,227, 97,191, 31,119,170, 2, 6,204, 68, 43,203, 11, -115,103, 23,118,239,218,185,109,219, 12, 33,230,121,166,168,227,119,115,108, 70, 42,160, 79,164,162, 42,160, 23, 12, 62,121,230, -147,109, 4,136,176,188,218, 89,237,228,229,218,228, 68,125, 66,108,186,178,120,225,201,211,115,167,206,156, 91, 88, 89,185,184, -214, 90, 92, 94, 27, 37,217,189,223,126,199,191,252,158,119,220,186,119,123,150, 41, 83, 92,162, 96,125,249,226,169, 83,167,207, -158, 95, 90,234,116, 6, 73, 26, 71,225,174, 29, 51, 22, 41, 85, 60,245,212, 57,155,164, 33, 97, 41, 52,177, 9,140, 33,255,170, -177, 33, 34,244,165, 7, 94,149,203,248,165,241, 47, 29, 25, 4,241, 41, 99, 21, 99,140,170, 58,245,217, 44, 36, 34,235,116, 60, - 8,119, 34, 78, 75, 33,123, 27,202,140,223, 92, 35, 78, 0, 32, 10, 67, 4, 82, 85, 98, 6, 29,235, 95,148,241,171,109,136, 16, - 73, 85,125, 73,132,117,170,162,232, 85, 34,128,241,246,213,216,216,240,132,143,155, 25,111, 20, 12,140,241,233, 73,102, 12, 3, -178, 0, 78,148, 17,152, 88, 1,152,137, 17, 51, 25,215,196, 24,194, 92, 84, 0,141, 79, 16, 3, 34, 97, 41,142, 17,129, 24, 1, -217, 40,168, 90, 65, 70,100,159, 35, 5,175,139, 65, 21, 5,212, 39,161, 85, 84, 20,152,156,117,160, 10,134,137,216, 87, 58, 25, - 67,149, 74,185,213,238,236,216, 58, 1,226, 72, 17, 13,171,168, 83, 65,102,242,162, 21,137,152,196, 87, 23, 2,138, 82, 96,200, -115, 50, 1,138,168, 56, 81, 7,160, 0, 10,194, 10,228,189, 17, 31, 3, 29,160, 2, 56, 7,136,226,252,120, 5,212, 87,149,120, -123,126, 99,104,137,128, 42,185,205, 39,167,102,110,222,125,227, 19,167,206,148, 75,149,114,181, 82,170,148,119,239,218,181,176, -188,252,135, 95,248,226,187,246,191,137, 48, 76,147, 52,142,204,160,215,229,104,155,106, 54,191,212,218,115,227,206, 81,191,109, -194, 40,144, 88, 5, 56, 96, 36, 70, 36, 14, 2,155, 39,128,100,140,209, 13,179, 8, 73, 85, 24, 64, 0,192, 1, 24, 0, 4,114, - 86, 16,209, 90,139,160,136,198, 71, 47, 64, 16,177,224, 54, 66,248, 88,233,176,170, 3,117,146, 43, 50, 1,128,162,218,220, 49, -161, 50, 18,144,138, 32, 19,121, 89,197,168,170, 2,162,130,204,134,124,218, 85, 33, 12, 98, 0,116,206, 34,192,120,144,135, 64, -108, 84,156, 47,114, 21,245,202,138,140, 33,167,121,104,226, 36, 77,136,116,156, 47,242,226, 69, 85, 68,166,246,190,170, 54,179, -197, 37, 35, 6,250,147, 79,127,242, 51, 95,252, 26,154, 74, 37,192,119,191,237,109, 28, 16, 0,164,131, 65,123,113,105,121,117, -213, 58,105, 78,212, 3, 99,250,195, 76,151,151,227, 40, 10,194,208,165, 67, 21,151, 36, 35, 67,104, 85,134,195, 52, 77, 50,151, - 75, 64, 92,173,213,115, 52, 97, 64, 46,233,170,205,114, 17, 16,117, 89,218,233,172,229, 22, 13, 97,150, 43, 19,213, 27,229, 82, - 24,244,115,152,222,177, 55,203, 70,171, 75, 75,185,181, 21, 1, 46,213, 3, 80,102,189,112,230,137,176,188,181,179,122, 65, 52, - 80, 37, 16, 84,107,101,212,179, 78,195, 40, 38,130, 61,179,175, 76,134, 29, 53, 53,177, 57, 42,144, 9,202,205, 61,131,238, 26, -136,204,220,112,123,150, 14,196,229, 4,194, 81, 20, 85,202,104, 56, 79,179,176, 84, 14,163,210,112,216, 83, 83, 53,145,233,183, -151, 4,177, 55, 26,245,123,109, 92, 15,109,238,166, 38, 93,171,189,212, 25, 12,169,221,142,162,120,117,101, 41,119, 58,119,254, - 76, 24, 86,172,205,134,201,233, 44, 29, 5, 65, 96, 51, 43,146,198, 97,200, 36,104,130,233, 45,183,246, 86, 23,195,218, 84,185, -190,173, 74,162,136,203,107,173,133,165,101, 80,176,110, 56,236,181,206,174,174,130, 64, 16,151,179,108, 85,108, 70,176,140, 76, - 40,216, 91,190, 56,191,188,216,235,247, 20, 49, 73,211, 71, 31,255,203,137,137, 9,103, 53,168, 52, 7,131, 65, 38,169, 2, 88, -235,130, 32,156,156,106, 90,151, 3,104,128, 68, 76,150,141, 97, 28, 14,219,130,193,104, 56,184,107,239,141, 23,218,221,133,149, -139,184,178, 72,166,220,172, 87, 76, 96,122,105,146,103, 3, 38, 96,151,151,226, 70,158,167,195, 65,114,118, 65,103,119,196,165, - 82,121, 60, 50, 29,103,112,144,216,136,184,181,213,214,218, 90,171, 86,107,220,253,234, 59,136, 48,205,173,231,160,113,225, 7, - 5,170, 14,145, 4,156, 47,207,213, 13, 91, 81, 21,144, 20, 84,189, 27,217, 31,166,107,157, 52,140,107,211,219, 26,140,174,211, - 90, 58,191,112,225,220,133,133,229,181, 86,171,219, 93,110,119, 6,195,100,231,214,233,247,237,191,247,238,219,103,115,177,195, -158,148,130, 56,237,245,158, 90,152, 63,179,112,113,173, 59,112,226,166,167, 26, 55,223,188,247,244,217, 69, 96, 46, 85,226,211, -103,230,201, 74,189, 20,129, 8, 18, 41,162, 83,165,241, 40,130,137,192, 0, 16,162,211,113, 70,148,137,157, 8, 33,168, 74,174, -132,160,140,232,124, 25, 40,184,136,140, 29,151,178, 64,192,228,172, 16,162, 34, 24, 3, 35,107,197, 10, 51, 91, 39,234,237, 29, - 38, 43, 98,173,245,217, 50, 85, 37, 99,172,179,222,107, 6, 85,102, 82, 69,102, 20,241,166,133, 26,166,220,186, 60,115,202,192, -100,236,184,220, 5,153,145, 17, 28,128, 56, 69, 37, 81,107, 76, 8, 52,166, 50, 38, 64,194,212, 42,168, 16,129,183, 13, 12,162, - 83,205, 84, 2,230,205, 50, 14, 67,132,128, 42,154,137, 26, 34, 2, 80,113,140, 68,134, 93,154, 27, 80, 80, 18, 4, 22,103,125, - 38,194, 41,160,103, 88, 68,167,130,130,196,140, 76,190, 12,214, 23,184,122,141,141, 68, 34, 80,171, 77, 92, 92, 62,157,231,181, -144, 80,212,169,207, 28, 26, 38,149,113, 9, 18, 2,146, 33,103, 61,209, 9,100,224,216, 32, 43,146, 56, 21,231, 64,209,123, 8, -138, 10, 34,162,190,114,156,198,174, 3,130,170,146,250, 33, 4,137,115, 62,230,249, 66,130,113,194, 90, 69, 21, 56, 96, 64, 99, -157,222,249,234,187,207, 95,152, 95, 88, 89,154,218,178,101,122,102,102,106,203,204,205,187,119, 63,246,212,153,179,231,110,221, -185,101,107,127,212, 67,212,122,109, 98,208,105, 35, 81,181, 90,217,186,107,247, 83, 95,127, 36,207,147,220,166,213, 90, 96,130, -128,137, 1,213, 89, 11,104, 16, 65,197,137, 8, 33,138, 2, 43, 35,130,241,163, 51, 34,240, 67, 50, 28,103,160, 9,141, 31, 39, - 58, 95, 45,235, 61, 19,239, 75, 33,170,170,130, 69, 16, 64,163,164,126,112,162,226,179, 29, 64,232, 75, 89,216,103, 61,152, 65, -156,243, 9,115, 28,199, 74, 69,255, 9,130,136,130, 18,147, 79, 18,248,196, 4, 0,176, 65,151,171, 83,161,113, 32, 1,171, 57, - 3, 33,163,117, 74, 27,114, 65, 21,145,212,229,131,233,217,123,106, 51, 59, 92,158,178, 49,127,246, 7,191,253,187,127,242,117, - 19, 79, 72,214,125,239,187,222,177,109,231,174, 52,207, 2,209,214,202,202,252,217, 83, 43,171, 45,224, 82,109,106, 6,178,129, -129, 32, 29, 37,221,245,174,184, 60, 46,213,154,211, 77,237,182, 74,113,100,109, 38,206,101, 54, 77, 93, 94, 42, 85,235,229, 10, - 75, 82,170,110,145,128, 51,238,117, 58, 29, 10,227,220,229, 10,204, 1, 13,147,196,170,196,198, 89,173, 15, 70, 3,199,229, 82, -109, 34,203,134,224, 18, 84, 84,117,206, 57, 19,212,231, 47,156,201,168, 49, 53,177, 5, 70,171,106, 2, 43, 32,106, 21,113,126, -121,129, 77,108,109,154,231, 41, 84,234,195, 84, 34, 22,151,103,131,225,186,100,105,192,108, 69, 68,212,103,115,122,157, 86,226, -242,198,196,204,104, 48,232,118, 86, 21, 89, 1,196, 90, 1, 80,133,100,212, 37, 48,213,198,132,203,179, 94,175, 23,133,129,137, - 42, 75, 11,103,178,209,122,115,219, 45,229,200,220,176,125,103, 54,234,153,184,220, 27, 38,245,106, 61, 10,203,189,206, 90, 92, -170,142,186,139,149,153,189,165,128, 85, 52, 52,148,231,125, 50,113, 9,183,212,154, 91,201,132, 65, 16, 24, 54,233, 96,117,219, -204,119,116, 86, 22, 6,131,182, 76, 54,195, 82,221, 74, 14, 46, 79,135, 61, 32, 50, 65,144,167, 46, 87, 23, 33,143,178,180, 82, -174, 37,233, 96,219,150, 27, 90,181, 70,150,165, 26,106, 24, 69, 1,241, 32, 97, 67,148,185, 94,187,219, 73, 50,231,242,132,162, -184,187,218, 66, 65,231, 50, 50,193,133, 85, 37,164, 44, 79,213, 89, 19,198,140,124,186, 53,216, 53,201, 2, 21,177,105, 92, 42, - 37,253,110, 35,174,138, 75, 71,157,213,230,142,221,195, 81,175,213, 94, 67,217,246,138,155, 74,140,234,198,190, 49, 50,113,127, -208,153, 59,191, 88, 46,197, 55,207,238, 49, 97,148,187,204,229,138, 14,253,248,123,236,212,131,140,125, 6,241, 58, 75,198, 57, - 54,167,222, 67, 36, 34,107,243,139,173, 65, 38,220,152,218, 22, 71, 81,210, 95, 95, 92, 94,124,234,204,217,179, 11,139,237, 94, -175,213,233,118,122,189, 82, 92,126,231, 27, 94,251,206, 55,237,171,150,195, 81,226, 2, 53,145, 38,171,243,231,207,157, 91, 92, - 90,239, 14, 70,137, 32,108,105, 84,102, 95,121,235,133,197,229,199,207, 94, 40, 7,184,182,222,139,201, 84, 75, 33, 42,134, 65, -224,198,222, 0, 16,142, 5, 59, 40, 56,149,141,178, 58, 5, 6, 95,255, 38, 10,226, 36, 12,200, 41,138,117, 34, 68,164, 72,156, -139,168, 42, 51,123,211,213, 48, 17,177,117,121,234,124,165, 10,102,214, 5, 76, 1,147, 83, 80, 85, 38, 22,117, 42,192, 72, 10, - 10, 32,226, 52, 52,236, 68,112,108, 61,131,127,246,136,208, 1,128, 8, 51, 25, 0, 98, 84, 1, 2, 96, 36, 32, 20,159,158,246, - 66,158,129, 48, 96, 4, 69,100, 66, 1, 85, 37,113, 62, 31, 71,138,224, 69,165, 56, 65,194, 72, 89,124,157,147, 2, 51, 90, 39, - 2, 42, 0,145, 65, 5, 18, 21, 98, 54, 68,128,148,169,122, 39, 7, 80, 65,156, 2,169, 19, 1, 4, 52,140, 66,214, 90, 66,212, -208,215, 74, 17, 19,138, 8,140, 77, 9, 95,252,135,170,121, 16,150, 38, 43,165,245,110,111, 75,179,225,131,156, 34,130,128, 16, -160,108,184, 21, 46, 87, 81, 68, 84, 64, 81, 85,181, 10, 64,164, 99,205,192, 8, 2,170,138,130, 52,254,244, 64, 1, 4,137, 65, - 81,172, 35, 38,246,151, 74,164, 54, 21, 37, 7,186, 81,227,130,160,110,236,114, 32, 19,170,179,121,169, 90,187,235,219,238,250, -227, 63,249,194,242,210, 98,181, 86, 15,162,248,134,237, 59, 86, 90,107, 95,254,234,215,182,239,127, 75, 28,151,179,124, 24,215, -106,177,228, 23, 47, 14, 67, 99,150, 22, 22, 43, 19, 19,235,173,118, 24,123, 19,204,224,216,222, 64,207,192,170, 42,121, 38,200, -204, 70,196, 17, 49, 81,232, 63, 43,218,240,179, 16, 0, 12, 27,111, 21,233,216, 95,115,234, 11,131, 2,190, 36,105,140, 8,140, - 8, 34,234,247, 38,102, 36,244, 55, 15, 68,199,229,236,168, 32, 32,190,150,212,215,216,128,142, 75,109, 68,113, 92,180, 48,182, - 63, 85, 85, 69,137,213,151, 69, 48, 7,164, 98,157, 35, 38, 14, 24,133, 16, 89, 37, 71, 96, 36, 22,201,136, 66, 21, 23,213,118, -212,182,236, 68, 4,230,224,212,151,190,240, 59,159,250,255,106,181,173,157,214,185,183,190,238,222, 91,111,125, 69,150,165, 28, - 5,157,149,133,238,106,123,121,117,197, 90,104, 76,149,226,184,100, 9,195,176,108,162,164, 1,178,222,110,159, 63, 63,119,113, - 37,170, 82,178,109,186, 62, 72,135, 73,154, 39,105,110, 51, 91,159, 40,199, 1, 4,165,173,170,132,146, 35, 50,228,105,150,118, - 45, 4,169,115,226, 50, 75, 84,173,148,137, 57,181,118,152,185,153,157, 59, 42,149,242, 96,208, 67, 66, 21,181,121, 42, 38,130, - 60, 3,200,107,245,109,105,154, 14,214, 22,201,148,157, 64,192,156, 13,215, 19, 9, 87, 90, 75,235,221,238, 40,203, 51,155,169, -205, 40, 44, 27, 19,174,183, 22,163,184,142, 6,140,137,145, 41, 57,115,222, 4, 17,163, 68,198,116,187, 29,181, 26,134, 81,185, - 82,115,226,162,106, 9,200, 25, 14, 20,110,112,214,109,223,182,221,102,195, 76, 48, 27,246, 65, 29,153, 64,192, 86,170,211,131, -238,106, 92,138,182,110,217,181,182,114,126,170,222, 84, 67,206, 13,107, 19, 19, 1, 2, 75, 53,144, 60, 25, 14,162,114,205, 84, -170, 49,213, 37,235, 7, 51,187, 7,253, 85,102,142,202,187, 64, 29,112, 41,203,134, 81,173,225, 72, 13, 7, 73,175,213,168, 79, -165,214,154, 32,170, 54,102,192, 37, 75,231, 30,157,154,222,147, 59, 11,163, 65, 20,149,203, 1,198,129,169,150, 75,221,254, 80, - 65, 93,218,199,184, 81,203,157, 77,250, 65,174,219,118,108, 71, 19,217, 44, 85,113, 64, 84, 41,213,109,158, 17, 3,128,201,211, -190,179, 57, 6,165,222, 96, 80, 14,227, 85,130,149, 94,210,152,112,208, 31, 0, 64,158,230, 61, 24, 13,147,164,222,152,110,175, -181,106,147,145,203, 7,167,207,205, 15,134,201,171,110,105,198,149, 10, 10,137,216,179,243, 23,218,189,225,238, 27,119, 77, 55, - 39,178, 44,115, 89,134,136,138,168, 62, 25,132,254,193,219,168,114,240, 41,214,113,246, 94, 64, 21, 81,128, 80,156,180,186,195, -206,208,197,229,137,153, 90,197,142, 70, 75,231,206,205, 47,204,159,159,191,184,212,106,181,187,221, 86,175,151,165,246,206,155, -103,223,251,142,239,188,249,198,109,163,204,166, 73, 94, 22, 28,244, 86,207,159, 95, 56,187,176,214, 29,140,172,186,173, 83,141, -198,150,173, 23,206,158,251,236, 23, 78,150,131, 32,207,178, 52,135,233,114, 89, 84, 16, 9, 9,212,123,153, 34, 56,118, 55,208, -169, 58,231,216,144,115, 18, 18,163, 33,171,194, 42,128, 24, 18,229, 0,110, 92,157, 1,129, 33,231, 68,172, 53,134,189, 74, 52, - 72,128,224, 92,158,185,156, 96, 35, 87,139, 24,109,102,138,201,128, 42,128, 18,250, 79, 48,189, 55, 5,113, 76, 10, 34,153, 50, -128, 34,230, 78,152, 8, 72,179, 60, 67, 50,198,127, 59,164,222,178, 85, 1, 82,151, 19, 27, 5, 13,144, 19,231,194,200,168, 83, -245,197, 60,136, 2, 40,226, 24,124,217,166, 26, 36, 50,152, 89,117, 78,195,144, 69,209, 58,103,173, 35, 0, 38, 18,135, 0, 24, - 24,114, 78,243,220, 5, 1, 48,155,192,248, 50, 80,112, 98,141,138, 67, 36, 81, 71,134, 68, 4,145, 16, 72,172, 48,131, 49, 36, - 42, 2, 32,160,164,226, 54,138, 66,112,252, 25,212, 56,155,154,229, 73,109,114,106,101,101,109, 28,207,189,208,222,240,154, 17, - 81, 9,212,249, 76,186,108,116, 21,170, 47,209, 3,207, 77,130, 48,246, 42,128, 54, 62,246, 25, 39, 97,217,187,211,214, 9,179, - 81,151, 19,178, 83, 63,142,193, 49,217, 33,248, 17,205, 56, 5, 12,154, 12, 71,123,102,111, 57,125,250,244,133,197,165, 70,163, -185,101,199,142,234, 68,109,239,141,187,190,252,245,199,159, 58,191,244,138, 91,246,228,121,146,140,134,113,185,182, 99, 87, 20, - 24, 57,245,248,233, 93,123,247,152, 32, 41, 85,234, 68, 1,128, 32, 69,224,220,248, 35, 47, 68, 38, 35,148, 89,107,137, 25, 20, - 69, 69, 92,230, 83, 57,170,162,190, 40, 17,141,194, 56,167, 36,170, 68,232,172,168, 2, 35,128, 19, 96, 2, 85,223,131, 72,236, -172, 85, 81, 52, 6, 8, 21, 68,133,137, 89, 20, 20,128, 9, 85, 85, 4, 8,193, 16,142,211, 84, 32,224,227, 8,121,151, 19, 67, - 34,231, 3,207,255, 79,213,155,253, 74,214,165,103, 94,239,176,214,218, 83,236,136, 56,113,134,204, 60,249,205, 67,125,245, 85, -149,171,108,183,171, 61,202,237,169,236,114,149,237,178,171, 12,182,154, 73,160,166,251,134,255, 4, 80,171,155, 65, 72, 8, 9, -209,146,133, 68, 35,220, 72, 92,210, 32,104, 48, 32, 89,242, 88,245, 77, 57,103,158, 49, 78,204,177,199,181,222,151,139,181, 35, - 11, 50,165, 84, 94,100, 70,158, 19,185, 99, 13,207,251, 60,191, 7,148,137, 21, 85, 69,137,152, 73,189, 6, 47,113,233, 7, 20, - 84, 85,239,125,232, 58,107, 48,222,231, 84,213, 36,217,233,187, 95, 37, 4, 74,204,139, 79,255,230,159,253, 55,127,162,110,180, -188,123,241,213,143,222,255,185,159,255,217, 46,120, 96,244, 93,104,218,254,102,177,171,193, 38, 9,151,179,135, 64,224,210, 98, -183, 94, 24,195,100, 56, 79,243, 15,190,244,177,181,233,242,213, 95, 3,105,219,132,237,182,170,186, 62,248,112,118,118,127, 58, - 59,111,154,125, 0,169,235,202, 11,144,113,237,186,107,219, 29, 25,139,100,186,206,247, 94, 70, 46,181, 0,187,166,121,119,114, - 4,168,155,249, 85,223,122, 87, 76,172,115,208, 87,189, 49, 73, 90, 74,168,193,140,178,241,189,213,221,173, 73,210, 34, 47,119, - 55, 23,139,229,221,174,237,117, 95,251,118,211, 7, 63, 61,126,216,245,126, 52,153, 30, 1, 88, 3, 89, 62, 65,114,128,222,158, -165,121,146,167,105,102,152, 84,186,229,106,147, 39, 6, 80,136,178,209,228,220, 88, 84,223, 72,144,106, 95,161,111,179,188,196, -182, 41,102, 39, 8,208,213,123,147, 30, 17, 33,205,206,170,218,135,230, 57,187, 4,129,250,174, 77,138, 50,207,143,154,102, 75, - 46, 51, 46, 81, 47, 73, 90,132,182, 49,142, 66,223, 58,151,245,198, 73,232, 52,116,171,187,235, 98,122,146, 22, 71,190,107, 12, - 83, 93,175,211,209, 24, 73,178,209, 36, 47,198, 62, 8,132,108,118,254,177, 53,148, 1,251,242,120,185,184, 42,138,113, 39,125, - 49, 30,239,154, 94,136,243,108,212, 84, 43,144, 22, 56, 17,224, 81, 98,171,190, 13,125,207,214, 54, 77, 5, 96, 64,252,126,183, -152, 28,157,250,224, 67, 8,142,123,223,238,217,218,137,213,206,211, 23, 47, 94,125,244,240, 62, 42, 74, 16, 84,153,142, 71,105, - 49, 42, 39, 51,101,102, 55, 6,128,203,249, 46,207,138,119, 30,146,248,230,114,190, 24,149,147,175,125,249, 13, 67,212,212, 13, -128,196,241,215, 96,116, 68, 5,140,118,222,131, 27, 66, 5, 84, 80, 15,167, 25, 16, 36,106,218,126,185,235,132,178,211,211, 41, -128,236,215,183, 23, 47, 47,158,189,120,113,113, 59, 95,172,215,183,203,245,102, 87,189,255,198,249,183,255,222, 55,127,234,227, -119, 44,187,253,182,117, 72, 88,181, 47,175,174, 94, 93,221,222, 44,183,117,215,191,243,214,131,147,251, 39, 79,158,190, 68,210, -227,123, 39,207,254,246,209, 46,108,167,206,154,193,225, 67,162,241,164, 27, 53,211,232,234,132, 32,130,128,214,112, 28, 4,196, -207,138, 1,138,150,142,160, 26,143, 80, 68,136,214,136, 23,195, 24,212,196, 89, 89, 28, 10,247, 65, 25,137, 1,172,165,198, 7, - 11,106,136,131, 6, 80, 12, 74,128,195, 13, 56, 26,251, 68,212, 32,244,209, 75, 42,154, 25, 91,249,158, 20, 28,155, 56, 85, 82, - 50,136,104,163,193,148,200,135, 48, 88, 10,137,226,118, 34, 42, 28, 71,109,136,206, 26, 81,144, 0,200,234,144,227,103,158,152, - 64,201, 7, 69, 0,107, 89, 68, 69, 4,227,228, 79, 69, 80,153,136,129, 36, 32,168, 26,199, 10, 72,160, 34, 24, 68,218,174,117, -136,252,251,191,245,173, 97,220, 6,168,162, 72,175, 61, 27,136, 8, 76, 3, 57,128,227, 59,166,175,135,126, 8, 58,172,215,204, -128,236,154,253,154, 92,150, 36, 12,196,241, 37, 98, 70, 32,122, 57, 68, 5, 84, 3,196,212, 67,156, 66,176, 68,186,128, 34,129, - 34, 34, 25, 98, 99, 16,135,191, 70, 67,186,211, 67, 52,150, 96,180,114,197,131,132,210,143, 29,245, 49, 43,134,132,164, 97,200, -143, 74, 16, 4, 62,154,142,127,248,233, 39, 68, 48, 30,141,147, 52,203,146,108,191, 93,126,246,248,233,199, 31,127,148, 37,182, -174,107, 66, 80,239,159, 63,125,218,116, 97,113,123,169, 64,121, 90,152, 52,161, 97,240,136, 32, 74,209,199, 2,138,136,108, 76, -100, 57,224,193, 26,140, 0, 8, 6, 34,126, 0,130, 72, 0,160, 56,250,136,130, 13, 27, 27,141, 4, 68, 76,108,162,163, 37, 72, -128,104, 93, 31, 50, 92,131,135, 61,142, 92, 6,187,165,101,130,215,184,135,104, 0,245, 56,196, 78,134,205, 16, 16, 85,149, 7, -159,232, 48,174, 8,162, 28,125, 59,131,171, 85, 1,145,172,173,246,107, 75,136,132,140, 24,188,156,189,251, 19,105, 81,114,238, - 86, 47,159,253,103,255,225,127,212,248,164,217,109, 30,220, 59,254,227, 63,254, 55,157,195,222, 7, 98,187,190,189,221,238,171, -171,235,155,166,247,227,201,145,177,174, 93,223, 74,223, 5,213, 52,207,122, 31,218,221, 38,203, 83,223,110,250,250, 46,205,210, -229,114,253,242,250,122,185, 93,239,247,245,116,148, 55, 77, 91,215, 45,170,162,239, 12, 66, 85,109,171,118, 95,183,149,146,171, -118,123,237,155,162, 40, 70,197, 24, 92,126,122,255,173,119, 62,248, 56,136,174, 23, 55, 38, 25,245, 77,131, 32,171,155,167, 2, -100, 56,247,221, 62,207, 50,241,109,211, 6, 54,110,179,184,122,249,252,211, 94,112, 50, 59, 43, 82,158, 76,142,206, 78,207,207, -238,189,153,229,101, 98,168,200,115,107,243,196,210,241,100, 58, 59, 58, 97,195,134, 57, 75,115, 38, 5, 5, 52, 73, 90, 28, 21, -163,177,229,132,136, 67,183,214,160, 93,187, 67,192,166,173,119,251,182,109, 27,235,220,110,241,188,105,118,163,233, 73,223,110, - 85,130, 37, 90, 46,174,187,118,239,210,162,241, 61,179,171,183,139, 98,116,156,164,101,215, 86,171,155,207, 93, 90,102,121,222, -238, 22,251,205,210, 38, 69,239, 59, 91, 76, 8,185,173, 87,190,175, 37,244,162,228,146,196,166, 37, 32,238, 23,215,192,201,120, -114, 66,100,155,106,125,118,254, 78, 91,175,125,187, 33,162,182,105,125, 8,156, 29,133,190, 78,211, 4,137,179, 98, 90,239,215, - 65, 84,196,231,121,177, 93,223,181, 29, 0, 83, 85, 87,139,229, 93, 80,204, 51,151, 37,174,235, 91,107, 18, 96, 72, 93, 74, 54, -201,211,204,184, 36, 39,220,182,225,106,185, 58, 41, 83, 32, 83,213, 85,219,181,204, 46,201,198, 46, 73,179, 52,223,239,119,251, -237,186,174,214, 47, 47, 46, 81,251,143, 62,124,127, 58, 30,139,130,136, 68,119,111, 20, 15,134, 88,182,198,103,137,200, 25,141, -122,251, 0, 21, 65, 85,181,132,190, 15, 55,155,106,223, 80, 54, 62, 46,139, 81,232,171,235,139, 23,143, 31, 63,254,225, 23,143, -159, 94, 94,221, 44,150, 23,183, 43, 66,252,222,175,255,194,191,245,189, 95,127,251,205, 51,239, 9,123,178, 33,108, 22,183,143, - 31, 61,123,118,113,119,117,183,244,193,255,157,159,254,170, 41,211,207,158,188,184,185, 93,172,119,213,103,143,158,165,168,211, - 44,183, 4, 97,136,104, 3, 68,119, 39,161,115, 22, 0, 33,102,172,226, 16, 14,193, 48,201,193, 21,148, 16, 67,212,226, 85,226, -194, 22, 36,136,130, 49, 20,130, 26, 66, 66, 66,132, 32,234, 37,240, 65,232,140, 30, 17, 66,236, 85, 12, 57,195,212, 41,164,142, -145,204,193, 16,135,200,208,118,194, 68,214,196, 40,169, 18, 34,177, 5, 84, 64,116, 76,113,177, 69, 21, 98,210,129,109, 64,113, - 24, 29, 21, 33, 98, 2, 0,102,102, 84, 32, 66, 38,199, 4,204, 17, 82,130,241,232,168, 64, 8, 76, 16, 84,131,168, 2, 48, 98, - 84,102, 40,154,115,112,216,179, 16,145, 77,100,143, 80,221, 7, 8,125,145, 39,252, 7,223,254, 13, 61,184,119, 32,190, 63, 81, - 33,145,225,128, 44, 65,137,249,240, 82, 8,113,113, 81, 80, 13, 0, 0, 2, 2, 2,170,224,101,189,171, 71,101, 1, 26, 87,174, -168, 91, 8, 18,137,246, 64, 20, 55,177,248,178, 3,133, 33, 42,243, 68, 81,134,102,107, 6, 97, 66,226,219,165,160, 10, 1,128, - 7,235, 33, 8,224,107, 67, 97,156, 88,170, 32, 17,113,188, 24, 69,145, 90, 68, 85, 33,248,208, 79, 38,211,122,183,190,184,188, -201,210,236,248,228,216, 57, 75,170,183,183, 55,155,170,249,240,189,119,189, 15, 93, 87,165, 89, 49,158, 30,127,249, 43, 95,109, -251,246,195, 47,127,109,183,153, 27, 78,226,117,239, 96, 56, 12, 68, 28, 69, 12,137,175,141,135,159, 49, 30, 2,114,112,197, 12, - 70,196, 67,134, 0,152, 8, 48, 62, 88, 68,196,100, 24, 1, 37, 40, 17, 25, 34, 5, 85, 15,198,152, 56,241, 4, 68, 20,137,238, -182,190, 29,161, 0, 0, 32, 0, 73, 68, 65, 84,210,184, 43,134,136,154,137,142,174,225, 55, 48,108, 11,162,196,104, 0,227,163, -131, 68, 76, 8, 64, 94, 36, 98, 9,226, 89, 67, 68, 0,133,200, 16,185,122, 55, 79,153, 0, 21,130, 47,207,222, 62,122,235,125, - 16,237,170,221,127,245, 79,254,233,213,170, 75, 51,155, 37,246,223,249,247,254,225,241,236,168,218,239,200,119,187,229, 98, 87, -215, 47, 94,188,218,108,150, 73, 49,153,156,156,249,190,101,231,128, 93, 8,146, 48, 43, 48, 24, 50,201,168,222,220,181,213, 93, - 98,146,229,102,253,234,250,102,189,217, 6,193,223,248,213,223,235,219,118, 49,191,186,186,122,186,175,118,183,183,175,124, 16, -199,198,247, 34,202,125,187,207,210,180, 44, 10,195,228,202,163, 55,223,253,210,244,236, 65, 83,239,250,182,118,233, 40, 27,143, - 17,144, 92,105, 93,230,251, 30, 84,250,174,221,205, 95,112,146, 45, 87,243,128,238,250,246,210,165,227,212,130, 74,200,243,137, - 49,166,111,183, 94, 2,187,172,223, 92,229, 89,234, 18,227,146,188,235,118,109,189, 27, 77, 79, 65,186,229,226, 82,218,122, 58, - 59, 7,109, 49, 52, 77,179,113,105, 81,237, 54,189, 8,114, 90,213, 53,160, 33,194, 32, 82,237, 86,161,111,102,247,223, 47, 70, -211,253,110,213,215,173,115,217,236,244,205,147,179,243, 94,250,224, 1,217,161, 77,172,181,210, 44, 85,125, 54,154, 37,197, 81, - 91,237,140, 27,155, 52, 77,242,145,203, 70,214,230,117,187, 35,147,155, 36,103, 67, 46, 29, 85,235,185, 37, 76,210, 44, 59, 58, - 31,141,143,251,118,139,108,136,141,223,207,145,204,232,248,156, 93,201,214,248,110, 75, 73, 62, 61,122,144, 36,142,141, 73,178, -204, 37,169, 73,138, 36, 47,154,102,183, 93, 47, 44, 81,154,101,132, 66, 54, 57,157, 30,237,234,250,238,246,154,141,173,234,170, -107,235,206,123, 38,211,183,219,213,122,233, 69, 63,120,227,222,182,237,151,155, 13,133,198, 37,229, 40, 27,185,180, 92,239,107, - 34,241,245, 22, 3, 84,237,254,114,126, 53, 57,122, 99, 84,158, 78, 39,169, 97, 82, 17,124,125, 46, 64, 2, 80,160,168, 18,131, - 4, 69, 38, 9, 18,215, 82,149,128, 0, 0,194,140,219,166,191,217,244, 1,220,209,244,152, 49,236, 86,243,103,207, 31,127,242, -249,163, 31,126,254,248,226,250,230,118,185,220, 87,205,199, 31,188,253,143,254,248, 59,191,252,115,223,240, 34,190,131, 4,201, -239, 54, 47,159, 63,253,228,139,231,215,203,205,106,183,127,120, 58, 61,185,119,246,249,203, 23,159,124,250,248,141,251,103,159, - 62,126,213, 85,213, 89,153, 23,169, 83,208, 32, 26, 68, 85, 5,163,237,131, 32, 6,119,172, 97,112,164, 33, 14,117,129,136,122, - 47, 42, 18,207,209, 65,197, 43,112,244, 46, 0,244,126,208,117, 5, 1, 68,153, 49,250, 62, 16, 49, 49, 6, 9,131, 42, 15,139, - 48, 8, 2, 19, 89,195, 30, 48,179, 22, 5,188,134,120, 8, 19, 0, 5,112,214, 32, 66, 8, 66,128, 48, 28,133, 21, 8, 0, 48, - 72, 24,178, 94,138,204, 28, 79, 89, 17, 84, 67,108,144, 8, 85, 84,145, 9,117, 96,216,160, 42, 9,136,202, 96,196, 16, 37, 4, - 77,172, 17, 80, 17,140,192, 32, 2, 13,170, 28,121, 35, 0, 4,100, 12,139,130,136, 26,195,168, 74,134, 59,213,166,105, 82,103, -153,137,191,255,157,223,164,193, 3, 27,255, 43,113, 56, 82, 14,110, 62, 53,150,162,219, 58, 26,209,117, 72,240, 12, 22, 60,208, -120,188, 14,198,218,219,249,109, 94,148,206,177,198, 23, 84,193,131,129,230,199,145, 7,130,225,172, 13,128, 24,167, 13, 8, 68, -108, 57, 90,252, 76,132,176,196,113, 13,197,220,231,193,131, 79, 28, 65,104,195,227, 6, 26,185, 5,164,140,160,196,150,145, 67, - 52,226, 40,196, 51,242,249,189,251,207,158, 63,109,219,182,200,179,241,120,102,140,181,172,127,253,195, 79, 79,206, 78,238,157, - 28,119,189, 39, 32, 8,253,118,183, 33, 8,183,151,175, 86,203, 85,154,100,196,198, 88, 23, 79, 3,175,173,193,130, 2, 66,113, -226, 11, 32,136,134, 40,186,144, 56, 98, 12,134,141,148, 7,136, 2,188,118, 35, 29, 28,184, 18,130, 30,192, 2,226,163,134,136, -135,189,250,199,139,120,124,239, 48,230, 9, 68, 95,179,110,226, 9, 29, 21, 52, 62, 23,128,192,164, 50,120,187,162,186,207,131, -243, 17,135,108, 25, 2, 51,147,117, 65,197,239,214,206, 26, 13,158,147,226,244,163,159,100,102,145,246, 79,255,228, 79,126,244, -249,243,196, 25, 75,240,123,223,253,238,151,190,244,222,118,117,135,100,219,186,106, 3, 94,221,204, 23,203, 85, 47, 48, 57,154, -161, 73,250,182,202, 38, 39,125,211, 36, 9, 33,185,116, 84, 52,187,109,183, 91,246,161, 69, 95,177,179, 55,139,213,197,245,237, -114,179, 45,199,227,159,253,198,207, 1, 64, 78,112, 60,202, 13,202,114,219,174,246,213,118,191,107,218, 94,180,103,194, 34, 47, - 38,229,212,230,229,244,228,236,225, 59, 31, 5,213,186,218,239,151,175, 4, 8,149,148, 64,130,239,219,150,216,182,213, 70,196, -231,229,177, 74,111,109, 10, 34,183, 55,151,121,158,213,155, 59,103,147,114, 60,201,199,167,117,179, 67,118,121, 81,250, 32,214, -165,163, 98,214,117,149,177, 57, 24,183,189,254, 36, 27, 29,179, 49,134, 19,147,100,108, 24, 52, 32,217,188, 60, 82, 96, 64,118, -206, 25,118, 73,154,163,116,105, 49, 33, 99,219,174,149,126,135,208, 50,115,146,151, 77, 93,245,221,158,216, 58,227,210, 52,147, -208, 97,240,162,128,224,243,242,184, 24, 77,156,113,189,111,108, 58, 98, 55, 66,245, 74,228,235, 93,223,109,242,242,132, 20,122, -241,134, 25,173, 51,198,238,182, 43,182,142,140, 97, 99, 99,186,210, 24,199,217, 68, 85, 33, 52,117,189,201, 70, 39,163,209,152, - 13, 89,151, 4,223,245,189, 10, 0,160,233,155, 42,244, 45,113, 66,198,132,208, 55,117,195,132, 41, 67,211, 54,147,241, 52,201, -179,201,248,168, 24, 77, 20,176,109, 27,239, 67, 89,142,203, 34, 67,208,220,152, 77, 47,109,144,113,158, 1, 99, 85,173,242, 44, - 29, 21,121,211,237,151,187,181, 97,120,112,255,173,179,147,147,106,187, 94, 44,119,229, 40,201, 83,171,138, 42, 66, 48, 92,209, -135, 73,219, 0,152, 82, 38, 36, 80, 20,136,200,150,222,251,249,166,219,214, 56, 25,207,202, 34,107,170,213,197,243,103,159,126, -241,197, 39, 95, 60,125,252,226,226,213,205,124,179,175,207,207, 78,191,247,107,191,248, 71,223,253,123,199,179,241,110,215, 27, - 49, 86,252,245,171, 23, 95, 60,121,252,236,114,190,221, 55,247,206, 78,198,179,169, 97,117,229, 72, 20, 94, 93,222,173, 23,171, -113, 98,167,101,106,145, 68, 85, 20, 66, 76,209,255,255,115,127,113, 2, 23,231,169,140,112,192,155, 69,176, 10, 4,141,209, 36, - 36, 32, 25, 78,147, 24,189,136, 3,171, 64, 69, 69, 13,198, 56,186, 26, 68,136,142, 65, 80, 69,160, 40,204, 14,218,189, 40, 0, -227,193,251, 73,200,136,170,106,136, 37,202, 53, 3,175,140,130,132, 32, 18, 1, 39,160,135,241, 24, 0, 30, 66,142,175,131, 53, -206,146, 2, 17, 64, 12,161, 19, 2, 35, 25,102, 66, 18, 47, 49,168, 31, 68, 52, 40,198,239, 14, 81, 7, 7, 53, 5, 80,199,230, - 64,157,194,214,183,187,106, 11,234,157,117,251,170,119, 4,121,150, 2, 16,255,193,183,191,133,128, 32,175, 23,225,248,134, 28, -244, 25, 27, 67, 68,131,183,250,240,103,226,152, 69, 20, 15, 75, 60, 34,147, 37,241,141, 15,121,158, 31,210,249, 26,205,253,209, -208,205, 68,134, 34, 25, 17,226,238, 19, 95, 41,134,155,226,228, 48, 90,194,225, 0,210,138, 99,113, 24,214,188, 65,111,127,109, - 24, 29, 88, 25, 24, 81, 92, 49,195, 48,172,161, 17,209, 3, 10,105, 86,140,203,209,211,103,207,153,185, 44,203,108, 52, 10, 93, -232,251,238,217,197,213, 87,190,252, 1, 2,181, 77,197,132,109,211,148,211,217,252,246,250,205,247,190, 74,208,249,222,179, 51, -113,202, 26,255,209, 32, 66, 58,124, 85, 10,192,104, 40, 14, 22,226, 20, 34,154, 96, 20,137,137,162, 85, 95, 33, 14, 21,136,137, -140, 9,189, 87, 64, 98,139,168, 34,253, 0,212, 68,208, 32, 68, 6, 35, 82,143,136,137,226,162,124,152,208,202, 1, 25, 54,248, -236,163,111, 21, 16, 72, 68, 34,129,136, 40, 18, 14, 16,128,137,192, 48,200,240, 22, 34,162, 49, 6, 17, 25,185,105, 26,232,247, - 8, 2,156,223,251,248,103,146, 36, 1,134,127,241, 39,255,237,255,243,127,253, 37,160, 26,196,239,254,238,239,127,253,103,126, -170,243, 33,180,173, 2,118,166, 32,103, 30,127,254,105, 35,198,229,163, 52, 43,200,164,140,218, 53, 85, 62,158, 16,160,203,242, -221,106,153,100, 37,166, 73,187,124, 73,136,226,195,139,171,155,235,249,124,187,223,190,255,206,151, 63,120,231, 75,221,126,169, -205, 70,212,247,109,171,234, 45,163,134, 80,181,181, 97,195,200,153, 99,227,242,201,233, 27,179,211,183,239,189,249, 86,219,214, -187,253,222,216,210,185,164,171,215,100,178,174,173,251, 94,234,253,109,223,183,157,247, 73,146, 74,223,230,121,190, 92,221,117, - 34,227,241, 44,203,138,114, 60,214,208,231,229,209,110,179, 40,203, 19, 98,139,136, 10,237,102,187, 12,192,142, 2, 38, 83, 82, -200,203, 99,237,122,180, 22, 65,251,102,143, 12,105, 49,147,222, 19,120, 36, 98,230,182,221,131,244,251,245,157,181,217,126,121, - 1,192,105, 62,203,199,227,166,217, 27, 87,244,138,189,247,132,241, 14,174,198,166,117,215,248,110,107,216, 41,168, 75,138,196, -242,250,238,185,117, 5, 51,245,253,174,111,186,180, 24,141,167,103,204,184,185,123,101, 76, 10,218, 26, 67,136,144,184, 12,145, -130,111, 69,149,217, 26, 75, 26,194,110,241, 60, 75, 70,197,120,150,101, 83,147,142, 66,215,181,251,185,168,189,187,248,209,228, -248,173,122,123, 19,131,135,210, 86,206,114,219,238, 67,232,179,172,172,186, 32, 2,137, 69, 38, 98, 54,137, 97,245,189, 72, 79, -168,198, 24, 36,174,118, 27, 31, 72,197, 79,138,114,177,217, 85,125,119, 54, 61, 74,139,210, 80, 39, 18,182,141, 47, 71,179,113, -145, 10, 36, 1, 85,250, 74,208,237,250, 60, 75, 37,205, 48,242, 81,226,113, 74, 67,148, 21, 40,114,105, 14, 92, 41, 21,213,249, -182,190,221,116, 46, 25,151,227, 50,116,245,245,197,139,199,143,158,124,246,248,201,167, 79,158,190,186,157, 95,223, 45,147, 36, -253,189, 95,249,217, 63,250,206, 47,127,249,131,183, 3,128,118,152, 42,237,239,110,159, 60,122,252,248,229,213,197,221,218,251, -254,239,254,244,215,147,163,209,143, 30, 63, 73, 45, 93,174, 55, 79,159,190,204, 13,165,150, 51,103, 53, 0, 49, 4,145, 32,209, - 51, 29, 93,208, 50,160, 90,108,212, 3, 34,247,102, 56, 74, 17,146, 33,138,160, 52, 38,142,176, 64, 96,136,218,240,144, 39, 50, -228, 67, 32,226, 65,156, 9, 0, 40,150, 56,232,160,144, 14, 4, 42,102, 38,244, 58,172,231,132, 36,160,175, 19,234,168, 58, 88, - 51, 15, 25, 49,141,169, 46,132, 32, 64, 17, 53, 16,165, 87,133,131,122, 67,135, 83, 32,121, 81, 4, 32, 5,136, 91, 11, 35, 51, - 43, 64, 47,194, 68, 74, 36,226, 69, 21, 1,141, 97, 47, 42, 0,134,144,153,124, 0,131,104,216, 40,170,146, 1,208, 32,186,218, -239,171,170,114,198,214, 94, 0,100,154, 23,200, 54,168,231, 31,252,206,119, 15, 78,202,248, 83, 65, 35, 98, 43, 26, 66, 44,136, -210, 16, 53,178,120,176,112,128, 68,115,203,192,251,164, 0,136,100, 19,190,157,207,103,179, 99, 38, 84,145, 24,137,141,163,246, -136,110,128, 65,136,143, 17,241, 3,150, 40,206,110, 68,145, 8, 16, 53,196, 69, 76, 98,250,102, 8,215, 15, 70, 73, 6, 21, 84, -133, 40, 97,199, 61, 15, 9, 9,136, 56, 2,213, 16,144, 15,129, 13, 36, 20,239,167,211,201,124,126,189, 90,109, 18,151, 76,143, -142, 29, 19, 72,255,228,217,211,172, 40,223, 58,191,215,180,173, 34, 56,166,187,249,197,213,197,229,104, 84,186,196, 86,251,189, -115, 9, 17,147,177, 33, 4, 68, 34,130,200, 81, 34,138, 90, 25,129, 12,236,203,104,101,137,215, 87, 36, 67,196,145,191, 51, 60, - 3,162, 16, 20, 13, 33,160,104, 79, 20,103, 32,131,254,101,173,141,102,128,232, 55,141,204, 3, 56, 32, 68, 99,154, 44,166,121, -227,115, 19,159,187,110,191, 92, 47,110, 34, 16, 15, 0,120, 8, 72, 33, 24, 82, 81,239, 37,158,238,153, 34, 21, 68,144,184,107, - 27, 13,173,113,233,233,251, 63, 81, 76, 38, 64,244, 47,255,135,127,254,191,252,203,127, 69, 76, 10,221,111,255,246,239,254,210, -183,126, 45,180,141,175,107, 52,166,222, 85,197,241,241,103,159, 60,218,119, 98,179, 12,186,189, 77, 70, 54, 45,162, 11,117, 92, - 78,186,182,219,109,230, 68,214,247,221,118, 91,181,219, 87,214, 38, 77,239, 95, 92, 93, 94,223,173,171,166,254,230, 79,255,226, -249,241,113,189, 93, 62,124,112,186, 95,173,246,251,253,110,191,238,154,174,239,187, 8, 38, 78, 24,242, 98, 60,154,220, 59,190, -255,230,201,131, 55,210, 34, 91, 92,189,234,234,141,248, 94,124, 67, 54,221,205,159,145, 43,144,220,120, 58, 29,143, 38, 93,215, - 49,104, 93, 45,154,166, 93, 46, 87, 89, 94, 74, 8,155,213, 69,146,142, 58,133,237,190,113,217,116, 84,100,193,119,196,166, 28, - 31,133, 0, 65, 67,232, 27, 32,155,142, 38,228, 43,128,192,198,121,239, 67,223, 10, 0,153,188,110,246,192, 68, 40,136,214, 37, - 37, 17, 37,249,136,172,117, 46, 1,232, 93,146,102,121,193, 38,173,215, 87, 26,124, 50,154,248,221, 2,141,101,240,187,197, 75, - 55,154, 58, 91,116,237,190, 24, 31, 39, 89,225,125,107, 92,162, 32,245,102, 97,216, 58,155,113,146, 75, 8, 22,177,174,118, 77, -181,156,158,188,195, 72,249,228, 56,116,141, 34, 22,121,177, 91, 93,138,242,126, 53,223,111,230,247,222,250, 74,231,219,197,205, -197,252,197, 95,228,227,211, 16,250,190,222,165,197, 88,209,222, 92,127,114,114,255, 67, 68,234,251,122, 52, 62,107,218,189,244, -125,154, 79, 73, 68, 67, 39, 26,156,203,178,172,140, 10, 95,221,119,219,170,202, 18, 7, 10, 46, 41, 70,197,184,110,170, 52, 45, -124,232, 30,156, 28,239, 91,185, 92,220,158,159, 76,170, 30, 92,126,154,165,206, 38, 25, 91, 62, 59,190,223,117,226,123, 13,190, -201, 39, 71,187,154, 74,199,169,141,247, 74, 19,153,131, 0, 98,144, 84,226, 32, 74, 25,177,106,187,139,219,170,237,205,209,236, - 56, 53,124,119,243,242,201,163,207,159,189,184,248,236,233,179, 39, 23,151, 55,155,205,174,106,191,254,225,187,255,193,223,255, -157,111,254,228,135, 10,228,189, 22, 38,211,186,122,241,236,241,231, 79,158,191,156, 47,230,203,205,135,111,158,177,113, 47,239, -110, 47,111,110,137,146, 31,126,250,197,126, 83, 21, 76,121,154,193, 64,116,210, 32, 34,162,193, 43,209,224, 3, 70, 34,235, 44, - 34,106,136,108, 69, 80,164,160,154,185,132,128, 68,189,138, 98, 60,161,171,180, 18,226, 41,151, 6, 9, 85,136,168, 11, 2, 8, -164,168, 8,170,106, 12,145, 65,223,171, 18, 48, 34, 19, 42,104,194, 36,136, 10,104, 8, 45,178, 0, 70,238,107, 98,141, 4,101, -166, 3,181, 81, 13, 50, 96,164,249,129,168, 32,128, 37,246,170, 6,217, 89, 51,200,179, 76,206,217,200,207,138, 94,113,162,152, -121, 66, 5,177,204,170, 16, 68, 84, 53,179, 6, 17,124,219,123, 65,203, 72, 68, 94, 52, 97, 78, 12, 5, 69, 85, 49, 20,229,254, - 96, 92, 70,113, 14, 2,202,100, 0,217,171, 4,145,105, 81, 32, 83,145,184, 46, 40,127,255,219,223, 2, 16,197, 8,122,199,193, -251, 4,136,136,162,138,209,195, 30,191,142,152,114, 18, 21, 8,135, 64, 64, 92,117, 89, 73, 21,149, 66,255,127,255,217,191,210, -236,244,236,120,172,226, 97, 24, 49, 2, 29, 96,185,170,162, 63,102, 10, 40,234, 0,208, 28, 36,102, 34,140,145,212,193,127,165, -196,230, 0,207, 26,134,190, 58,140,128, 33, 78,161,163, 63, 48, 30,134,145,145,137,145,136,140, 33,100, 34, 70,212, 56,236, 46, -139,209,231,143, 30, 25,166, 81,158,143,198, 19,239,189,248,240,215, 63,250,236,157,119,222, 30,229, 89,211,212,214, 36, 26,232, -225,187, 95, 10,237, 54, 27, 31,213,251, 45,147, 77,146, 20, 32, 96,252, 95, 83, 69, 36,100, 30,238, 13,164, 26,167, 14, 56, 92, -185, 8,144,140, 17,245, 32, 26, 83, 2, 49,195,230, 67,143, 76, 8, 52,208,208, 8,136, 40, 70,222, 0, 73,195,240,216, 12,186, - 83, 60,129, 48, 73, 84, 54, 95,199,219,134,116, 49, 33, 99,232,186,235,139,199,119,151,207,218,174, 73,178,210,217, 12, 48, 50, -146,101,200,210, 14, 55, 82,142,251, 1, 16, 51,219,182,218,106,183,155,220,123,111,122,255, 33, 90,254,171, 63,251, 63,254,244, -159,255,143,104,156, 37,252,123,191,250,155,191,252,203,191,208, 54,117, 64, 98,195,190,247,110, 50, 93,220, 92, 61,254,226,133, -162,128,120,165,148, 93,102,108, 26,124,157,184, 84, 7,127,177,201,138,241,171,151,207,155,221, 58, 49,181, 33,179,219, 87,183, -183,243,155,213, 74, 21,126,233,103,126,201, 50,174, 22,183,161,175,111,110, 94,117,222,175,119,123, 37, 82,164, 36,113, 36,162, - 40, 73,154,159,158,206, 78,239,157,151,147, 89,189,185,186,187,124,145,143,143, 9, 67, 80,107,140,237,218,106,191,153, 27, 66, -106,238,234,170, 1,223,178,181,162,184,222,238,150,171,121, 60,130, 77, 78, 31, 88, 87, 36,217, 20,218,221,116, 54, 75,210,124, -179,184, 14,210,231,134,234,122, 11,118, 52,202,199,137, 81, 4,232,218, 22,109, 90, 56,204,202, 51,235,210, 36, 31,129, 6,231, - 82,210,160, 18,218,237,210, 55,171,190,217, 33, 59, 31,124,240, 93,232,154,128,148,230,165, 74,168, 58, 15, 72,210,247, 93, 87, -247,117,165,100, 67, 0,223, 54,125,183,113, 46, 1,116,222, 55,125, 83,155, 36, 73,178, 82, 68,124,191, 71, 99,188,239, 21,201, -119, 77,146, 20,219,187,151,174,152,244,205,190,237,122,178,169,130,238,215,243,188, 60, 38,195,162,234,242,178,175, 22, 93,189, - 77, 82,215,117,158, 81, 76, 94,246, 94, 3, 64,240,237,116,246,214,104, 52, 37,130,208,251,182,217, 49,161,181,121,150, 37, 0, - 97,223,182,214, 88,231,210,206,247,134,140, 87, 76,216,100,105, 54, 29,141,108, 94,250,182,182, 6, 68,217, 75, 96, 4, 6, 45, -114,215, 4,189, 92, 46,207,202,163,114, 92, 38, 89,233,251,106, 52,154, 57, 11,155,245, 60,205,179,125,221, 22,121,129,200,158, -166,134,170,204, 97, 16,193, 3,150, 52, 68, 19, 1,131, 87,189, 93,215,139,141,207,138,241,120, 60,234,234,253,229,171,103,159, -126,246,232,243, 23, 47, 31, 61,127,241,242,102,190,222, 85, 39,211,241,247,127,227, 23,255,254,239,253, 74, 57, 46,171,218, 39, -156, 38,192,235,219,171, 39,143,158, 60,121,113,189,216,237,142,198, 99, 98,154, 29, 79,196,114,211,135, 39, 79, 94,236, 55,155, -105,158,167,214,198,188, 61, 13, 55,216,136,191, 2,195,209,197,141,132,131, 64, 97,136,141,179,209, 79,193, 68,140,209, 92, 16, -124,136,248,191, 56, 83, 29, 92,240,136,236,172, 33, 38, 9,162, 10,214, 80,180,158, 51, 15,248, 17, 31, 20, 16,157,177,209, 57, -111,141,233,130,196, 79, 83,132,138, 48,161,179, 86, 68,130, 68, 52,202, 32,211,139, 66,136, 71,119,198,131,209, 77, 5,213, 34, - 89,230, 16,137, 13, 76,168, 49,191,138,162,160,170, 38, 34,127, 99, 15, 3, 89, 47, 18,211,191, 8, 24,194,128,119, 75,172, 1, - 34,141, 58, 15, 82,208, 65, 93, 17, 0, 64, 81, 69, 67,204,236, 16,213, 26, 99, 8,216, 90,239,253,200,185, 60, 31, 33,114, 36, -203,155, 56,212, 37,141,220,200, 1, 84, 31,227, 67,195,247, 54,224, 98, 52,138,188, 62,202,113,170, 72,106, 34,233, 24,226,174, - 68,174, 28,143,202,201,213,237,252,227,247,206, 4,137, 15, 76, 11,208, 88, 91, 65, 10,160, 65,129,244,128,211,101,160,104,190, -212,129, 69,192,128, 33, 82, 16,144,137, 14,238,157,168,212, 83,196,225, 34,235, 16,231, 5,136,170, 25, 32,106, 0,208,225, 12, - 28,157,152, 72,175,209,243,225,222,253, 7, 31,190,255,246, 15, 63,121, 52, 41,167,121, 49,154,157,156,213, 77,117,117,125,243, - 63,255,239,255,231,191,246, 59,223, 73, 18,223,117, 85, 81,102, 8,254,250,250, 98,223,246, 18, 90, 21, 77, 51, 71,100,144,152, -112,184,157, 14,216, 47,142, 79, 12,197,171, 76,148,236,148, 34, 9,152,128, 32,174,206,145,212, 73,132, 26, 58,101, 23,155, 58, -212, 43,218,104,245,241,104, 1, 35, 23,116,128,110,147,138,168, 0,169, 12,114, 84,212,134, 20,227, 96,121,176, 10,177,177,214, -246,189,160, 66,208, 16, 72, 73,163,230,245,227, 20,246, 96, 90,250,177,142,133,190,173, 70,147,123,179, 55,222, 65,199, 55,207, -159,253,119,127,242,223,247, 74, 70,228,239,124,243,231,126,253,183,127,115,254,226, 89, 23,120,118, 58, 21,223, 52,117,227,146, -236,233, 23, 79, 39,167,247,183,171, 57, 72,112,197,200,144,138, 8, 41,249,174,113,197, 72,118, 59, 99,211,229,252,122,187, 94, - 59,234,236,200,137, 98,213,182,157,104, 8, 82, 20,249,228,232, 72, 67,127,124,116,180, 89,205, 83,155, 8, 42,208, 90, 67,112, -206,160, 74, 64,180, 54, 77, 92, 58,158,156,144,115,206,186,205,162,222, 55,251, 41,179,154,146, 52, 52, 85,157,143, 79, 77,154, - 73,211, 85,141, 40,245, 76,210,236,215, 72,188,218,172,124, 8, 46,201, 20,109,211,244,161, 89,142,143,239,113,234,178, 98, 44, - 34,217,228, 44,207, 70, 93,189,238,218,182, 40, 78,179, 44, 89, 45,175,210, 36,243, 34, 8,102,181,190, 73,133, 52,120, 31,188, -117,133,104,221, 54, 59, 85, 32,209,170,174, 93,146, 65,144,205,102,165,193, 55,251, 59,182,187, 34, 73,198, 39,247, 76,211,106, -128,106,115,105,109, 78,105, 46,156,143, 70,211,186,218,104,232, 65,125,179,191,147,222, 54,219,165,205, 70,163,163, 7,125, 8, -193,107,183, 89,150, 39,231, 77, 93,139,111,202,241,232,244,225,251,202,134,196, 88,114,203,171, 23,137,203,146,209, 88,250, 6, -216,200,238,198,141,239, 87,117, 55, 61, 62, 13, 94,136,231,171,197,117, 46, 38, 47,198,193,183,187,221, 93,215,213,170,161,111, - 43,151,150,251,106,215,122,233, 85,141, 23, 81, 56, 62, 61,175,118,235,106,183,180,118,180,235,118,149,135,220,154,119,222,124, - 75,250,166,107, 60,178, 17, 48, 29,180,121, 94, 0,232,221,122,137,160,231,211,241,178,110, 95,222,220, 36, 73, 98, 10,217, 85, -123, 64, 99,221, 73, 50,154,230,249,168,170,119,155,249, 21,104, 47,221,186,222,151,239,156,167,133, 13,225, 80,235, 97, 25,251, - 32,235, 77,183,237,193,114, 50,153, 58,223,181,215, 47, 47, 47,174,175, 94,190,188,124,113,115, 59, 95, 46, 23,155, 93,150, 38, -191,245,139, 63,253,171, 63,251,141,243,251,199,117,235,195,190,181, 26,154,106, 63,159,223, 92, 93,221,188,186, 91, 90, 50, 95, -251,202,251, 29,234,229,223, 46, 2,210,124,189,189,185,188,201,216,230,137, 99,134,224, 21,144,130, 4, 65, 81, 1, 68, 96,141, - 46,205,184, 20,146,170, 38,198, 70, 90,183, 32, 68,220, 44, 1,134, 88, 38, 36,146, 24,246, 18,207,162,242,122,109, 2,208,166, -239, 13, 98,226,172, 15,161, 11,194,135,161, 21, 33,106,100, 50,136, 34,136, 35, 20,133,206,247,113,190, 39,170, 28, 5,107, 36, -141,211, 83, 36, 64, 69, 5, 70, 10, 64,132,161, 11, 62,214, 44, 68,209,128, 15, 78,136,232,189, 51, 54,138, 69, 66, 49, 53,138, - 42,130,138,226,200,122, 9,162,234,125,207, 76, 68,232,189,136,138, 65,131,136,204, 38,104, 24,172, 36,170,136,200,132, 1, 81, -130,178, 33, 81,102, 68, 54,108, 1, 90, 97, 47,129,217,132,182, 78,217, 76,138, 18,153, 37,120,107, 45, 33,240,247,191,251, 91, -131,154, 17, 51,235, 18, 6,175,228,208,231, 34,120, 40, 2,136,114,132,143,139, 44, 2,227, 16,112,136, 64, 33, 36,100,195,167, -247,239, 25,128,201,184,144,161,213, 36,146,203, 56,250,229, 35, 41, 1, 25, 21, 4,163,251,221, 34, 2,144, 33, 85, 60, 88,116, - 6, 78,116,172, 89,137,225, 34,138,147, 17, 38,129,248,117, 33, 33, 26, 54,200, 72, 10, 4,236, 81,136,141, 4,137, 0, 60, 0, - 69,144,129,200, 6, 16, 20, 78,143, 79,159, 63,127, 94, 55,109, 89,142,202,114,138, 12, 69, 86, 60,126,252, 36, 31, 77,206,239, -157, 53,109, 77, 76,205,110,107,146, 49, 72,223, 52,126, 58,157, 74,156,224, 12,149, 0,116,200,168, 42, 42, 18,160, 68,145, 10, - 25, 1, 21, 85,197,171, 14, 94,125, 0,245, 26,152, 45, 0, 4, 17, 16, 97,182, 3,238, 94,163,181,113, 72,246, 30, 64, 62,136, -140,234, 3,196,218,168,120, 37, 49, 17, 22,198, 3, 15, 20, 94, 79, 88,201, 36,121,154, 23,249,228, 40, 73, 11, 67,134,144,128, -135, 63, 18,135,222, 81,226,131, 24,159, 34, 70, 80,180,249, 27, 95,249, 6,167,110,125,125,243,159,255,199,255,164,106, 58,208, -240, 51, 63,243,179,191,253,189,239,112,194,127,249,231,127,205, 8, 42, 80, 85,245,248,193,249,211,199, 47,175, 95,190,236,125, -231,187, 54, 47,198,190,217, 18,198,216, 29,231,121, 89,239, 55,245,110, 71,160,155,213,178, 13,154, 80,155, 39,182, 15, 97,181, -217, 92,205, 23,243,229,234,205,135,239,125,253,203, 95,111,214,215,168,126,191,219,168,234,122,183,111, 59,239,189, 15, 33, 48, - 35,176, 45,139,241,249,249, 91,247,223,254,242,232,248, 1,168,191,189,186, 72,198,247,207, 30,220,223,173,110,196,135,208,183, -214,229,126,183,168,170,245,102,181, 4, 52,245,126,157,231,197,246,238,213, 98, 87,229,229,145,113, 73,146,230,125,219,172,119, -187,204,194,217,249,219,147,217,217,126,183, 87,233,214,183,143, 69,177,170,235,196,154,205,252,169, 45, 78,138,204,174, 86,235, - 36, 45,218,222, 35, 38,125,215, 33, 37,170,161, 15,100,140, 77,179,178,175,119, 93,192,198,119, 93,219,139,132, 32,146,142,102, -199, 39,179,113, 57, 78,179,241,110,125, 55,191,189,146,174,203,199, 83, 8,129,136, 81,122,147,228, 34,193, 89,155, 21,211,237, -234,102, 52, 59, 31,207, 30, 24,131, 77, 85,177, 49,121, 57,189,121,250, 87,192, 6,209, 34,244, 36, 66, 72, 70,165,218,204,173, - 75,251,174,174, 54,119,109,211,244,189,104,104, 79, 30,188,159,101,174, 90,223,181,117,221, 41,220,123,243,227, 44, 27,133,174, -218,174,175,210,242,212,166, 19,239, 59, 4, 76,210, 76,165, 37,206,202, 81, 14,161, 69,202, 84, 61, 39, 73,175,100, 92, 70,214, -149,229, 52,203, 11, 50,102,122,116,220, 9, 26,118,170,200, 18, 72,247,171,218,223,159,157,105,223, 4,192,241,104, 12, 46,107, -130, 76,202,177,168,238,118,187,190, 15,109,181,237,155, 53,153,180,169, 86, 46,155,238,247, 59,178,147,170, 9, 89, 74,153,139, -234, 39, 84,157,191, 94,246,157,216,188,204, 25,176,222, 46, 46, 46, 94, 62,121,250,236,211,167,207,190,120,121,113, 53,159,111, -155,230,189,183, 30,254,131, 63,252,173, 95,255,197,159,116,121,210,236, 3,121,193,174,189,126,117,241,228,209,147, 23,151, 87, -251,170,157, 78, 38, 18,250, 90,101,185,173, 46,175,239, 46, 47,174,239,110,151, 35,107,178,196, 1,170, 35, 3,128, 65,186,182, -247,157,247, 68,232,189,198, 40,126,172, 55, 34,130,212, 24, 65, 12,160,108,152,201, 16,168,168,244,193, 91,230,200,233,237, 66, - 0,136,250, 45,128,106, 98,109,156, 71, 89, 34, 64,236,189, 40,104,132,145, 5, 4, 17, 97, 30,178, 61, 68, 24, 4,122, 0, 34, - 52, 76, 18,167,138,200,142, 7, 82, 83, 56, 84,167, 89, 99, 37,118,170,161, 18, 0, 50, 6, 9,175,161, 92,131, 40, 77,104,152, - 65,193, 16, 9,196, 67,218,112,161, 48,196,145, 30,232, 69, 16,129, 99,176, 21, 80, 69, 18, 99,148, 48,168, 2,130, 33,235, 85, - 45,179,179, 44,136, 2,200, 32,214,166,113,196,103,200, 48,129,143, 35, 73,230,170,105,219,174, 61, 42,114,101, 86, 80,199,228, - 44,123, 81,254,254,111,127, 59, 26, 42, 35, 69, 13,134, 81,197,225,104, 25,211, 11, 7,158,144,234,144,221,130,104,192, 36, 68, -166, 1, 85,104, 56, 4,201,179,164,222,173, 93,146, 25, 4, 17,101, 75, 24,129, 41,113, 46,200,195, 58,132,122, 64, 69, 7, 85, -137, 66, 86,156,123, 3, 1,137, 10,179, 25, 40, 69,240, 99, 86,129, 14,225, 49, 38,100,107, 19, 98, 86, 0, 98, 14,128,134,120, -136,243, 12, 6,204,184, 95, 97, 52,178, 74, 0,231,220, 40, 49, 79, 30, 63,205,139,209,104, 50, 78,109,166,193, 51,225, 39,143, - 30,125,252,209,135, 73,146,180, 77,107, 44,229, 69, 57, 26,141,178,108,100, 77, 88, 45,215,121, 94, 48, 69, 70, 58,189, 70,236, - 17,155, 88,228,132, 20,101,171, 16,111,141, 68, 36, 32, 17, 61, 54,164,250,136, 12, 91, 34, 20, 13,241, 34, 40,209,244, 73, 7, -243,124, 76,169, 1, 74,232,112, 80,241, 6,158, 76, 36,126,138, 10, 33, 29,232,240,164,160,198, 18,155, 36, 77, 71,137, 43,140, - 75,226,192,129,104, 40,216, 27,250,114,226, 30, 25,219, 0,216,160, 82,121,116,146, 29, 77, 86, 87,151,255,229, 63,254,199,139, - 77,205,132, 31,127,244,229,239,252,254,247, 38, 39,211,213,124,253,252,209,227, 0, 84,173,215,247,206,239,215, 77,243,151,127, -254, 23,100,243,182, 94,100, 73,110,172,101,155, 1,179,182, 59, 9, 93, 47,158, 65,124,144,245,174,109,234, 21,104, 72,172,103, -132,182,111,231,203,229,205,252,110,185,221,125,240,238,151,222, 58, 61, 70,109, 22,119,119, 93,215, 46,231, 87, 85, 8, 93,219, - 56,199,198, 88, 47,154, 37,217,209,236,232,193,195,183, 93, 94, 76,102,179, 32, 18,124, 16,223,216,164, 32,223, 41,154,190,219, -183,187,141,248, 70,125,239, 70,179,196, 37,196,169, 33,252,252,179,191,242, 68,108,172, 4, 47,226,173, 77,146,108,212, 52,181, -203, 70,218, 53,251,186,210, 32,192,169,250,218, 36,197,108,118,223,119,157,179,198,154, 60, 40,156,156,157, 51,244,222,119, 8, -224,187,221,102,241,146, 77,154,103, 89,150, 56,223,121,227,146,190,173, 92,146, 42,226,201,233,217, 7, 31,126, 52, 46, 71,249, -244,100,179,184,186,190,124, 21, 0, 27,145,190,173,165, 93,230,227, 25, 27,135, 42,198,229, 73,154, 0, 25, 38, 50, 54, 11,125, -213,236, 22, 89,113, 28,143, 66,108,221,104,124,236,146,196, 34, 11,152,164, 40, 1,113,183,154,119,125,191, 91, 93, 38,229, 25, -219,180,107, 42,182,121,146, 22,251,213,109, 16,117,233, 56,205,198, 68, 74,198, 26,227, 36,244,140,180, 93,206,147,209,113, 86, - 78,189,111,217,166, 76,230,225,249,155,101, 57,170,246,213,226,234,179,233,236, 60,201,138,182,222,140,138,220, 37,233, 40, 75, - 54,155,133, 2, 38, 89,193,140, 77, 91,117,253,206,184,233,108,124,100, 25,208,141,202, 81,153,184, 20,181, 91, 44,238,246,251, -245,241,209,113, 31,124,188,155,111,118, 27,199, 38,120, 63, 61, 57,203,138, 9,106,104,122,223,132,188,200,153, 89,110, 55,221, -106, 7, 46, 47,210,212,116,251,253,237,213,171,103,207,159,127,242,197,147,207,158,190,184,184,185, 93,108, 54,211,178,252,227, -239,252,202,191,253,251,191,113,255,193,113, 93,117,216,163, 19,221, 45,239, 30, 63,126,250,252,213,213,237,106, 85, 20,133, 77, -108,126, 52, 34,203,215,203,253,221,213, 13,250,144,177,157,228,169, 49,198, 25, 27,141, 45,157,239, 4, 52,154,146,163,215,197, - 26,131,132,108,209,112,252, 97, 5,133,145, 57, 78, 53, 17, 0,209, 28,166, 86,177,235, 45,136,248, 16, 66,240, 40, 16, 9,220, -150, 73, 15,142,189,131,160, 10, 1, 0, 8, 2, 0, 27,195,135, 79,143, 99, 82,196, 0, 10, 72,142, 98,126, 40, 30,218, 80, 84, -153,169,151,161, 66, 35,222,234,163, 80, 59,100,151, 14,232, 62, 66,178,204, 4,241,165,162,241,134, 8, 73, 69, 35,206,157, 0, - 21,200, 32, 49,178,168, 68,210, 9, 17, 9, 14,229, 18,113, 65,142,238,254,200, 20, 96, 38, 98,246,222, 27, 98, 54, 44, 32,145, -219,111,200,116,160,155,253,190, 76, 56, 73, 19, 64, 52, 76,104,216, 7, 81, 5,254,254,183,127,235,117, 34,126,176,163,196, 91, - 1,145,170,128,128, 6, 69, 30,134, 29,145,252, 30,141, 46,177,158, 53,174,120, 16,121,245,160,136, 28,186,126, 91,135,163, 73, - 17, 66, 79,138,160,200, 76, 56, 36,178,116, 64,169, 35,168, 6, 84, 66, 1, 16,100, 38,213,240,218,124, 4,120,168, 55,229,248, - 79,200, 97, 64, 2, 20,109,137,196,100, 9, 41, 46,165,252,227,222, 34,136,115,200,232,248,161,193,142,142,160,210,251, 94,138, - 73, 49,191,187,219,110,119,163, 81, 57,157, 30, 35, 35, 51, 45,239,238, 22,155,237,199, 31,188,215, 52, 53, 0,116,109,157, 20, -163,245,252,226,201,179,231,211,233,140,135,238, 85,138, 41,143,195, 14,199, 26,185,193,200, 34,158,200, 28, 4,145, 1,130, 29, -111,145, 81,152, 31,198, 83, 26,119,133,161,183, 43, 14, 34,162, 5, 22, 16,196, 15,213,169, 3,194, 41, 38, 33,116,144,190, 98, -171,162, 2,104,196, 26, 0,144, 49,131,122,197, 24,235, 3, 41,150,193,224, 48,209,125,205,210,143,215, 30, 81, 45,103,199,125, -211,253,215,255,201, 63,125,118,113,235, 24,207, 31,190,249, 7,127,248,135, 71,199, 99, 64, 92,205, 87,151,207, 31,177, 77,201, - 96,213,202,231,127,243,195,166,237,166,167,247, 25,196, 36,163, 32,194,132, 32, 1, 66,171,170,228, 70,204, 82,237, 54,219,125, - 99,216,248,102,155,152,222, 32,117, 93,119,183, 88,191,186,157, 55, 93,247,181, 47,253,196,123,239,190,235,235,221,102,187,107, -235,125,211,135, 16,231, 93,132,193, 7,103, 76,146,101, 71,163, 50, 41,202,242,222, 91,249,104, 82,239, 43,155,231,236,251,174, -239,150,203, 27, 34, 35,221,158,147,146, 76,154, 36, 89,104,219,182,109,214,119,207,154,170,106,149, 4,156, 33,234,186,198,165, -105,219,236, 51,203,197,248,204, 22,227, 16,130,209,208, 86,107, 38,108, 61, 42, 39,121, 81,100,229, 12, 84, 54,155, 59,151,228, -108,120,113,253,210,186,196, 38,133, 82,234,209,245,237, 94, 65,141, 49,198, 37, 93,179,245,190, 1,147, 49,193, 59,111,189,107, -157,187,189,124,186, 91,205,235,166,111, 60, 20, 69,142,210, 7,209,188, 56,202,210,194, 88, 86,114,161,111,216,112,154,142,156, -115, 10, 94,124, 64,144,208, 55,108, 18, 54,148,184, 36,177, 73,189, 91, 73,240,125,187,109,118,187,190,109,141, 75, 93, 82,102, -163,227,174,218,140,199,229,126, 53,207, 70, 35,148,110,183,219,121, 47,170, 98,144,231,183, 79,147, 36,203,242,212, 58,103,141, - 77,179,212, 87,107,228, 76,197, 59, 75,251,213, 45, 67,107,210,108,179,186, 35,151,179, 49,251,245, 34,248, 54,205,203,113,145, - 55,109,179,107,186,217,201,121,181,219, 92, 45,174,171, 94, 68,249,104, 50, 99,242,235,237,142,220,136, 56,166,231,237,241,236, -120, 83,135,122,191,122,247,252, 60,132,190,235, 90,162,100,121,251, 34, 73,243,190,171,119,235, 69,215, 52, 77,179,107, 60,122, -117,109,239,133,139, 44, 75, 65,186,229,221,237,179,103,207, 30, 61,123,254,197,243,151,207, 47,175,175,239, 22,125,144,159,255, -198, 87,255,193,191,254, 91,223,248,248,189,182, 15,125,227, 83,206,124,211, 92,190,120,246,217,227,103, 23,183, 75,235,204,135, - 31,189, 55, 57,157, 46, 86,235,201,209,244,118,190,184,184,184,182, 1,139, 52, 97, 67,198,112, 98, 13, 51, 91,230, 78,131,247, - 66,131,191,145,152,140, 25, 58,127,200, 90,195,108, 0,145, 45,199,124, 97,144, 16, 67, 42,170,218,121,111, 14, 69, 55, 74,216, -247, 93, 83, 55,251,182,233, 66, 71, 4,137,115, 81, 43,143,152,222, 24,200, 71, 68,107, 25,200,112,244,106, 3, 34,177, 2,244, - 65, 35,183, 60,210, 24,131,168, 97, 50,200, 67,143, 52,128, 33, 36,192, 88,210,201, 24,185, 35,135,122, 77, 66,195, 38,250,185, -141, 53, 62, 28,170,223, 48,234, 60, 96,136,141, 53, 33, 40, 2, 24,138,227, 80, 31, 67, 99, 52, 24,119, 8, 0, 58,239, 73, 53, - 53, 46, 4, 25,202, 3,105,208, 84, 44,179, 33,238, 85, 64,133,137, 69, 85, 0,182, 85,141, 26, 38,197, 72, 21, 19,142,142, 73, -181,108,124, 8,252,131,239,126, 43,122,183,135,238,150,131,211,218, 24, 22,149,225,155,146,136,147, 63,180,179, 12, 61, 75,135, -209,203,193,140, 14, 72,138,152, 89,186,185, 91,158,204,166, 62,200,208,239, 7,136, 32, 72, 24, 29,131, 3,185, 22,226, 25, 21, -227,138,136,230, 32, 91, 17, 69,206, 17, 17, 50,154, 72,148, 1, 64, 34, 19, 13,164,104,220,129,146,133,170, 66,114,232, 21, 84, - 5, 12, 52,164, 63, 99, 38,106, 24,219,170, 2, 72, 48,104,210,196, 60,123,254,210, 50,149,227,163,178,156, 72, 16, 70,249,155, - 79, 62, 61, 57, 59, 59, 57, 62,174,170,173, 97, 16, 65,151, 48,162,123,255, 75, 95,154,223, 92,186, 36,141,227,202, 56, 18, 21, - 13, 16,123, 38,117, 48,105, 41,136, 14,244, 75,128,173,200,172, 0, 0, 32, 0, 73, 68, 65, 84, 28,180,120,213, 31,251, 63, 15, -173,220, 49,116, 74,177,178, 41, 58, 78, 69, 67, 8,131,123,125,152, 40, 28,176,171,104, 34,225, 32, 26,153,244, 48,133, 29, 30, - 81, 17, 5,101,231,226, 77, 10,145, 68, 34, 33, 42,130,153, 41, 86,197,198,123, 34, 0,177, 53,204,201, 63,251, 47,254,211, 47, -158,223,178,225,163,233,248, 7, 63,248,163, 7,111,157,247,222, 27,107,231,183,171,221,122,149, 56, 91,181,221,252,234, 69,215, -214,105, 94, 48,106,187, 91,128,136,201, 74,245, 29, 0,168,201, 93, 49, 2,245, 64,110, 53,191, 83, 36,107, 83,227,146, 4,118, -132,184,222,237,239, 86,203,139,249, 29, 34,253,194, 55,127,241,104,124,116,125,125,161, 72,190, 23,233,251,166,217,231,105,218, -116, 61, 16,147,250,114, 52, 62,187,247, 48, 25,207,238,191,251, 21,237,154,245,106,233,164,218,111, 46,174,158,127, 54, 62,125, - 47,205, 71,204,216,108,215,213,118,213,119,117,219,110,250, 62, 40,154,186,217,111,154, 58, 77,178, 36,203,178,242,248,120, 58, -157,157, 62, 4, 50, 0,208,110,239,170,205,171,187,139, 79,146,209,125,155, 78,250,174,102, 99, 18,195,187,249, 19,193,132, 56, -169,182,215,104, 12,152,172,111, 26, 85, 96,195,170, 18, 66,111,152, 88,133,161, 69,164, 52,177,173, 15, 93, 31,202, 34, 77, 50, -103, 92,209,212,219,174,107,239, 22,183,130,156,165, 9,155,164,200, 51,237,219,253,234, 34,203,203,174,222,112, 58, 41,203, 73, -232,251,245,234, 42, 47,207, 76, 50, 10,226, 13, 51, 41,116,205,182,107, 43,182,169, 2,180,245, 14, 17, 64,188, 49,174,107, 86, - 77,181, 1,105, 67,219,181,125,125,250,224,109, 8,161,110,234,229,106,238,146, 52, 27, 29, 37,105,102,136, 22, 87,143, 76, 82, - 16,231, 93,187,223,109, 87, 66,220, 53, 77,223,182,251,245, 37, 39,101,154,228,235,249,133, 41, 38, 68,108,172,203,138,113, 57, - 62,242, 93, 85,111, 55,249,248,164,170, 54,251,186, 59, 63,123,243,100, 58, 5,213, 52, 73,218,182,230,180, 72,242,146, 17, 2, - 72,215,123, 32, 59,202,147,197,106, 85,117, 13, 3, 32,187,166,173,109, 90,178,205, 52,248,192, 41,184,124, 84,148,179,217, 40, - 79,161, 24, 77,157,227,174,222,191,124,241,228,241,147,167,143,158,189,122,121,117,115, 49,191, 93,110, 54, 15,239,159,252,251, - 63,248,206,239,255,230,207, 37,137,171,107, 97, 37, 35,184,189,189,121,242,248,209,203,235,219, 77,221, 24, 99,222,124,120,111, - 94, 87,183,119,171,231, 23,183, 87, 23, 87, 55,151,139, 89,150,185,204, 38,214, 18,177, 37,102, 99, 25, 57, 22,245, 24,203, 10, - 64, 64,214, 26,142,166,106,107,172, 49,209, 69, 97,201, 24,182, 42, 24,164,139, 11, 86, 68,220, 34, 19,138, 42,145, 33, 14, 18, - 54,213,110,223, 52,193,139, 53,198, 90,107,136,153, 24, 16, 37, 18, 37,153,163, 47, 17,117,208, 48, 25, 14,233, 65, 0, 59,172, -116,168, 49, 79, 52, 0,147, 95,247, 43, 11, 41,134,161,106, 13, 25, 0, 12,129, 87, 98, 52, 28,215,104,140, 96,253,240,154,236, - 13,128,136,150,216, 48,245, 65, 0,148,129, 16,177,247,109, 80, 53,196,230, 96,175,140,133, 30,135, 92,100,220, 18, 6,110,139, - 10, 26, 66, 71, 40, 72,130, 17, 98, 76,162, 96, 13,175,170, 26,164, 31,231,133, 51, 28,151, 65,107,204, 64,227, 87,229, 31,252, -246,183, 15,116,245, 67,117,211,240,155,215,142, 73, 24, 92,236,116, 96,193, 15, 5, 18,131, 51, 59,118, 86, 0,113,180,191, 24, -182,205,102, 45,156,100,169,197,160, 68, 16, 59, 30, 99, 4, 55,182,199, 17,113,108,126,100,203,100, 45,242,192,153,100,138,161, -252, 67,248,159, 6,147,105,140,201,197,100, 66,252, 98, 98,116, 22, 49, 50,106, 14,205,238, 58,244, 3,195, 1, 76,125,152, 27, - 0, 16, 40, 66, 57, 30,173,238,230,235,109, 53,153, 76,202,201,212, 89,179, 93,174,214,155,237,243,203,139,175,125,244, 37, 17, -239,187, 94,213, 95, 94, 94,119, 77,103,156, 13,193, 75,232,147, 36, 27, 90, 74,134,121,165, 87, 81, 98,139,108, 84, 67,144, 30, -233,192, 13,136,206,246, 67,163,112,196,130, 97, 24,222,187,129,155, 29, 55,234, 56,251, 25,246,212,168,199, 69,139,123,236,118, - 10,177,207, 50, 34,201, 14,118,213, 3,236,126,160, 96, 28,154,203, 7, 7,155, 70,217, 62,186,143, 6, 50,245,176,209,241,255, -244,167,255,226, 47,254,230,211, 60, 75, 70,121,250,123,223,251,254,151,191,254,149, 16,250, 40,121, 61,255,226,145, 71,147, 21, - 37,113,194, 4,168, 52,158,206,216,164, 65,144,217,160,130, 49,182,105,234, 44, 79,153,141,239,234,186,147,106,187,102, 8, 93, -219,168,180, 41,119, 42,176,217, 87,215,243,197,124,181,202,210,244,167,191,242,149,245,106,225, 12,139,248,182,218,214, 85,133, -168, 77,215, 52,109, 75,160, 69,150, 61,120,240,230,248,236,188, 60,126,120,116,122,114,119,249,172,222, 87,109, 91,247,193,142, -166,167, 16,218, 34, 47,250,170,218,110, 86,193,119,213,250,154, 76, 30,175,151,139,213,220, 36, 57,187,164,217, 45,197,119,211, -227, 7,206,154,237,242,234,246,250, 81,215,134,201,244, 76, 20,243,209,108,187,120,185,190,123, 10,210,207, 30,188,239,219, 93, -223,247,228,178, 44,205, 70,163, 73, 93,109,217,164,125, 87,133,122,211,119,123,151,140,130,239, 93, 98,146, 60,183,198, 26, 54, -203,237,174,107, 43, 6,156, 78, 38,162, 90, 76,206,178, 98,162, 96, 22,203, 69, 81, 76,210, 44,203, 29, 21,105,225,202, 83, 5, - 8,193,231, 69,169,253,174,247, 62, 77,143, 52, 52,168, 33,205, 38,136, 18,124, 71, 54, 83, 9,193,183,218,119,100, 12,145,173, - 54,243,208, 53,160,216,117, 93, 94, 28, 73,240, 26, 68,186,110, 49,191, 44,202, 99, 8,181, 49,137, 97,187,223,204,141, 77,146, -114, 86,215,117,239,251,248,137,171,150, 23, 46,201,247,213, 38, 14,103,146,116,172, 38, 95, 47,110, 56,155,156,158,222, 59,187, -119, 30, 39, 79,128,176,218,172, 36,212,231,231,239,118, 77,181, 90, 92, 90,155,142,203,233,120,114, 44,190, 71,164,178,156, 90, - 16, 36, 14,161, 67,228,196, 80,213,246, 77, 91, 23,153, 45,138,114, 52,153, 9, 96,181, 93,148,227,241,108, 54, 62, 61, 26, 29, -207, 38,227,114, 34,190,189,189,122,245,248,241,147, 71,207, 94,188,184,184,121,113,125,125,125,183,200,146,228,219,191,244,205, -127,247, 7,223,122,255,189,243,125,221,169,231,132, 76,187,219, 94,189,120,241,232,201,243,203,187,149,115,238,104, 92,164,227, -209,182,218,255,232,179, 39, 4,186, 89,238, 50, 50,179,233,208,186,227,140, 49,108, 80, 20, 85,137,227,135, 26, 99,163,189,179, -198, 48, 91,107,201,242,161,197,117,104,199,208, 32,160,202, 3,193, 54,146,151,134,106,104,139,216,251,176,111,234,222,247, 65, - 68, 68, 0, 49, 75,210,212, 58,137,235,196, 1, 41, 18,139,165,227, 13,250,245,199, 21,145,216,196, 75,182,202,176,121,136, 57, -184,253, 37, 70, 75,135, 89, 32,171, 70, 81, 97, 64, 60, 50,147, 42, 88, 34,141, 13, 60, 42, 49,193,207, 10, 38, 58,217, 0, 37, - 82, 73, 20,129, 72,188, 71, 34, 27,115, 4, 67,205, 6, 32, 34,115, 76, 90, 33, 1, 24, 99,226,209,119, 56,250, 33,118,170, 7, - 22, 56, 70, 84,194,190,247,117,219, 28,101, 89,154,166,189, 8, 1, 34,129,128,168,130, 97, 19,124,224, 63,248,205,111,197,253, -235,144, 41,138,167,243, 1, 67,127,112,207, 64, 80, 96,203, 24, 65,155,168,116,200,143,198, 62,189, 40, 8,240, 64, 61, 49, 24, -186,213,174,155, 29,149,240, 58, 55, 69,209,120, 66, 0, 74,236, 64,148, 13,177,179, 56,108,145,136, 81,129, 66, 6, 82, 67,116, -104,241, 59,116, 30, 69, 12,127,172, 59, 57, 52,155,162, 53, 3,235,150,245, 80,212, 23,147,165,120,168,143,137, 19,227, 31, 55, -128, 16,242,236,168,124,252,252, 69,150,102, 73,146,168, 74,219,212, 77,219,189,188,184, 60, 61,155,221, 59, 57,174,155,206, 37, -201,244,248,254, 7, 31,190,255,234,197,147,227,211,123, 77,181,117, 46, 67, 54, 68,230, 48,144,143,237,101, 49,162, 27, 34,236, - 69, 68, 94, 95,241, 84, 4, 99,148, 73,135,224,242,161,211, 3, 99,175, 85, 12, 68, 31, 54, 76,198,131, 32, 7,138, 16,157, 76, -175,203,175,225,144,231,138, 79,221,240,131, 14,189,139, 67, 67,109, 84, 6,163,155, 50,234, 69, 58,244,185, 35, 25, 94, 47, 23, -255,235,255,246,103,136, 48,202,242,239,254,238,247,127,226,167,190,222,213,123, 52,198, 26,222,172,182,151, 87,243,190,169,216, -101,160,253,118,117,135, 54, 1, 96, 21,104,234,125, 8,222, 24, 98,194,118,191,207,202,163,182, 90,175,111, 95,125,241,217, 39, - 9, 73,226,146,182, 19,166, 58, 33, 17,212,249,106,121,121, 51,223,236,171,147,217,189,175,125,244, 53, 8,157,120,223,182,253, -174,218, 55,109, 77,210,239,154, 46, 73,146,224,187, 50,203, 78,207, 30,186,172, 72,178,220, 89,187,217,172,211, 81,201, 46,155, -157,157, 23,229, 17,219,164,169,119,190,239, 58,223, 55,251, 61,177, 5, 99,198,105,186,188,125,177,238,188,179, 9,146,113,217, - 52, 31,141, 38,227,178,239, 58, 32, 86, 76,173,177,211,241, 56, 41, 79,119,251,165, 77,199,156, 78,243,114, 98, 73,128,211,174, -221,128,138, 15,221,104, 52, 43, 71,101,215, 53,157,111,109, 82, 26,151,236,182,139, 60,225,209,248,132,236, 40,207, 74, 9,173, -244,161,105, 67,211,213,227, 44,237,170,185,136,220, 61,255,235,241,209, 73, 81, 76,172, 54, 71, 71,179,241,228,212,101, 89,187, -223,136,120,155, 78,250,122,221, 87, 27, 65, 51, 26, 79,219,122,223,181,123,151,228,161,107,128, 12,137, 6, 13,105, 50,234,124, - 31,246, 27, 66,211, 7,223, 54,123, 64,206,242,209,110,117,131,218, 36,217, 8,137,178,172,236,154,221,197,179,191,157, 29,159, -111,183, 87, 68, 54,113, 41, 19,134,190, 75,210,113, 93, 45,167,167, 15,206,223,254,240,228,228, 94, 16,221,237,235,190,239,119, -119,151,187,205,213,241,131, 15,218,106,219,118,117,158,230,117,117,247,226,213,243, 36, 27,167,121, 89,150, 51,155,142,235,253, -122,114,116, 18, 66, 15, 32,198,218,162, 28,135,190,111,170,109,189,189, 61, 61,187, 79,196,198,101, 1,244,236,248,212,186,116, -177,221, 48, 72,154,102,193, 75, 49, 41,239,157,205, 30,156,157,157,156,221, 99,134,197, 98,254,252,217,147,199,207,158, 62,189, -184,120,126,121,253,226,242,122,179,111,126,242, 43,239,253,195, 63,252,246, 47,253,204,199, 72,216,212,193,105,162,190,189,126, -249,226,249,211,103, 23,183,115, 65,252,198, 79,126,213,141,179,166,105,166,167,211,231, 87,183,203,187,149, 19, 28,101, 46,113, - 6, 17, 19,231,172, 49,206, 37,160, 42, 8,214,184,248, 28, 91, 99,162, 12, 97,136, 13,153, 88, 65, 7, 3, 10,230,245,241, 18, -172, 49,131, 96, 0, 16, 84, 29, 27, 2, 6,144,160, 33,136, 4,241,109,223,121,239,227, 85, 54,117, 46,113,238,240,233,163,193, -138,128, 56,244,218, 19, 14,253,124,128,128, 1, 4,144, 88, 84,105,104,187, 70, 80, 96,231, 52, 12,173,161,160,224, 53, 16, 50, -128,144,146, 18,198,211, 23, 32, 26, 70, 64, 22, 13,209,172, 25, 99, 74, 17,171,238, 67, 32, 0, 98,150, 32, 65,188, 7, 73,173, - 99, 4, 17, 80, 85,203,212,123, 79,196,206,186, 78, 85, 1,140, 51,145,225,104,163, 63, 18,177,245, 30, 16, 82,195, 67,118, 22, -212, 88,238, 4,150,219,237, 36, 51, 89, 54, 82,149,196,217, 8, 32, 83, 36, 13,130, 34,125,240,252,135,191,251,237,248,190, 73, - 68,222, 68,219, 59,113,236, 94, 29,176, 38,100, 81, 53, 40, 24,131,136, 2, 10,104,162,232, 28,226,155, 56,212,232,198,115, 53, -130,181,102, 62,191,153, 28, 29,131, 6, 81, 56, 52,196, 68, 11,164,193,104,110, 65, 64, 67,226,195,255,199, 75, 18, 91, 49,232, -128,121, 65, 84,137,199,216,195, 47,209, 46, 21, 45, 74,160, 18, 6, 68,134,247, 49, 25, 12, 7, 62,101,188,135, 28, 80, 49,113, - 23, 16, 16, 0,145, 81, 57,237,219,237,245,205, 93,146, 56, 85, 77,179,180,111,170,187,249,250,242,246,238,167,190,246, 85, 32, -232,218,150, 49, 60,255,226,147,203,235,219,122,183,217,108,119, 69,158,255,184, 60,133, 92, 44,126, 29, 26,248,208, 2,138, 72, -136,186,147,198,150,238,193,213, 24,221, 61,170,234,163,206, 18,131,176, 67,233,214, 1,230, 14, 12, 3,170, 95,227,225, 29,241, -128,148, 4, 80, 54, 60, 64, 49, 7, 88,177,192,224, 11, 26, 12, 53, 26,194,192, 28,230,215,205,170,138,248,186,205,137,216,240, -237,213,237,223,252,237,143,136,248, 87,126,237, 91,127,247,231,191,217,247, 13, 18,154, 36, 17,145, 39,159, 63,218, 46,111, 5, - 96,179,184,105,235,166,239, 90, 81, 34,196, 52,115,203,171, 47, 76, 82, 78,142,143,234,170, 85,105,187,253,220,229,147,166, 15, - 10,249,236,228,158, 7, 22, 47,133,217, 17, 97,215,201,221, 98,253,242,102, 94,183,205,195, 7,111,190,117,239,172,235, 58,100, - 27,124, 95,237,183,109, 83, 19, 64,143,132,170,229,168, 44,203,201,244,244, 28,109,225,194, 58, 29,159,109, 87, 55,167,247, 30, -134,206,223, 62,251,171,151, 95,252,249,189,251,111, 52,213,174, 44,103,218,215,161,235, 20,160,239,218,197,221,213,203,139,231, - 94,237,131,123, 15, 70, 69,202,218,228,229,172,173, 42,129,158,217, 54,213, 38, 31,157,236, 86,215, 77,223,113, 50,217,220, 60, -117, 89, 62, 57,126, 3, 84,140, 43, 64,177,109, 43,147,230, 68,230,254,253,115,214,253,100,246, 16,161,239,118,119,163, 98, 60, -155, 78,181,223,153, 36,239,234,141,111,171,229,102, 21,218, 93,221,245,179,163,179,227,179,119,146, 36,105,235,157,177,110, 60, - 26, 49,145,146, 77,211, 12, 0, 60,154,106,241,220,165,153, 49, 41,105,151,141, 79,247,139,151,168,106,146, 12, 85, 66,232, 21, -116,113,249,169, 15,208, 84, 75, 13,253,118,117,195,164,214,168,117,133,138,110, 55,243,163,233,244,141, 55, 63, 32, 20,103,205, -102,179, 16,118,132,218,181,155,122,187, 20, 98,239,187, 80,111,202,147,115, 0,173,119, 43,146, 78,208, 46,239, 46,119,171,235, -213,234,110,114,250, 70,223,110,130,130,181,185, 49, 69,219,238, 63,127,244, 23,219,170,125,239,173,183, 31,188,241,209,100,118, - 38,161,239, 85, 19,151, 2, 26,237,219, 44,205,215,183, 47, 39,227,113,121,124,111,183, 89,216,108,116,122,114, 58,155,157, 24, -245, 0, 48,153,204, 78,143, 38,138,188,173, 26, 7,253,217,195,123,111,191,249,230,195,135,111,102, 69,178,223, 44,175, 46, 95, - 61,126,244,248,233,171, 87, 47, 46,111, 94, 94,223, 92,223, 45, 38,163,209, 63,250,227,111,253, 27,191,243,171,229, 56,173, 91, -207,144,164,236,182,203,187,167, 95, 60,122,241,242,114,185,171, 69,225,171, 95,251,224,229,124,254, 87, 63,252,188,105,154, 79, - 30, 61,219,221,174,143,203,130,153,172, 97, 34, 74,216, 58,231, 6,179, 47, 17, 33,117,190, 87, 84,195, 73, 16, 65, 34,107, 88, - 99,245, 28, 33, 32, 3,200,161, 18, 71, 45,177,130,118,189,143, 90, 8, 17, 90,107, 53,168,130,116,226, 9,145,145,154,206, 99, - 36,164, 17,102,214, 26,155, 96,180,178, 16,115,140,215, 28,212, 21, 26, 18,148,132, 12,160, 40, 67,185,160, 6, 0, 81, 37,160, -196,216,168,142, 10, 40, 33,116, 33,136, 4, 71, 36,224, 9, 45, 18, 58, 98,195,236, 44,130, 66, 8, 18,107,146,189, 6, 6, 74, -152, 84, 99,219, 21, 56, 54, 68, 20, 65,243,134,153,145, 68,196, 11, 88, 67,196, 70, 84,152, 25,141, 9, 33, 48, 98, 98, 18,249, -127,153,122,179,103,203,142,236, 62,111, 13,153,185,167, 51,221,177, 6, 20, 80, 0, 26, 13,160, 7,116,183, 40, 54, 37, 14, 10, -201, 18, 29,164, 56,216, 17,166,104, 59,252,234,255,208,225,240,155, 34,252,100,217, 50,229,166,200, 22,155, 24, 10, 53,221,186, -243, 61,243, 30, 51,115, 45, 63,228, 62,213,122, 7,112, 7,220,147, 59,247, 90,191,223,247, 73, 76,168, 26, 29,187,164,106,152, - 83, 41,247, 64, 14, 68, 17,216,116,157, 37,200,179,140, 12,147, 65,241,170, 32, 12,160,162,117,219,108,247,219, 77,189,231,127, -247, 23,127,146,252,168,135,209, 59,192, 24, 55, 5, 68, 18, 64,147, 16, 56,156,202, 99, 74,192,200, 25, 2,141, 92,203,228, 90, - 5,148,244, 48, 74, 86, 82,231,250,122, 11, 38,207, 51, 55,174, 8, 5, 0,129, 71,156,142, 32, 34, 72, 42,108, 9, 64, 42, 25, -167,253,199,251,170,234,136, 0, 58, 16, 27, 70, 66,228,248,134, 53, 22,167, 34,170, 2,241,193,221,174,227, 18, 24, 21,198,218, - 50,235, 56,190, 80, 68,212, 8, 74,168,128,199,179,233,215,223,124, 29,130,100,206, 16,114, 94, 21, 97,240, 47, 95,191, 93,204, - 22,159, 60,127, 90,215, 53, 25,227,108,241,241,103, 95,236, 55,155, 79, 63,251,210,247, 59, 69,103, 51, 99, 48, 83, 0, 69, 25, - 21, 39, 48, 74,175, 8, 14,214, 85, 5, 80,136, 49, 34, 1, 27, 11,170, 81, 69,199, 27,252,104, 23, 79, 75,215,177,152,155,214, -172,152,160, 78,227,221, 28, 68,254, 43, 87,227, 97,179,125, 88,150, 38,194,103,138, 27,169,104,148, 40, 49,166,226,243,136, 28, - 74,255,145, 68, 17, 86,181,198,190,125,251,250,155,111, 95,253,193,239,255,139,127,245,111,254, 77, 84, 65, 99,216, 57, 67,124, -253,246,178,222,183,138,174,107,234,147,197,162,243, 49,175,230,132,232, 44,117,125, 31,169,156, 45, 78,124,187,247, 81,200, 85, -128, 90, 78, 38,131,151,186,222, 90,107, 64, 66, 89,229, 20, 55, 10, 80,119,237,122,187,191,184,185, 29, 6,255,249,167,159, 63, -127,254, 67, 91, 78,194,224, 55,235,187,213,106,237, 24,250,126,104,135,222,104,152, 77,138,147,211, 71, 92,205,170,227,167,103, -207, 62, 86,206,182,155,141,181, 60,244,245,195,237,109,164,220, 49,182,109, 80,245,155,187, 11, 5,112,214,181,219,135,227,211, -199,189, 72,136, 48,248,206, 48, 31,159, 63,183,206,246,187, 59,223, 53,189, 80,221,180, 0,144, 21, 83, 32,163,125, 93, 44,206, - 44,219,161, 94,245,237, 46, 43,202,233,108,230,242, 89,223,183,253,208,179,106, 8,126,122,244,216,119,117, 84, 42,170,133, 97, -210,216,102,249,196,247,251,205,234, 1,108, 33,161,141,209,159,159,157,151,153,217,174,110, 92, 94,246, 98,183,155,165,111,119, -200, 6, 66,223,236, 86, 68,198,229, 19,178, 5,147,176, 45,218,253, 78,165, 39,240,214,150, 93,179, 55,196,132,152,151,115, 16, - 13, 94,117,216, 77, 23,231,156, 21, 49,224,110,191, 11,190,151,232,141, 49,195,208, 0,242,208, 53,109,235, 11, 75, 69, 53,207, -178, 25,185,178,170,166,211,217,236,163,207,126, 84, 77,102,155,219,183, 93,239,183,155,123,203,220,135, 48,120,232,251,206,154, -220,229,211,217,241,179,161,221,223, 94,127,183,235,250,179,211,231,103, 71,167, 38, 63,218,181,221,102,181,172,119, 43,178,133, -115,153,205,178, 42,175, 86,219, 37,114,126,118,250,132,136,130, 42,155, 92,163,223,173, 87,235,213,125,223,249, 8, 88,230,110, - 90,230,199,199,103, 79, 63,120,242,232,209, 7,243,249,194,119,205,221,205,213,139, 87,223,191,124,245,246,237,213,237,235,235, -219,183,151, 87,253,224,159, 61,126,242,199,191,252,197, 31,254,242,231, 94,124, 8,228,208, 73, 59, 92,189,125,251,205,183,223, - 61,172,182,221,224, 63,125,254, 88,156,121,121,113,121,117,117,155,229,238,230,234, 62, 83, 56,153, 20,150,153,152,173, 97, 75, - 6,153,137,108,250, 96, 39,190, 13, 19, 19,179,106, 52,132,200, 12,154,210,144,134, 64, 37,213,212, 85, 12, 49, 32,121, 80, 66, - 50,204,227, 4, 87, 85, 37, 42, 68, 64,204,173, 81, 64, 1,165, 17, 11,128,185,201,157,179,214, 26,235, 44, 34,229,228, 84,132, - 14,194, 35, 58,228, 50, 12,145, 70, 21, 81, 68, 37, 36, 1, 32, 66, 75,156, 78,163,144,116, 69,160, 0, 96,144,152, 12, 18,138, - 82, 26, 49, 41, 34, 51,119,189,104, 66,149, 13,130,160,233,243,153, 52,211,227, 53, 53,173,204, 64,211,180, 39,205, 68,172, 49, -233, 13,132,145,162, 66,136, 65, 14,212,202, 52,231, 53,144, 30, 57, 41, 46, 1,137, 70,158,200, 35, 64,184,169,251,190,239,231, - 85, 97,152, 17, 73,125, 96,147,188,161,184,218,239, 55,251,205,122,183,111,187,134,255,135, 63,251,147, 67, 34, 18, 1, 71, 48, - 91, 66,190, 24, 74,123,206,180,166, 78, 45, 87, 68,148,244, 32, 56,164,134,104,228, 66,224, 88,209,213,177, 81, 6,251,122,168, - 38,249,248, 67, 18, 34,144, 25, 1,149, 4,227,253,245, 32,113, 4, 24,175,196,160,168, 17, 33, 77,227, 70, 52,114, 58,167, 84, -133,152,101,252,245,164, 84,119, 2,190,167, 45,132, 42,200,193,130,141, 35, 58,158, 16, 0,216, 56, 56,184,160,210,228,198,230, - 25,144,124,255,234, 77,150,101, 69, 89, 90,147,101,214,108,182,155,191,255,230,219,175,190,248,225,164,116,237, 16,172,225, 52, -237,123,120,184,123, 88,173,102,211,105,230, 10,197,212,161, 72,125, 8,129,131, 94, 35,173, 55,211,130, 27, 17,137, 12,105, 50, -252,193,225,189,227,253,100,133, 0, 1, 12,130, 38,242,196,168, 69, 75,153,200, 49,131, 68, 4,170,200,137,237,132,128, 48, 34, -146,198,249, 89,210, 2,142,163, 68, 69,192,209,214, 50, 38, 4,128, 8,146, 24, 88, 1, 80,152,248,197,247,175,143, 23,143,255, -244,207,255,148, 45, 3, 17, 51, 35, 83,223,118, 87,239, 46, 23,199, 39,119,183,247,125,187,250,193,231, 63,174,219,160,128,195, -208,171,234,208,181, 22, 21,213, 15,221, 16, 66,239,187,214,218, 60, 10,109, 55, 75, 29,246, 89, 49,171,102,139, 34,135,216,174, -217,152,221,126,183,220,108,174,238,151,170,250,139,159,254,211,199,103, 79, 7,223,214,187,205,102,121, 39, 34, 26,251,186,235, -141,181,179,201,164,112,110,186, 56,143,100, 22,231,207,142,142,142,124,223, 65, 12, 93,179,223, 45, 47,118,203,155,143,127,252, -207, 23,199,167,171,187,119, 26,134,253,234,166,143,210,246,253,102,125,179,223,111, 87,155, 77, 81, 86, 97,104, 2, 58,235,178, -197,116, 22,251,102,241,232,147, 44,203, 49,246,211,163,147, 16, 36,170, 84,197, 12, 1, 44,103,217,100,182,123,184,152,206,143, -129, 12,129,196, 40, 67,187,129, 56, 68, 25,124,215, 45,183,235,161,169, 21,197, 16,102, 89, 25, 1, 50,151, 5,112,109,219,238, -214, 55,121, 86,181,190, 47,157, 45, 38, 71,119,247, 15,117,211, 40,186,188, 58, 46,203,201,236,248,188,154,158, 9,168,247, 61, - 19,205,102,199, 97,216,185,172,232,219,218, 7, 49,108, 11, 87,245,125,167, 18,235,229, 69, 91,239,145,217,185,140,216,118,245, -206,251, 96, 13,117,221,214,152,140, 80, 44,179, 72,172,251,190,221,109, 84, 37,207,171, 68, 61, 59, 62,121, 82,175,111,145,200, -102,230, 97,185,105,218,126,126,242,172,109, 59, 78,122, 0,180, 26, 98, 91,175,186,250,110,187, 93,101, 89,254,225,135, 63,154, - 85, 89,140,254,225,246,117,211,108,157, 53, 89, 94,197,126, 31,194,112,124,114,158,151, 69,215, 13,147,217, 98, 8, 97,185,126, -120,184,125, 91,148,165,203, 51, 47, 60,132,216, 7,145, 56, 24, 67,121,145, 63,253,232,217,249,227, 39,168,113,249,112,245,250, -237,235,151, 47,223,188,185,190,121,123,125,243,250,242,234,110,249,112,122,116,242,187, 63,253,234,139,207,190,140, 17,203,172, - 60, 61,153, 59, 50,119, 23, 23, 47,191,123,241,246,221,181, 34,127,254,213, 15,215,117, 61, 95, 76, 77,158,221,220, 47, 87,203, - 13,251,120, 84,102,165,203,210,238, 46,203,220, 1, 50,136, 68,192,168, 81, 4,223,135, 33, 18, 92, 22, 49,130, 18, 96, 84, 61, -128,124,213,164,138,203,184,167, 2,140, 96,172, 51,198, 28,154,149,169,235, 65,201,192, 71,233,211, 71, 88,228, 5, 91,118,214, -102,153,115,200,201, 91,103,136,152, 44,170, 26, 75,150, 9, 0,153,204,123, 47,133,104, 28, 13,219,204, 56, 90,244,200,164,172, -164, 2,130,228,198, 33,113,194,183, 35, 49,211,104, 15, 70, 5,229,132,116, 5, 50, 22, 70,236, 45, 90, 54,140,232,131, 39, 0, - 99, 44, 38,236,235,120,147, 29,233, 52,134, 13, 16,137, 72,221,117, 93,187,207,156, 99,230,204, 90, 0,140, 81, 12, 39,234, 34, -190, 87, 83, 37, 48, 78, 27,124,221,118,103,243, 50, 47,138,180,137, 77,150,187, 40,178,239,250,205,190,222,215,251, 56, 12, 65, - 35,255,187, 63,255,211,241,218, 56,166, 9,255,171,246,227, 72, 20,131,247, 40,104, 69, 96, 72,225, 63,144, 16, 14, 25,110, 76, -160, 8, 56,172, 12, 85,208, 24, 83,215,245,100, 90,141, 10,240,196, 45, 75, 14, 57, 66, 64, 58, 12,150,113,188,203,167, 57, 22, - 49,162, 27,127,126, 6, 68, 78,194,115, 28, 99, 56,233, 64, 23, 98, 66,228, 20, 65,132, 20, 95, 81, 85, 76,111, 67,105, 76, 13, -136, 33, 6,161,180,154,228,241, 75,160, 10,136, 34,193,249,241,249,219,139,183,171,237,126, 81,149,200,100, 93,150, 59,247,230, -205,197,221,122,253,187, 63,249,188,109,107, 69, 26,252,176, 56, 57,186,189,190,121,254,131, 47, 99,223, 8, 17, 36,100, 68,194, - 92, 38, 43, 0,142,253,223, 4, 84, 96, 99, 83,117,130, 76,242, 64, 81, 28,151, 30,169, 3, 6, 73,141, 64, 7, 90,100, 74,181, -211,104,161, 73,220,152,241, 57,154,222, 65, 40, 13, 30,199, 16,234,184,203, 24,171,124, 35,131, 51, 33,135, 70,112, 77,218, 81, - 31,182,222, 8, 4, 68,166,222,117,191,243,123,191, 55, 89, 76,131, 15,204, 35, 28,170,217,181, 89, 81,174,238,239,111,111,239, -209,111,206,206, 31, 63, 60, 44,251,253,154, 9,201,228,182,156,247,205,150,108, 53,180,141, 43, 23, 38, 43,135,253,109,223,134, -188,156,160,223, 71,229,163,163, 83, 24,214, 32, 67, 20,169,235,250,254, 97,115,179,220,186,194,253,225, 31,252,183, 89,238,118, -203,155,174,105,251,208,151, 25, 55, 77, 61,248, 88,101,206,102, 89,225,220,226,217,231, 89, 81,157,127,240,241,205,155,191,191, -124,245, 93, 49, 63,190,191,126,125,242,209,143,207,159,252, 32, 52,155,245,195,178,105,246, 57,161,168, 70, 69,107, 76, 49, 61, - 82, 68, 36, 27, 3,228,213, 60,207,167,190,217,108, 86,183, 15, 87, 47,242,106, 26, 68,251,174,111,246,251,190,219, 78,170,249, -180,154,222, 93,252, 23, 0,217,238, 86,157,200,209,100, 54, 59,125,186,188,187, 88,223, 95, 14, 96,145, 96,115,127,189,107,187, - 97,240, 81,168,235,118, 40,218,181,195,106,187,235,186,246,225,246,229,116, 50, 3,155, 1,178, 70, 49, 54, 91,175,111, 55,235, -251,232, 91,131, 66,232,155,245, 77, 86, 30,229,153,105,235,173,205,171,140,194,180, 42,171,197,153, 10,100,174, 42, 38,243, 40, -178,186,255,222, 15,131,115, 19, 69, 36,104,153,108, 89, 76, 9,218,135,235,215, 67, 80, 84,241,205, 54,115,166,243,177,221,175, -212, 22,245,182,137,177,101,227,234,205, 77, 62, 89, 52,237, 54,170,134, 24,251,193,159, 61,250,168,217,173,139,201,209,253,245, -139,213,102,229,178,242,233,135,159,116,251,245,253,253,187,205,230, 22,221,241,147, 39, 31,230,229,148, 68,135,126, 91, 55,219, - 8,236,125, 91,229,213,252,209,179, 73, 53, 87,239,207,158,126, 24,129,138,172,152,205, 23,125, 0, 97,103, 93, 37,160,150,134, -188, 60,106,187,122,182, 56, 58, 57, 63,126,246,236,163,199, 31,126, 92, 77,202,122,179,126,119,241,253,247,175,222,188,185,190, -121,115,121,249,230,242,250,230,238, 33, 70,253,201,151,191,248, 23,191,247, 47, 28, 75,110,244,151, 95,125,254,195,231,143,219, -245,246,213,119, 47, 94,127,255,250,122,185,153,205,170,127,242,207,127,246,245,155,139,111,191,125,117,118, 60,249,213,111, 94, -172,110,151,199,101, 81,230, 89, 10,163, 59,147,201, 33,174,203,204,108,141, 15, 67,140, 99, 80, 46,117,188, 1, 65, 5, 36, 66, -154,144, 91,226, 24, 34, 1, 58,107, 67,140,138, 96,137,162,168, 50,218,204,129,136,128,250, 24,172, 49, 10,154,186, 69,227, 46, -139,216, 75, 44,217, 36, 82, 84,102, 50, 85, 53,136, 25,155,241,109,254,240,154,155, 4,152,152, 8,143,160, 33, 2, 18,100,196, - 10,202, 72,170,234,172, 9,193, 7, 81, 4,204,152,153,115, 81, 32, 67,233, 80, 78, 3,109, 83, 24, 0, 12, 49, 50,106, 82, 82, - 3, 74, 58,109, 19, 62, 61, 72,204,172,179, 89, 6,136, 42,145,153,135, 40,168, 33,165, 76,210,117,207, 56,142, 81,125,240, 17, - 33, 55, 92,230,153,143, 35, 99, 39,168, 58,102, 99, 40, 42, 26, 70, 85, 32, 85, 5, 92, 53,221,204,217,201,180, 12, 49,186,204, -132, 56,178, 15, 85,213, 71,108,246, 91, 31, 98,148, 8, 72,252, 87,127,254,167, 7, 68, 60,143,244,153,145, 14, 60, 6, 33, 49, -165,191,117,204,164, 96,194,249, 80,218, 48,143, 39, 84, 34, 38,164, 71,115, 34,144,145,225,126,223,230,147, 10, 15, 39,141, 25, -195,149, 64,108,136, 9,148, 49, 9,189,198,103, 58, 32, 25, 68, 98, 96,132,120,120,202, 29, 68, 80, 32,122,232,112, 18, 51,162, - 69,144, 52,196, 7, 80,128, 0, 35,246,126, 84,161, 35, 25, 72,140,211, 49,156, 41,160, 49,221,241, 1,149,152, 92,158,205, 38, -249,111,190,249, 94,149,170,162, 96, 99,138,162, 84,141,223,190,120,125,122,118,252,244,252,184,233,189, 97,242,195,176, 94,222, -159, 62,122,210, 15,251,182,238,202,178, 34, 54,170, 17,198,237,121,210,193, 88, 78,194,166,131,210,230,112,177, 38, 29,211,158, -116,128, 65,194, 40,242,195,131,107, 27,136, 8, 71, 76, 95,178,187, 38,151, 12,198,180, 75,103, 51, 18, 51,222,255, 43, 18,149, - 82,229, 10, 17, 64,131, 31, 66,223,131, 10, 25, 51, 90, 68,198,117,117,250,147, 39,145, 48,155, 29, 29,157, 28, 69,145,195,151, -100, 31,212,119, 67,223,245,109, 59,108,183,235,201,236,100,113,250,248, 97,249, 0, 50,100,249, 28,137,134,253, 10,136, 53,122, - 59,153, 91,151, 73,191,182, 89,161, 18, 92, 89,109,182,251,114, 50, 49,121,134,195, 61, 34, 72,148, 93,221,220, 60,172,238, 54, -235,170,112, 95,125,252,201,126,223,248, 24,246,219,165,116,173,250,118,185,221, 89,107,202, 44,155, 20,213,252,248,177, 43,203, -217,226,241,252,120,190,186,191,158, 28,127, 80,228,217,246,225,134,144,135,122,181,190,254, 46,198,193, 50,237, 86, 55, 18,227, -230,225,214, 58,151, 25,123,127,127,179,223,239, 98,191,173, 38, 39, 97, 24,188,175,149,221,244,232,131,174,151,253,102,211,119, -117,189, 91, 91,227, 34, 64,219,172, 78,206,158, 14, 2,235,221,254,252,236,195,190,107, 86,203,235,229,195,109, 47,248,228,252, -113,145, 79,235,118, 87, 84, 39,170,169, 88,238,163,170, 32,169,104, 93,111, 38,213,121,179,122,141,106,216, 24, 17,105,247, 91, -166,124,126,242,216,216, 10, 81,179,172, 98, 87,214,155,229,166,174,187,253,125, 89, 20, 69, 94,216,188, 2, 50,251,205,114,232, -118, 97,104,171,201,145,239, 58, 87,204, 8,177, 40,178, 97,123, 71, 38,219,238,119,147,233,162,109, 26,182,134,137,156, 43,134, -208, 51,185, 65,176, 94,221, 12,190, 63,121,244,145, 12,237,110,191,114, 89,193,202,189, 31, 92, 54, 53, 89,185, 90, 61, 72,104, -167,211, 69, 94,206, 78,206, 63,144,161,182, 89,217,183,203,109,189, 63, 61,255,228,236,236,233,126,191,181, 54, 43,171,106,104, -183,138, 86, 8,202, 98,102,179,114, 49,155,123, 95, 43, 21, 67,183,235,219,166,154,206, 65, 6, 17,241,125,235,235, 7,180,147, -106,122, 52, 57, 57, 45,139,252,228,100,250,225, 71, 31, 45,206,206, 32,134,219,171,139,239, 95,124,247,234,245,187,139,187,251, - 87, 23,151, 23,215, 55, 77, 55,156,159, 61,254,215,127,244,199,159,127,244, 60, 2, 60, 61,157,253,254, 87,159,157,205,171,183, -175, 95,125,253,155,255,114,125,125,223,133,240,201,103, 31,238,218,250, 63,255,227,247,125,221, 54,237,240,230,205, 37,133,112, - 50, 41, 28, 17,168, 88, 68,203, 14,205,225, 69,214, 82,138,160,140,204, 40, 70,133,180,183,132, 40,170, 10,198, 88, 0, 13, 49, - 13, 53, 81, 17,188,143,204,134, 9, 85,200, 48, 51, 64, 12, 33,142, 46,108,151,182,116, 74,144, 66, 30, 62, 68, 69,200,152,189, -168, 49, 92,216, 76, 53, 58, 54,200,172,196, 65, 4, 37, 57,130, 88, 1,162, 68,107,205,104,186, 84,201,140,179,198,248, 16, 17, -208, 16, 42, 81,136, 33, 72, 66, 54,242,216,225, 33, 36, 70,102,210,195,150,111,220, 19, 24,134,145,236,146, 98,142,105, 15, 7, - 2, 80,102,185,205, 93, 94, 84,128, 22, 16, 36, 70, 6,100, 99,199,135, 27,179,177, 38,105, 35,152,168,112,206,101,101, 72, 78, - 78, 54, 42,154, 91, 55,120,159,124,223, 18, 53,133,248,214, 93,144,232, 23, 85,158,248, 57,162,239,191, 25, 96,131, 81,177, 31, -122, 4,224,148,156,255,235,191,252,183, 48, 66,192, 18,138, 65, 15, 71,234,120,118,170,106,140, 81, 52,140,249, 34, 64,136, 99, - 70, 5, 14,233, 78, 60,248,130, 82, 47, 33,169,162,131, 31,216,100,206,216,180,234,102,164,131,176, 15, 65, 21, 36,226, 24, 97, - 76,255,166, 2, 33,168, 36, 64, 29, 28,190,246, 8,149, 4, 56,132,229,211, 64, 71, 65,131,168, 0,202, 1,153,158,126,171,114, -120, 41, 72,131,154,136, 2,233,112, 71, 72, 53, 49, 64,102, 85,145,224, 79,142, 78,114,166,111, 94,189,158,148,165,203, 50, 99, - 76,158,231,251,221,238,242,250,238,171, 31,253,144, 20,163,234,208, 15,179,227,243,182,217,159,156,158, 53,187,157,201,114, 38, -107, 83,183,246, 16, 20,125, 79, 25, 75, 98,190,164,141, 79,223, 4,211,248, 72, 76, 40,249,145,134,193, 60,190, 11, 37,134,251, -200,204,193,145, 91,150,126,139,214,164, 27,191,190,103,248,188, 55, 57,209, 97, 72, 3, 16,250, 62,246,173,134,160,209, 35, 25, - 54, 38,133,159, 96,188,227,143, 15,148,162, 58,178, 69,201,198,176,225,100,140,173,183, 77, 12,131,181, 38,203,236,229,235,239, -103,179,249,226,244,108,185,220, 16,103,170, 34,190, 33, 54,160,193,119,141,155,156,128, 12,125,239, 53, 34, 50,213,219, 61,162, - 56,134,161,109,202, 66,178,188,100,196,205,102,243,230,242,122,187,171,159, 60,254,240,231, 95,253,158, 40, 72, 28,186, 97,224, - 24,119,155,101,219, 5, 16,157, 85, 89,158, 87,166,152, 77,230,199,199, 79,158, 79,166,199,235,213, 3, 57,135,104,194, 16, 46, -223,126,123,114,122, 82, 76,142,234,237,122,119,119, 25,135,166, 42,103,117,219,116,125,215,238,238, 55,251,125, 86,206,250,118, - 11, 26,178,162, 90, 28,159, 75,236,235,122,231,187,218,135,110,126,116,154, 87,199, 97,232, 0,141, 69, 1,140, 26,112, 58,153, -150, 69,222, 12,190,217,109,192,100,236,166,177,190, 93,156, 60, 65, 91, 52,251,181, 69,201,108, 54,116, 77,215, 53, 16, 35,146, - 9,125,167, 42,157, 15, 89, 54, 1,245, 72, 56,153, 31, 3, 6, 84, 30,154,181,130, 26, 54,108,172,250,193, 71,248,228,211, 47, - 17,176,235, 58, 68,246, 93,227, 92,214,245,173,115, 25, 33,251, 24,172,201, 13, 82,232,183,213,244, 52, 43, 38, 15,203,107,231, -242,217,226,108,187,186,217,172,215,196,204,198,169,120, 33,203,100, 38,139, 99, 12,221,118,191,158, 78,143,137,140,205, 75,203, -108,160,167,172,106,246, 91, 37, 12, 62,174, 55,247, 97,104, 95,190,252,135,135,219,139,199, 79, 62,250,252,203,223, 25,250,166, -235,187,106, 50,233,247,235,162,156,180,205,154,171, 5, 71, 79,164, 69, 81, 20, 60, 24,138,197,226,241,126,179,100,195, 39,103, - 79, 84,251, 32, 28, 99,104,234, 77, 94,150,147,197,113,206,254,236,209,201,249,227, 15,141,165,229,213,187,183,175,191,255,238, -197,183,175, 47,175,222,222, 92,191,186,188,186,186,187, 43,179,252,151, 95,253,211, 95,252,228, 39,243,217,145,133,250,159,124, -241,244,203,143,206,187,186,249,246,235,175,191,125,241, 34, 42,126,242,197, 15,214, 77, 93, 84,101, 57,157, 92,221, 60, 60,220, -222,231,140,199, 85,153, 49, 29, 90,143, 68, 72,100,216, 36,186, 10,130, 4, 1,196,164, 10,138,160, 73,228, 60, 58,162,210, 77, - 77,100, 4,188,140, 66,202,247,231,195,216,239, 9,170, 2,106,198, 15,214,120,158,190, 23,235, 16, 17, 33, 43, 98,198,233, 4, - 23,102, 70,226,168,128,168,140,144,156, 27, 99,141, 39, 25, 38, 84,152, 77, 18, 95, 70,137,105,208,170,105,247, 58,222,149,212, -144, 49,196, 52,150,196, 33,140,142, 76, 74, 53,207,132, 27, 73,233, 13,102, 78, 37, 85, 17,136,170,150, 8,152,156, 43, 50,103, -201,152, 97,240,233,106, 28, 37,240,225,205, 28, 1,173,115,198, 24, 66, 18, 68,203, 12,196,168,104,153,104,132, 24, 35, 18,129, - 40, 32, 50, 99,237, 67,221,119,199,101,110, 76,218,100,164, 94, 46, 41, 0, 27, 84, 33, 67,168, 64, 33,120,199,108,152,249,175, -254,226, 79,199, 80,185,142,237, 71,122,143,183, 5, 56,232,132,198,124, 17, 41,176, 65,100, 30,140,205,130,156, 0, 0, 32, 0, - 73, 68, 65, 84,169, 91,122,200,202,143,128, 8, 2, 68, 54,227, 52, 95, 69,122, 31,167, 69, 38, 99,153,115, 44,201,210,129,212, -131,230,125, 1, 85, 19, 32, 14, 36, 97,126, 14, 97,168,145,233,169,233,107,165,104, 57,168,130,160,136, 79,192,156, 20, 38, 7, - 9,240,219,160,108, 50, 46, 50,140,169,126, 69, 76,240,160, 3,181, 18, 0, 81, 67, 8, 39,103,243,251,251,135,229,166,153, 79, -166,108,172,181,156,187,236,155, 23,175, 0,233, 71, 63,124,222,116,157,181,110, 58,155, 94, 93,188, 2,180,170, 61,129, 49,185, - 69,193, 0,202, 68, 34, 2, 64,196, 12,140, 32,169,113,108, 0, 85, 98, 24,105,198, 35, 26,159, 71,149,251,161,125, 52,150, 7, -198,191,108, 26,191,201,180,109, 56,120, 10, 14, 30, 1, 60, 44, 20,128,153, 15,170, 62, 52, 8, 49,138,138,104,240, 49, 6, 98, -195, 89,110,141,211,180,124, 57, 64,233,137, 16, 20,109, 86,186,204, 0, 8,168, 18,225,126,189, 75,127,227,229,164,106,235,250, -230,118,125,114,254,216, 49,222,190,123,197, 54,247,125, 27, 99, 4,204,141, 97, 53,133, 97,146,110,131,156, 1,128, 53,212, 52, -245,217,227,103, 81,201, 55, 43,199, 1, 1,135,182,189,186,127,184,190,189,223,181,245,143, 63,251,242,209,249,163,221,110,139, -174,240,125, 19,187,102,187,221,228,121,110, 29,206,139,130, 92, 57,127,250,217,217,135, 31,151, 85,209,245,245,126,179,137, 10, -177,223, 7, 69, 85,115,114,124,214,109,238,114,151,147, 14,165,203,135, 97,120, 88,221, 21,174,128,232,149,179,114,178,152, 45, - 30, 25, 91, 0, 42, 35, 34, 80, 16,218,110,239, 93, 81, 89,223, 32, 64, 49, 61, 65,130, 42,207,200, 77,216,229,161,190,119,229, - 68, 20, 30,238,223,176,155,176, 49,251,253,110,177, 56,137,210, 27,147, 5,145,174,175,125,240,174,152,135, 40,195, 16, 66,232, -156, 5,118,153,113, 69, 86, 77, 12,130, 53, 78, 40, 35, 67,108,216, 16, 26, 82,102, 14,126,200,138,178, 44, 74, 0,174,155,186, -219, 47,183,155,155,197,124,214,111,215,213,228,168,217, 45,157,171, 50,107, 1, 99,223,213, 2,209,217,172,107,118, 89,230, 10, -147, 33,241,124,126, 26, 37, 56, 54,193,119,179,217,162, 44, 43, 25,134,174,111,144,204,110,117, 99, 45, 17,179,201,139,251,235, - 55,139,179,143, 89,181,110, 6, 8, 91,138,253,197,245, 53,101,139,143,158,126, 32, 67,187,218,110,119,219,141,198, 33, 4,143, - 26, 39,211,227,160, 24, 1, 89,177,152, 28,125,252,201,199,177,175,129,109, 57, 59,217,173,239,212,247,100, 41, 47,231,168,222, -123, 63,157, 45,206,159,156,159,206,167,103,143,158,148,121,213,213,155,203, 55, 47,190,123,241,221,155,119,151,111,111,110, 94, - 95, 94, 93,222,223,119,189,255,249,151, 63,253,229, 79,126,150,229,101,108, 30,126,250,217,179, 95,254,248, 83,163,253,219,151, -223,125,253,205,247, 87, 55,247, 31, 62,127,246,147,223,253,217,139,183, 23,215,151,215,211,105,245, 31,127,245,155,102,179, 59, - 46,139,210, 90, 38, 29, 57,169,136, 6, 17, 13, 27, 54, 72,140,132, 17,128,211,145,198,137, 43,160, 18, 53,170, 26,102, 32, 4, -162, 81, 39, 65,168, 18,129,192,160, 21,209, 68,149, 73,246, 84, 80,176,134, 17, 48,168,138,136,177, 70,223, 39, 45,144,162, 10, - 17, 51, 27, 4,240, 65, 85,128,205,216, 28,100, 67,168,208,197, 48,132, 65, 20, 45, 51, 17,143, 84, 21, 74, 38, 5, 80,145,195, -141, 50, 93,108, 15,218, 59, 50,128,104, 12, 48,179,143, 34,170,198, 82,140, 0, 49, 29,184,163,142,129, 82, 74, 26, 81, 36,166, -227, 17, 5, 18,141,128,137,125, 8, 26, 2,162, 14,209,163, 34, 1, 43,130,177, 12,135,161,115, 8,130,136,206,152,168, 82,228, - 14,121,236,222, 31, 60, 70,202,204,134,168,238,195,195,174, 57,171,178,162, 40,198, 25, 63, 40,146,121, 79, 94,147,212, 54, 7, -116,198,176, 53,134,152,255,250,207,254, 36, 61,210,244, 0, 40, 72,124, 72, 28,233,236, 7, 60, 61, 34,191, 63,118,145, 85, 83, -142,227, 80,231, 25,151, 18, 9,146, 54, 62,148, 25,241,246,126,125,114, 52, 19, 72, 54,139,113,199,105,172, 19,141, 49,142,125, - 37, 77,176,178, 3,122, 31,198,159, 42,189,139, 64, 66,152, 43, 42,162, 16, 51, 2,106, 20, 4,149,148,180, 73,136,124,137, 32, -138,152,156,223,227,212, 25, 81, 65, 98,194,166, 19,190, 95, 32,143, 79,163,180, 84, 33,165,163,233,228, 63,255,227,119, 34,178, -152, 77,153, 77, 85, 85, 26,252,175,126,243,205, 15, 63,254, 96, 94,149,189,168,111,219,160,212,238,214,189,215,233,116, 74,200, -198,101,132,140,227,136,102,132, 22,179,181,108,140, 74, 84,145,177,255, 6, 35,121, 46,253, 13, 18, 39,221,205,120,120, 39, 1, - 99, 26,118,165, 63, 48, 21, 32, 34,228, 68,167,123,255, 10,115,104, 6, 51,143, 69, 2, 26, 7, 97,233, 17, 34,132,108, 44, 91, -135, 9,211,129,172,168,170,137, 33,193,100,140,196,232, 92, 78,177, 71,182, 72,236,123,175, 10, 9,182,227,202,106,245,112,119, -119,187,122,244,228,204, 50, 46,239,239, 77, 86, 25,227, 68, 48,134, 14, 84, 99,148,188,156,228,213,113,219,236,136,193,251, 33, -203, 43,137,186, 93,221,249,161,165,216, 70,223,175, 54,187,183, 87, 87,239,110, 30,186,161,255,252,139,159,158,158, 60,106,219, -182,222,220, 74,223,119,205, 30, 33, 32,219,194, 48,219,202,204,142,159,127,254,101, 81,205,124,219, 12, 93, 31, 5, 12,162,134, -182,107,187,249,116,210,239,111,247,235,229,195,242, 62, 12,173,136,236,154, 38, 51,152, 91,123,245,112, 31,145, 13,232,208,181, -237,254,206,184, 28,217,236,118,187, 24,250,114,241,168,200,203,174,217,102,185,107,155, 54, 4,111,140,105,219, 58,134, 97,113, -246,108,232,219, 48,116,153,171,200, 86, 16, 59, 54, 5, 89, 99, 9,187,253,138,109,110, 76, 62,180,219,208,109,217, 80, 89,205, -115, 99,206,207,158,196,160, 64, 48,159,205,217,228, 67,183, 85,241, 10,104,141, 35,182,251,205,141,113,229,252,236, 67,107,237, -126,117, 95,215,117,179,186,100,228,199, 79, 63,210,208, 39, 90, 0,146,233,125, 55,244, 13,178, 85, 85, 9, 3,155, 92,193,244, -131,239,187, 46,170,180,109,227,251, 14, 0,189,247, 54,207,103,211,163,229,242,214,216, 44,138, 26,162,217,217, 7, 8, 74,156, -117,237, 94, 12, 33,114,179,223,182,245,189,216,242,201,179, 47,116,127,157, 85,243, 94,248,234,221,139,160, 70, 37, 26, 12,147, -163,199, 81, 67,179, 93, 50,229, 26,186,118,183,100,107,140,181, 38, 63,126,184,122,187,222,172, 29,163, 45, 22,251,237,198,183, -235,211,211,163, 39, 31, 60, 62, 59, 59,153,206,231, 49,248,229,221,197,235,239,191,253,205, 55, 47, 94, 95,221,188,189,186,190, -184,186,121, 88,175,143,166,199,191,255,139,223,249,131,127,246, 47,231, 71,231, 39,211,242, 15,126,241,195, 79,159, 63,189,121, -247,246,191,252,253,111,222, 92,220, 24,151, 45,142, 23,219,102,255,235,111, 95,132,190,127,119,125,127,117,113,147, 35,206, 75, -151,204,215,105, 37,133, 9,160,193,108,141, 33, 34, 69, 80, 21,131,135, 63,103, 78,200,188,131,204,136, 15,155, 41, 66,209, 49, -162, 65,132,162, 98, 13, 39, 38,159, 87, 1,145, 44,203,198, 20, 10,147, 49,108,144,130, 70, 68, 98,235, 64,213, 25, 78, 87,114, - 34, 50,140,136,152, 20,107, 9, 36, 34,170, 26, 65, 8, 28,219, 4,246,114,140,170, 32, 34,170,146, 54,130,138,191,181, 15,165, - 60,136, 2, 2, 74,102,140,168,198,152, 68, 86, 16, 69,140, 97, 54, 9, 39, 5, 99,254,132, 65,229,192,184,196,196, 32, 36, 0, - 8, 26, 83,176, 48,132, 16, 37, 90,102, 34, 74,224, 66, 4, 48,236,128, 14, 0,250, 36,221,182, 28,163,104, 12,104, 76,210, 95, - 35,162, 99, 71, 8,187,118,120,216,213,167,147,108, 49,153, 4,197, 16,252,248,104,132,241, 88, 30,115,212, 10, 4,192,100,202, -188, 96, 50,233, 25,152,104,238, 99,240, 46,141,218, 15, 30, 60, 76,131, 19, 34, 4, 34,149, 36, 11, 26, 3, 55,108, 80, 66, 74, -120,164,158, 17,230,152, 16,143,138,192, 54, 51, 32,105, 65, 33, 42,112, 8,122, 67,240, 62, 73,207,211, 46, 52,129, 6,112, 44, -252,104,144, 48,134,216,129,147, 23, 73, 14,224, 69,149,152, 64,196,128, 72, 18, 84, 68, 81,210,232,159, 70, 55, 87, 74,183, 38, -178, 40, 65,210,217,137,188,159,112,164, 93,238,168,200, 38, 66,164,179,199,143,127,254,163, 79,254,211,223,127,183,152, 84,167, -143,206,163,234,243, 15, 63,186,186,189,255,223,254,253,255,245,191,254,213,159, 81,244,192,230,147,207,126,180,223, 92,122, 79, -153,163, 97,232,141,205,152,232,189, 17,117, 12, 1,197, 32,122,208,124,131, 0,140,250,174, 20, 90, 71,228, 3,230,147, 84, 66, -194,206,128,200,184,139,161, 67, 92,104,156,215, 36, 65,251,200,197, 31,223, 99, 12,114,178,245, 29,244, 99,170,168, 24, 51, 91, - 64,130,200, 51, 19, 25,133,120, 0,201,167, 82, 85, 84, 69,227,242,244, 46, 17, 36,118,109,207, 4,168,194,198,198,193, 7, 47, - 24, 7,151,101, 46, 47, 92,158,139,130, 53,232,141, 1, 45,178,162,232,214, 75,128,208,172,151,209,215,110,114,164,128,121, 89, -190,250,250,111,103,139, 39,219,118, 37, 28,163,226,174,174,239, 87,219,102,232, 20, 96,102, 20,128,188,239,131,104, 12, 26,186, - 38, 70,177, 86, 17, 89,200,124,248,241,167,179,197,105,211,250,213,187,127, 4, 59,141,209, 71,129, 56,116,251, 93,237, 50,123, -119,115,223,214, 75, 11,116, 52, 43, 1, 34,104,118,115,183, 69, 37,239,133,180,111,129,103,243, 9,241, 84, 67,183, 31,122, 87, - 30,147, 6, 63,172,187,129, 63,248,228,167,243, 42,219,213,221,190,107,187,166, 6, 68,231, 92,229, 92,232, 80, 84,123,239, 93, -225,216, 98, 93,223, 91, 58,203, 51,183,215, 91, 18,175, 42,121,181,232,155,189,115, 69,110, 76,235,227,106,243,208,246,193, 50, - 69,223, 15,126,232,155,109, 8,195,244,248,105, 94, 84, 97, 24,178,124,166, 49,114,108,189, 2,160,160,168,115,213,116, 50, 93, - 44,206,111,175, 46,242,233,153,111,235,162,154,132, 62,250, 24,187,182,182,206,213,187,123, 54,153,130,134,190,107,135,166, 92, -156, 26, 19,125,143,189, 31,202,114,222, 55,187,203,253, 62,159, 76, 75,231,238,239,239,170,106,230,200, 70, 98, 54,230,232,209, -243, 16,245,229,197,119,193,199, 15,158,126, 58,173,114,203, 84, 45,206,141,157, 10,244,121, 49, 99, 91, 41, 12,182,152, 70, 0, - 67, 46,198,104, 8, 56, 47,125,191, 79, 55,159,235,203,151, 49, 6, 87, 76, 57,183, 76,236,202,108, 49, 63, 89, 44, 38,211,217, - 84, 4,118,155,245,245,219,151,223,190,248,246,221,213,205,229,221,221,221,242, 97,181,221, 89,182,191,255, 59,191,255,211, 47, -127, 62,248,190,105, 54, 95, 60, 93, 60, 61,121, 50,248,230, 31,126,245,171,215,175,223, 70,196,103, 63,248,240,254, 97,133,185, -121,242,232,252,213,223,252,250,106,179,157,217,172,154, 26,163, 35,169,157, 80,251,144,168,176,224,140, 65, 50, 81, 67,210, 79, -130,170,143,162, 72, 76,202,196, 49, 2, 17, 43,104,140,162, 2, 76, 38,125, 74,137, 40,170,128, 38, 50,187, 1,210, 24,162, 15, -193,176, 1, 50,221, 48, 88, 99,152, 76,114,225,197,228, 48, 82, 68,145,204,177,247, 10, 42,214, 25, 85,209, 8,200,148, 27, 4, -165,160, 81, 65,211,231, 35,135, 12,144, 80,132, 0,162, 74, 58,204,144, 40,136,210, 33,135,173, 72,162, 18, 21, 24,213, 24, 2, -114, 62, 65,105, 65, 18, 14,209, 57, 78,222, 57, 80, 48, 72, 74,128,162, 49,106,202,227, 39,250,187,181, 20,135, 24, 35, 90,103, - 53,106,219, 15,134,146,105, 89, 1,209, 56,198, 17, 25, 21, 41,209, 95, 9,211, 21, 48, 70, 73,198, 25, 82, 72, 10, 64, 34, 20, - 17,239,195,126,232,115, 75,179, 34,247, 2,162,146,101,142, 13, 15, 9,105, 9,160,239,121,244, 18, 77,122,209, 79, 27,221,191, -254,183,255, 22, 70,144,239, 72,254, 74,239, 42, 4,105,162, 64,163, 5,232,160, 64, 65, 98, 96, 64,136,137, 91,175, 7,233,118, -162,236,195,251, 4, 14, 40,147, 81,223, 54,145,143,170, 66, 20, 12,189, 87,159,143,247,103,192, 36,168, 82, 34, 98,155,134, 53, -239,215,168,114,128,100,165,127,108,212, 37,225, 1,193, 9, 32, 8, 17, 4,226,248, 86, 1,163,209, 85, 64, 0, 65, 35, 32, 18, - 42,165,121, 79, 10,134, 38, 71,176,198,241, 17, 69,132, 4,162,250,228,244,244,205,155, 55,171, 93,125,114,114,194, 68, 81,244, -120, 49,251,246,219,239, 93,150,253,224,217,121,106, 12, 22,213,244,245,247,191,185, 95,174,171,106, 66,204,198, 26, 50, 22,245, -160,242, 2, 21, 77, 25,199,148,236,228,145,132, 57,190,142, 16, 2, 16, 50,160,164, 96,254, 56, 84, 18, 57, 68,188, 14,255,143, -198, 39, 96,122,133, 18,162,100,246, 30,177, 67, 18, 71,193, 35, 30,188,183, 42, 17, 20,137,152, 51, 67,236, 84,131,170, 16,165, - 2, 29, 17, 16, 16,106,192, 98, 50, 97,151, 49, 82, 8,106, 8,251,190,115,153, 35, 54,153,163,229,195,170,238,195,217,241, 25, -163,191,187, 91,123, 47,161,223, 71, 31, 20,130, 53,206,100, 57, 34,249, 40, 68,232,123,111,157,241,253, 32,194,204,102,168,151, -185, 1, 85,184, 95, 47, 47,174,110,234,174, 47, 93,254,203,159,253,226,126,187,241,253, 64, 68,210,237, 99,191,247,162,147,204, - 69,165,199, 31,125,252,193,231, 95, 69,209,216, 55, 69, 53,151,232,219,253,182,204, 74,244, 77,240, 97,191,126,216,110, 87,147, - 34,159, 58, 83,247,109,215, 14,235,186, 93,239,119, 65,194,174,109, 38, 85,229,178,172,111,247,243,227, 39, 49, 74,219, 54,140, -154,226,163,207,158, 60,211, 97, 83,150, 71, 16,187, 24,194,110,191,149,208,151,147,227,190,223,152, 98,106,108,150, 87,211,161, -221,103,249,220,100, 51, 38,106,238,223,102,211, 57, 25, 71,214, 74,240,200, 25,160,194,176,204,242,162,238, 2,145, 35, 66,100, -102, 66, 85, 36,227,156,113,190,223, 24,107, 69, 52,244,245,233,241,233,116, 50,147, 97, 48,150, 93,158,177, 49, 55,111,191, 25, -134,182,235,218,193, 15,109,189,202, 11,151,229,133,181, 22, 1, 16,172, 42,250,190,115, 89,225,125,147, 27,103, 93,161,234,243, - 98,218, 13,181, 2, 75,236, 69, 2, 8,122,239,217, 98, 91,215, 2,220,110, 46,239, 87, 15,239, 46, 95,158,158, 60,121,254,209, - 15,202,233,169,239,106, 36,147,151,149, 82,182,190,125,201, 8,179,147,167, 67,187,170,166, 83, 13,190, 93,221,230,229, 76, 68, - 33, 6,206,220,100, 50,157, 31,159,173,214,173, 42, 28,159,156,103, 89,177,152, 87,167, 39,213,108, 62,173,166,211,110, 24, 86, -119, 87, 47,191,251,205,175,127,253,235,239, 47, 47, 47,111,111, 47,174,175,183,245,254,211,231,159,253,247,127,242,151,159,124, -248,169, 31,186,227,138,127,239,139, 15, 22, 37, 93,190,125,243,221,215,223,189,189,190, 61,127,114,250,233,151,159, 44,235,253, -122,185, 41, 74,247, 31,254,230,239,135,125,125, 94, 77,203, 60, 79,106, 64,227, 18,145, 9,149,209,178,117,134,141, 49,173,239, - 15, 59, 60, 5,196, 16,211, 50, 27,147,201,250,240,218,138,137,208, 21,162,152, 36, 48,196, 4, 43, 81,213, 24,130, 34,162, 99, - 22,213, 40, 33, 81,216,211, 0, 54,104, 58,112,152, 8,148, 49,248,177,173,157, 94,225, 9,136, 13,137,128, 15, 33,196,192,137, -213,113,120, 75, 0,144,180,220,146,148, 7, 60,132,208,144, 80,144, 82, 50,129, 16,153,145,157, 53, 72,132, 24,162, 70,149,164, - 22, 73, 41, 6,195,148,240, 33,137,142,251,126,143,120,200,179, 41, 51, 91,195, 33, 6, 85,180,214, 36,195,225,168,230, 99, 82, -129, 16, 35,155, 20,185, 65, 51,142, 49,210, 96,136, 9,148,201, 70, 85, 67,148,182,193,203,182,139,189, 63,155,148, 2, 86, 33, - 18,113, 58, 18, 13,145,136,166,129, 1, 35,105,146, 65, 19, 50, 27,195,198,107, 52,154,214, 33,163, 91, 68,248,183,134, 33,100, -128,209, 32, 13, 32, 18, 15,218,232,228, 9, 98, 72,220,171, 49,227, 50,178, 30, 85, 35, 37,223,180,168, 2,158, 30,205, 94,220, -236,240,124,174, 49,142, 10,246, 3, 69, 82, 71,213,201, 88,203,140,222,115,122, 83, 24, 23, 32,244,222, 93,164,135,147, 93,100, - 68, 1,129, 14, 4,170, 64, 2,145,233,144,227,161, 20, 94,209,148,136, 84, 28,161, 5,100, 57,189,118,232,152, 13,226,131, 53, - 67, 1, 9, 84, 76,102,255,232,159,253,252,255,248, 63,255,223,119,151,151, 63,248,244, 99, 80, 87,228,103, 63,254,252,211,255, -240,159,254,243,143, 62,123, 86,100,102,215,108, 77,150,157, 61,122, 4,144, 47, 22,147,213,114,195,236, 44,233,104,153, 79,246, -117, 60, 28,207,248,219,217,153, 15,129,217, 28,236,144, 49, 17, 31, 84,129, 17,226,200, 83, 56, 60,177, 0, 18, 83,126,252,157, -140,112,130,164, 45, 76,205, 92,129,247,188, 8, 29,173,179, 56, 66, 45, 0,148, 36, 14,170, 64,204, 35,186,255,224,131, 76, 26, -112, 0,137, 33,250,174, 35, 66,114,153,177,108,243, 76, 85,155,221, 6,165,243, 58,204,170,133,134,174,223,173,179,201, 49,160, - 49, 16,251,110,227,138,169, 10, 16,104, 64,140, 40,209, 55, 93,167,121, 89, 40,178, 97, 32,199, 49,202,224,227,224,189,134,240, -244,147,207, 49,159,247,219,203,233,116,209,109,238, 66, 95, 71, 4,198, 56, 4,153,157,126,112,246,236,147,174,217, 18, 87, 26, -187,245,253,205, 16,134, 24,194,126,123,247,112,115, 81, 84,167,113,168,213, 55, 3, 14,131,232,122,189, 33, 50,203,237, 14, 24, -251,125, 93,239,182,134,205,220,229, 81, 36, 6,239,138, 73,169, 88,111, 87, 82, 20,229,244,232,104,177,104,107,192,188,148,122, -217,180, 77,140,234, 12,134,216,247, 67, 40,226,206, 32, 69,208,204,101,210,109, 61,185,216, 14, 68,198,215, 91, 71, 70,144, 67, -191, 87, 42,242,172, 44,167,147,253,110,141, 49, 8,196, 40,193, 88,174,102, 19, 21,180, 54,151,232,157, 45, 39,121,222,113,182, -139,241,254,225,190,200, 55, 77,211, 84,147,217,208,118,141, 42, 81, 86, 77,103,113,183,243,190, 39, 37, 17,106,247,219,180, 22, - 26,186,118,232, 7,231,178,190,173,153,173, 53,166,233,154, 24,176,116,184,233,219,162, 90,128, 39, 25,122, 59, 61,153,103,185, - 53,102,121,119, 57,132,110, 24, 90, 59, 61,125,156,229,179,220,173,239, 46,170, 35,216,109,239,171,217, 41, 15,144,217,118,113, -242,200, 58, 27,200,204, 22,143,250,118,155,103,133,177,206, 26, 82, 31,119,235,119,229,100, 78, 54,103, 99, 44,199,117,221, 62, - 49,225,228,248,168,154,149,101, 81, 68, 9,203,187,219,205,253,237,155,215,223,191,188,120,247,238,246,246,226,250,102, 87,215, -139,217,226, 15,127,247,143,254,201,207,127,135, 98,219,215,235,175, 62,125,244,244,180,218,173, 55, 95,127,251,221,237,253,106, -190,152,156,156,157,244, 49,254,237,175,191,206,173,123,245,246,234,226,205,117,153,217,233,209, 49,234, 8,115, 53,142,210,199, - 46, 32,103, 99,217, 26,124, 8,214,176, 68, 13, 26, 25, 57,213,240,144, 24, 84, 65,116, 8, 65,130, 26,147, 92,170,130, 68,150, - 77,170,253,228,153,233,135, 16, 35,160,162, 37, 4,196, 33, 70, 4,101, 99, 52,136,162, 48,154,116,174,165, 74,121,240,209, 90, -195, 25, 74, 28,213, 15, 6, 72, 65,130,136, 70, 33, 34,209,113,180, 78,204, 16, 5, 8,162,160,140,222, 15,140, 41, 19, 50, 14, -138, 1, 68,152, 9, 1,125, 76, 67, 4,245, 18, 19, 46,139,129,211, 60, 56,109,139, 1, 48,170, 32, 37, 15, 19, 6, 21, 28,171, -149,160,160,101,150, 9,104,244,193, 57,151,216,130,160, 74,204, 72, 42, 1, 84,212,176, 37,195, 32,193, 50,167, 15,171, 33, 4, - 67,226,189, 97, 6, 96,107, 88, 6,141, 81,216,224,190,237,135,182, 61,158,149,232, 28, 8, 36, 79, 8, 3, 42, 81,148,212, 70, -210,224, 21, 29, 89,230, 36,125, 72, 55, 68, 82,224,255,241, 47,255, 28,198,246, 15,209, 72,114, 72,135,225,248,118,112,184, 95, -114,154,213, 28,230,216,240, 94,179,148, 46,245, 35, 98, 75, 14,216, 96, 0, 0, 45,178,252,237,197,197,124,113,108, 71,119, 35, -140, 98,189, 68,187, 25,239,250,138, 68,108, 80,198, 23,134,180, 34, 68, 72,251,130,195, 47, 46, 61, 54, 71, 33,121,242, 28, 43, - 40,210, 97,210, 50, 46,145, 83, 39,120,124, 63, 24, 23,140,240, 62,248,163,128, 60,146, 20, 32,205,254, 80, 1, 98,152,206,102, -187,237,246,226,234,174,176,217,236,120, 62,244, 67,158,101,203,229,102,179,111,127,254,197,243,174,247, 18,195,221,205,125, 63, - 12,243,227,147,253,102,229, 76,230,178, 12,229,208, 56, 26,179,139,233, 27, 76, 96, 5, 0, 68, 54,227,251,208,216,196, 2, 69, - 66,145, 56,254,232,108, 21, 5, 98, 68, 38, 0, 26,141,224, 99, 6,149, 15,165, 93,132, 67, 45, 56,101,204,210, 43,146,140,104, -186,164,136, 81,149,244,227,152,113,194,150, 2, 52,156, 50, 88, 69, 81,205,144,176,109, 7, 4, 84,241, 69,206, 10,132,192,113, -104,110,175,239, 59, 15,179,105,229, 50,115,121,249, 16,252,128, 10,214,229,169, 76,128, 49,248,174,141, 68,126,191,201,138,194, -247, 33, 70, 65,191, 5, 38, 19,183, 73, 26,247,230,250,246,118,185,236,188,255,225,199, 63, 48,161,117,197, 52, 52,123,223,212, -237,230,174,245,126, 86, 76,148,233,195, 31,126,117,116,254,164,221,109,156,115,211,147, 15,218,166,235,183,203,122,125,101,109, - 97,140,205, 51, 75,204, 57,103, 93, 83,199, 40,189,232,126,187, 14, 8,165,205, 55,187,141,117, 89,149, 59,103,204,209, 98, 33, -170,205,126,215,117, 53,187,114,113,124,222,214, 59,136,189,203,202,205,190,185,189,121, 27, 49,223,239,215,211,249,137, 14,141, - 97, 39, 50, 0, 66,136,218,251, 16,154,135,227,179, 15,252, 48,212,155,155,124,114, 76, 68,174,156,151,147, 89,150, 57, 6,109, -247, 75, 31,116,240,123, 66, 86,136, 32, 93,140, 42,126,200,178,124,232,107, 54,121, 20,159, 57, 6,141,253,224,219,118, 48,164, - 49,120,227, 50,118, 5,136,206,103, 11, 16, 25,134,182, 40,167,189, 31, 92, 86,177,117, 49,232,234,225, 74,128, 77, 58,128,217, -130,192, 48,244,192, 72, 4,126,232,145,108, 68, 41,242, 28, 20,230,211,227,135,229,187,235,213,114,191,219,158,159, 63, 59, 57, - 58, 33,114,229,226,220, 90, 87, 78,143, 1, 89, 21, 66, 24,182,235, 27,147, 79,201,228,205,126,103, 25,243,124, 14,138,157,239, - 21,140, 53, 1,144, 57,203, 39,213,220, 21,185,244,155,103,207, 30, 61,122,244,104,113,188, 96, 99,187,118,255,112,253,238,205, -203, 23, 95,127,251,205,139,139,183,151,119,119, 23,183, 55,117,221, 60,123,242,193,159,253,235, 63,126,246,193, 15,183,171,219, -179,137,251,242,249,105,105,244,205,171,151,255,240, 15, 95, 7,137,121,145, 7, 17, 83,229,222, 15,223,125,255,182,221,181, 19, - 99,143, 38,149, 25, 95, 82, 37,141, 83, 84, 49,202, 40,181,176,198, 72, 82,175,165,216, 71, 34, 34, 26,131,138, 68,104, 82, 14, -122, 60,107,240, 32, 60, 98,132,145,237, 46, 81,130,138,170,102,142,129, 72, 36, 42,162,177,196,201, 71,151,252,113, 34,134,153, - 57, 53,158,128, 13,161, 1,245,202, 68,134,199,117,215,193, 21,145, 14,113,176,204,169, 17, 58, 4, 25, 41, 44,100, 0, 1,153, -249, 16, 40, 78,183, 68, 99, 9, 20, 99,148,116,169,125,223, 47, 97,194,168,224, 12, 89,231, 44,178,138, 40,104,110,242,132, 42, - 87, 21,139,148, 14, 54,195,134, 0, 6, 31, 8, 34,115, 90,154, 41, 34,165, 72,184,247, 66, 76, 76, 22, 9, 13, 2,145, 17, 85, - 38, 50,214,166, 11, 29,145,161,228, 3, 81, 1, 68, 99,168,247,113,189,223,207,138,188,204,179,116,202,216,145,150, 67,160, 74, - 68, 34,170, 0,134,137,153, 12, 51, 18,138,130, 15,145, 64,211,224, 46,249,197,137, 71, 34,138,144,234,225,196, 79,194,114, 80, - 64,213,247,235,208,247, 97,111, 76,250, 91, 34,162,164,170, 5, 2, 6, 84, 57,136,161, 33, 0, 31, 79,243,135,237,238,233,241, - 76, 36, 61, 53, 15,133,132, 52,120, 79,187, 79, 73, 88, 48,147, 86,185, 4, 36, 33, 40,104,210,154,166,245, 35, 17, 18, 74, 2, -175,140, 96, 25,213, 67,202, 38, 69, 19,211,166, 29, 15,227,123, 81, 33, 1, 73, 55,221,116,157, 39,192,241,176, 37, 4, 74,195, - 18, 85, 38, 85,252,157,159,126,249,221,219,235,235,187,187,106, 50, 45,171, 50,138,255,224,233,163,191,251,205,119, 95,125,249, -241,249,201,162,238,194,143,126,246,187, 18,154,237,174, 57,127,250,120,189,218,184,224,152, 24,209, 40, 0, 59,171,209,171, 74, - 12, 66, 72,232,140, 98, 36, 66, 85,209,212, 85, 96, 74, 15, 42, 9, 33,253, 94,147, 24,132,144,213,164, 55,216, 20,110, 61,108, - 17, 84, 16, 57, 1, 66,117, 92,152, 34, 18,146, 49, 26, 98,140,131,113, 46, 97,232, 53, 36, 98,157,112,234,138,164,121, 86, 20, - 53, 12, 0,209, 7,155, 51, 18,182, 93, 15, 10, 93, 83, 91,146, 96, 45,145, 74,240, 38, 43,216, 24,132, 8, 81,216, 88,155,229, -138, 71, 72,168,210,183,251,218,106, 12, 54, 23,229,216,181,192, 70,163,247, 30,173,225,108,250, 40,160,217,175, 95, 89,235,186, -190,105,154,150, 16, 13, 91, 34,107,166,143,172,205,219,193, 83, 24, 6, 31, 93, 86,177, 45,167, 71,243,249,233, 73, 93,111,189, -224,244,228, 81,232,118,190, 93, 85,199,103, 93,179,111,235,218, 57,179,219,174,135,190, 71,241, 64, 90,239,219,213,234,206,139, -150,197,116,181, 89, 55, 67,180, 20,247, 97,112, 54,107,183,155, 72,182, 29,250,188,156, 13,195, 16,154, 77,244,158,220,196,149, -139,219,235, 43, 99, 43,132,161,116,150,137, 64,216, 15, 77, 84,200,184, 10,245, 67,181, 56,245, 68,235,235,111,178,242,180,156, -159,179,177, 24, 3, 16, 33, 90,109,247,198, 96,181,120,204, 77,141, 4, 67,219, 24, 91, 33,120, 37,107, 12,239,150,151,197,244, - 88, 67, 19,177,220,174,111,227,224,201,230, 72, 56,116,129,136,173, 41,253,176,235,155,189,198, 61,178,149, 32, 49, 14,251,237, - 93,107,171,204, 56,237,215, 89, 62, 55,140,126,232, 32,202,224, 99, 28,106, 96,107,139,249,224, 7, 2,200, 51,215,180, 97, 49, - 59,219,238, 30,190,125,243,155,166, 94,255,240,195, 47, 5,141,203,136,136,251,254, 30, 86,146,231, 19,233,119,214,132,193,235, -126,243, 48, 61,127,158,229,147,118,191, 70,197, 0,188, 95,223,100, 46,115,197,116, 49, 59, 10, 67, 71,166,244, 33, 88,226,217, -164,154,125,250,233,164,170,178, 44,239,218,166,174,119,155,251,155,111,190,251,250,197,235,139,205,126,191,218,108, 55,155, 13, - 91,243, 63,255,119,255,203, 23, 95,252,164,174,235,216,110,126,254,233,209,147,211,249,237,213,205,203, 87, 47,183,155,221,179, -143, 62,172,206,166,255,223,223,254,227,179, 71,199,157, 14,191,250,135,239,102,228,206,171,210,199,168,136,108,156,196,161,105, -251, 62, 52,185,181, 69,150,231,121, 22, 99, 80, 5, 31, 67,140, 98, 83,237, 61, 13, 16,172, 9, 94,200,176, 65,235,131, 71, 5, -203, 28, 48, 38,173, 3, 1, 41, 64,225, 44,170,168,136,199, 36, 2,228,193,135,145,170,164, 98,192,120, 1, 4,148, 24,172,179, -133,115, 94, 49, 9,155,148, 48, 70,193,136,206, 25, 81, 53,160, 33,137,136, 1, 13,211,144,182,112,138, 62, 13, 69, 69,217, 80, -242,119,166, 68, 37,160, 26, 99, 67, 12, 17,129, 64, 83,132, 7, 8,208, 25,136, 10, 34, 41, 15,168, 24, 81,217,177, 97,107, 37, -134, 94,133, 9, 24, 77,140, 67, 4,116,105, 9, 11,138,136,142, 40, 34,134,168,133,203, 0, 16, 33, 42,129, 4,176, 76, 94,162, - 2, 86, 69,209, 6, 1,137,214,218,160,136,160, 6, 13,128,104,140, 41,175, 14, 18, 33,105,224, 84, 17, 68, 98,188, 94,110, 10, -198,163, 73,217, 69,113,136,145,176,139,222, 32, 27, 70, 0, 26, 68,144, 17, 99, 4, 38, 80, 13, 33, 2,128, 65,238,209, 19, 40, - 1,241,255,244,151,127, 1, 8,140,128,230,183, 17,125, 28, 35, 26,233, 65,136,227, 61, 55,161, 5, 36,140, 36,152,195, 26, 22, - 71,132,103,194, 36,143,113,245, 52, 71, 8,128, 83, 19,239,183,237, 98, 62, 17, 25,239,246,233, 68, 38, 32,125, 95,184, 79, 35, -133, 68,200, 26,139, 84, 4,128, 26, 3,154,131, 24,100,108,185,141, 5, 78, 64, 74, 13,177,177, 16,251,219,164,230, 40, 34, 77, -122,215,177,120,139, 4, 74, 32,137,131,147, 30,103,227,216, 28,145, 1, 40, 70,157, 76,114, 6,255,143, 47, 47,115,103,102, 71, -115, 98,202,141, 27,250,254, 55, 47, 47,126,254,229, 39, 65, 98,223,247,183, 87, 23,203,229, 50,200, 48,244, 67,238,242, 4,205, - 52,198,106,148, 68,101, 24, 31,129,162,105, 89, 35, 49, 34, 36,249,150, 66,122, 77, 27,215,195,172,154,222, 71, 18, 69, 72, 37, - 10, 26, 67,104,210, 28, 38, 77,114,144, 65,163,140, 58, 66,194, 84,171, 83, 20, 64, 2, 77,141, 92, 0, 76,116,103, 68,250,109, -238,120,108, 35, 43, 0, 66, 86,206, 13, 99,219,180, 89,158,245,117,107, 51,139, 54, 67, 4, 21,181,214, 61,220,222,183,245,230, -248,241,179,217,124,122,241,234,123,224, 76,162,236,151,247, 46,171,140,203, 35, 88,100, 43,161,103,195,125, 63, 40,160,205, 28, -160, 27, 86,239,218,122, 89,230,249,114,179,189,184,185,109,187,222, 11,252,226,167,255,204,162,248,118, 75,177,237,219,253,166, -237,166,211, 41,101,238,217,243, 47, 92, 81,121, 49, 89, 81,146,134,187,139,151,104,109,189,188,204,108, 85, 86,149,250,222,135, -136, 34,221,246,190,233,122, 65, 18,223,163, 49, 79, 79,159,108,235,205, 32, 65, 99,200, 51, 87, 85,147, 40,113, 24, 90,227,114, -137, 66,168, 2,216,117,155,211,179,199,190,111, 86,235,109, 93,239, 67,243,144,229, 37, 32,119,109, 45,136,117,219, 53,237,158, - 8, 28, 27,114, 57, 82, 33,200, 33,198, 97,232, 93, 53, 37, 54,245,110, 37,202,206,112, 8, 61, 72,168,155, 70,136, 65,209,162, -175, 38, 39,206,102,108,115, 36, 38, 67,136,216,118,221,118,183,149, 48,236,214,247, 0,120,180, 56,206,156,169,155,214,230,229, -126,191,239,187,225,104, 49, 45,242, 2,208,129,239, 76, 54, 9,253,110,114,116,228,152, 98,240, 89, 86, 13, 62,206,166,179,147, -163,121, 81, 76, 53,134,172,156, 16, 72,235,251,182,239,110,151,183,147,242,168, 98,146, 24, 0,105, 54, 61, 98,150,182,235,216, - 22,229,252, 12,181,179, 46,207,202,197,126,189, 42,170,105,244,221,208, 55, 89,158, 7, 17, 81,244,221,190, 40,114,212, 33,250, - 22,144,143,142, 22,143, 31, 31, 85, 85, 54,153, 76, 84,180,222,109,238,111,223,190,121,245,242, 87,127,247,119,223,188,186,184, -185,127,184,123, 88, 6,209, 31,125,241,227,255,230, 15,255,248,195,167,207,111,223,254,230,209,220,252,248,147,163,130,240,235, -175,191,249,254,197, 43, 54, 12, 76,154,217,111, 95, 93,236, 54,187,235,171,155,239, 95, 94, 30,103,238,164, 42,153,153, 13,151, -142, 51,107, 66, 4, 31, 35, 34,176,161,204,216,180,169, 28,111,170,138,214,146, 87, 85, 80, 98, 78, 98,179, 4,154, 77,168,193, -160,146, 86,121, 2, 96,136, 13,161, 68,241, 33, 36,125,141,177,172,162,137, 42, 59,214, 17, 15,221, 72, 69, 16,213,182,239,153, -137, 24, 67, 20,195,204,128,206, 26, 70, 35,163,205,103,204,135, 32,160, 53,236, 12, 43,170, 38, 1,247,232,131, 38, 64, 48,105, -190,195,156, 2,239, 57, 83,170, 74, 38,146,176,136, 16,170,113, 38,125,243, 76,236,216, 18, 37,186, 31, 57,166, 40,154, 10,235, -134, 80, 16, 64,128,137,172,229, 46, 8,129, 26,102, 77,132, 94,107, 81, 5, 1,251,100, 88,101,163, 10,134,208,218, 44,136, 26, - 34, 34, 43, 26,145,146, 65, 57,213,143, 16, 16, 12,162, 2,129,234,253,182, 1, 13,103, 39,115, 47, 96, 8,129, 25, 85,153,216, - 18,132,177,217, 3,170, 34, 49, 16, 83, 8,202, 76, 0, 24, 68, 98, 28, 12, 82,239, 7, 51,238, 69, 85, 53,200,225,136, 2,132, -209, 73,136, 35,103,102,100,236, 42, 68, 96, 30, 19, 55,144, 30,118, 73,151,138,201, 16, 61,238, 8,146,108, 21, 64, 99,200,171, - 41, 63,220,140, 35,244, 17, 84, 25,117,140,141,208,248,229,198, 41,198, 97, 57, 43, 74, 76, 18, 21, 76, 98,117,166,227, 78, 80, - 89, 17,188,136, 1, 16,140,170, 35,138, 39,117, 91,137, 8, 68,210, 77,253,125,252, 71, 9,223,123,212, 71, 73,169,140,163, 27, - 5, 21,145,168,158, 21, 17,160,239,241,231, 63,253,201,197,229,253,213,205,221,108, 54, 63, 62, 57,214, 28, 62,126,246,236, 63, -254,237,223,253,205,223,125,251,135,255,244,199, 15,251,246,228,236,217,211,140,190,251,230,155, 47,127,242,179,118,191, 19, 0, - 86, 9, 33,188, 87,187,167,196, 21, 27,163,160, 26, 21, 21, 84, 6, 69, 65, 97, 64, 64,178, 32,202,214,136, 38, 8,193,216,184, - 2, 65, 98, 77,140,124,100, 74,111,127,160,128, 17,211, 91, 41, 32,168, 72,196,177, 1,160, 2,138, 17,217,162,161,196,104,163, -145,238, 44,132,246,191,202, 4,163,248,104,115,215,247,189,117,150, 48, 22, 85,161,164,160, 1,201,162, 73,175, 5, 32, 2,245, -190,142, 39, 71,214, 21, 81,160,110,246, 38, 43, 93, 89, 49,218,102,187,236,234, 70, 36, 90, 84,116,121, 57,169, 24, 1,140,221, - 14,181,181,198, 71,241,222,119,221,224,125, 40,114, 87,152, 16,169,204,114, 30, 54,187,221,110, 55,201,243,220,186,197,241,169, -113, 69,179,219, 70,228,249,252,169,177,153,162, 33,100,107, 93,179,221, 22,229,164,239,187, 60,115,203,237, 18,216,101, 0,125, -221, 2, 59,146,184,218, 62,236,246, 27,195,121,140, 50,153,206, 50,166,182, 27, 24, 89,253, 0,156, 5, 68,195,118,126,244,148, -145,167,147,108,181,222,220,223,109, 23,179,217,116,118,220, 52,123, 69,202,172,107,234, 38,203,139, 50,207, 69,164,223,175, 57, -159, 64, 24,156, 37,180,115, 8, 67,240, 29, 16,135,190,217,118,189,201,103,108, 50,227, 38, 12,146, 57,106,155, 48, 12, 53,171, -230,213,145,250,154,162, 4,148,170,152,102, 68,125,183,153,157,127,104, 12, 3, 65,215,110,183,245,182,240,118, 82, 86,131,247, - 26, 98, 27,106,231,170,174, 94, 13,245,242,201,249,243,188, 42,218,253,174,105,106, 76,122, 10,208,135,235,139,233,201,121, 81, - 20,198,184,251,135,183,251,182,159,149,243, 39,167,143, 21, 12,229, 85,145,209, 48,248, 16,189, 35, 10,193,163, 15,251,237, 61, - 97, 4, 16,227,154,220,209,233,241,209,190,174,219,190, 27,134,218,123,207,174,130, 96,144, 50, 54, 89, 94,232,233,201,209,217, -227, 71, 69,145,199, 16,134,174,217,172, 30,174, 46,223,188,185,120,251,234,205,229,205,253,114,185, 89, 13, 62, 62, 59, 63,255, -139,191,248,235, 79,191,248,234,238,221,149,214, 87, 63,255,252,105,149,187,155,215,111, 94,190,122,195,140,130,128,142,171,197, -228,250,250,225,237,235,139,210,216,220,152, 79, 78, 79,152, 9, 84, 19,155, 54, 70,236,195, 96, 8, 38,121, 22, 66,242, 22,144, -162, 48, 18, 42, 26, 2, 33, 80, 66,142,202, 70, 1, 48, 68, 85, 9, 9, 54,146, 34,207,134, 16, 0, 13, 81,142, 16, 69,135, 32, -201,146, 74, 76,138,136,204, 40,209,135, 94, 21, 44, 83, 16, 80, 80,107,141, 70, 29, 0,147, 72, 58, 77, 68,211,255, 5, 80, 12, - 49,210, 97,127,170, 99, 72, 7,216, 80,136, 49, 68, 53, 64,128, 18, 37, 29,152,227,205, 83, 83,153, 18, 52,105, 25,132,149, 34, - 34,146,239,189, 73,224,176, 4, 62, 36,195, 72,233,196, 79,195, 99, 75, 24, 68, 36, 70, 52,204,100,188,198,140,172,113, 24, 98, - 8, 65,210,240, 24, 15, 55,214, 16,162, 15,209, 25,227, 40, 7, 20, 5,116,100,131,134, 32,225,208,177, 18,228,145,208,144, 92, - 74,140,200,134, 98, 16,208, 88,119,253, 48, 12, 39,211,202,144, 65,144, 20,112, 84,228, 16, 37,149,245, 49,197,117,130, 8,160, - 68,207,100, 19,187, 94, 84, 17,104,240, 94, 98, 48,135,173,109,226,120,141, 91,102,129, 8,148, 68, 19, 64, 72, 17, 99, 74,219, - 0, 26, 28, 87,123, 66, 56,134,251, 19,239, 13,120,148, 20, 33, 40, 19, 70, 25,199, 96,189,102, 25, 67, 8, 49,173,105, 17,137, -129,148, 0, 34,140,143,132,180,247,246, 17, 17,137,237,200,144,140, 66,140, 26, 89, 37,241, 23, 89, 85, 34, 8, 40, 48,167,226, -146,142, 4, 24, 64, 48, 4, 49, 61, 85, 18,122,102,172,236, 30,150, 61, 0,162,104, 84,149, 68,210,115, 58,121, 71, 4,144, 52, -138,142,245, 89, 17,133, 63,250,189,159,253,239,255,254,255,217,110,183,206,185,217, 98, 14,160, 95,126,246,233,255,253,171,191, -255,233,231,207,115,231,186,174,157, 46, 30, 45,102,147,183, 47,191, 21,208,179,199,207, 80,149,153, 1, 73, 1, 73,146,204, 26, - 53,134, 52, 67,151, 24,131,239,149,192, 24, 99,200,164,134,147, 28,250,200, 35, 97,152,136,141, 17,141, 41,129,139, 64,169,185, -167, 32,227,152,246,158, 56,101, 0, 0, 32, 0, 73, 68, 65, 84, 82, 99, 34, 55,164, 97,153,200,168,115, 4,212,212,106, 35, 36, -137, 50, 14,157, 36,138, 82,194, 17,165,226,117,236,134,193, 71, 87, 22, 81,196,228, 14, 52, 50,129,146,129,232,137, 17,173, 67, -155,203,208,176, 70,114,101,179,188, 39,213,106,122, 98,139,162,221,111, 80,192, 15,189, 43, 42,196,200,126, 27, 7,228, 98, 94, - 20, 19, 85, 40,139, 34, 4, 29,124,136, 33,246,195,112, 50,153, 73,140, 96, 93, 28, 86,171,229, 3, 49,101, 89, 94,148,213,209, -217,211,200, 44,128, 46,159,102,121, 17, 99,232,218,118,186,152, 19,101,132,117,219,108,234,253,186,172,166,121, 94,108,219,102, -223,180,247,155,245,233,209,233,182,222, 11,113,158, 79, 5,145, 82,141, 0,193,185,156, 12,109, 55, 43, 91, 40, 6,140,108, 50, -166, 97,127,127,191, 3,195,110, 54,153,134, 32,171,205, 6,148,189,247, 6,109,140,126, 62,127,180,200,176, 7,183,220, 46,157, - 98, 97, 29,144,179,182,240,237,182,109,154,201,226,188, 23,169,219,173,201, 52,168, 49,134,138,162, 98,136,197,100, 46,209,239, -238,222,186,172, 84,224,182,222,238,154,102,177, 56,203,140,221,214,251,249,236,172,238,189, 72,204,108, 54,159, 44,154,102,211, - 55,117, 53, 59,241, 26,218,253,234,244,113, 85, 76,230,155,135,123, 64, 10,245,186,237, 60, 16,183,205,222,119,117,113,244,184, - 31, 38,147,106, 49,196,246,155,183, 47,103,213,252,217,249,211, 24,154, 16,194,110,191, 98,151, 23,217,177,203,105, 8,131,143, -234,251,125, 86, 46,178, 44, 71, 38,137,195,116,113,110,179,105,189,185,181,121, 53,153,206,195, 48,100, 25, 13, 67,237, 37, 20, - 69,241,232,108,118,124, 52,159,206,167, 64,220,119,237,126,187, 92,222, 93,189,126,253,246,197,155, 55,151, 55,247,203,205,118, -187,219,156, 31,159,252,171,127,249,231, 63,248,232,249,201,227,103,251,187,119,231,110,119,246,232,180,221,237,190,254,245,175, -239, 31,238,159,126,248,212,205,167,239,254,238, 31, 62,121,242,201,247, 87,215,111,222, 93, 76, 93, 54,201,172, 77, 29, 28, 4, -135,152, 90, 64,138,152, 25, 6, 16, 1,114,228, 4,128, 65,153,221,248,210,153,198,198,168,206,226, 16, 19, 76, 17,172,203,250, - 16, 85,148, 56, 37, 41,161, 96,142, 18, 3, 32, 16,102,206, 48,179,166,207,132, 37,138,232,209, 19, 24,102,236,188, 7,145, 44, -119, 49,168, 40,152, 49,215, 4, 22, 8, 13, 70, 21, 63, 68, 34,214, 0,214, 82,210,236, 9, 66,110,185,243, 33, 68, 9, 65,216, - 16,104,106,246,163, 40, 48,211,225,202, 39,169, 35, 19, 84, 36, 38,111, 20,170, 42, 89, 2, 25,239,135,150, 24,144, 65, 3,165, - 85,153, 70, 47,234,197, 51,176, 51,206,199, 64, 70,138,204, 74,148,255,159,169, 55,251,182, 36,185,238,243,246, 20,145,195, 25, -239, 80, 83, 87, 87,119, 3,141,129, 0, 65, 2, 20, 8, 83,166, 37,216,178, 23, 41,137, 11,146, 37,175,101,210,255,166,159,237, - 7,123, 45,201,131, 44, 89, 52, 41, 52,128,238,174,121,186,243,116,166,204,140,216,123,251, 33,242, 92,168,159,250,161,186,250, -214,189,167, 34, 35,247,254,253,190,111,155, 84, 8, 0, 57,136, 67, 49,141, 48,238,186,132, 8,109, 93, 3,178,217,192,161,222, -237,122,117,117,117, 34, 82, 87,116, 12, 18, 2,225,144,243,200,204,114, 3, 64, 77,136, 0, 73,245,110,189, 57,156,214,109,211, -154,155, 25, 84,140, 9,129,136, 43, 34, 66,202, 56,152, 17,186, 34, 1,164,210,157,228,145, 13, 14,158,178, 49, 0,179,240,223, -252,234,175,198,129, 8,143,107,211,241, 73, 75,163, 49,200,125, 60,114, 11,145,103,180, 5, 18,179,208, 61,108,253, 30, 71, 62, -210,201,247, 36, 1,114, 32,228,220,239,178,243,180,141,227, 35,214, 12,108, 20,138,112, 1,136, 21,220,132,121, 9, 92,150,237, - 72, 1,199,140,117,158,130, 84,135,113,238, 81,134, 66,165,184, 75,145, 71, 23, 82,217,114,142,249, 28,250,207,168,186,101, 58, - 95,152,208, 5,102, 9,165,117, 1, 99, 60,221,137, 11, 51, 46, 79,166,237,176,219,190, 57,189, 92,206,231,128, 72,204, 85,172, -206, 46, 46, 62,158, 95,252,226,143,127,184, 90,175,213, 97,182, 88,188,127,255,254,248,209, 99, 75, 29,145,148, 70, 7,151,146, - 42,140,238, 36,164, 17, 43,234, 14, 34, 49,132,186,244,197,212,178,231,242, 25, 0, 55,167, 49, 19, 54,214,198, 10,118, 3,161, - 92, 71,246,195,174,253,254, 29, 16, 93, 29, 10, 89, 66,184,208,239,203, 93,102,127, 19, 25,247, 65,191, 55, 95,113, 4,174,164, -170, 64,147,123,230, 16,170,182,149,170, 18, 41, 94, 89,185, 60,187,216,108,118,243,233,116,121,116,248,254,229,243, 33, 39, 53, - 13, 49, 14,125,191,185, 59, 87,160,217,124,201,130,117, 59, 67,174,187, 33, 79,167, 51, 71,188,120,247,213,108, 54, 77,170,167, -231, 87,151, 55,183,119,155,237,179,207,190,251,249,167,159, 89,127,115,123,254,113,115,119,215,212,205,100,186,156,204,166,245, -226, 16,168,178,212,207,142,143, 23, 7,199, 39,175,254,147,170,115, 8,222,109,136, 25,212,119,187,109, 96,233,119,171,245,122, -179, 27, 6, 55,223, 13, 93, 64, 55,181,171,155, 27, 9, 60,109, 91,180,228, 96, 33, 84, 89, 45, 86, 49, 10,239,186,158, 56,162, - 14,132,222,204,143,186,221,182,105,103,110,176, 77,253,110,216, 12,131,110,118,155, 16, 99,148,186,157, 55,211,122,114,119,119, -233, 24, 4, 53,109,111, 72, 98,168, 22,245,236, 40,109, 46, 57, 84, 20,154, 80, 79,132, 48,128,198,192, 41, 41,164,126,232,214, -102, 54,108,111,171,201, 28, 45,135, 80, 7,180,212,175, 23,135,143, 55,235,171,219,213,170,169, 99, 21,154, 88,213,121, 88,171, - 34, 72,181,221,220,205,167,139,249,108,158,205, 9, 97,219,173, 47, 46,207,150,139, 69,191,221,220,109,214,211, 58, 6,196,117, -215, 95,222, 93,175, 86,219,227,249,131, 42,212,169, 91,109,182,107,146,166,169, 26, 20,238,119,119,221, 96, 10, 60, 91, 28, 11, -218,108,249,137,144, 32,232,225,227,239,172, 87,183, 78, 56,153, 47,235,102,137, 62, 4, 17, 85,152, 46, 14, 63,249,244,179,207, -158, 30, 46, 14,151,147,201, 68,213,215,119, 87, 39,239,223,188,120,254,205,215,223,188,248,245, 55,207, 95,191, 63, 57,187,190, -169,132,254,244,167,255,197, 95,252, 55,255,236,232,232, 9,195, 46,216,230, 81, 59,204, 2,124,248,240,238,235,175,126,115,187, -221, 77,103,237,244,241,195, 95,127,243,245,213,229,205,233,217,229,235,231,175,143,154,233,188,110, 0, 70,181, 24, 19,233, 24, -200, 45, 57, 66,199,189, 96,161,220, 55, 1,255, 51, 68, 42, 1, 19,101,115,176,113,165,180, 75, 3, 24,112,224,210,104,171, 98, - 84,203,230, 48, 12, 22,132,192, 33, 91, 22, 18, 14, 81,136,212,177, 56,233,152, 73, 72,130,144,102, 35,194, 42, 22, 27, 90,209, - 76, 19, 24,172,182,219,117,183, 37,192, 58, 8,133,144,213, 4,145, 9,147,186,155, 67, 9,166,151, 59,103,225, 30, 50, 8, 48, - 0, 80, 25,181, 20, 19,211,232, 95, 26,217, 88,228,165,232, 4, 33,212,204,191,151,195, 17,130,130,169, 42,238,155, 42, 65, 56, -136,100, 53, 7,171, 99, 85,110,116, 6, 94, 51, 3,162,129, 71, 17, 4,234,134, 1,193, 0, 89, 53, 21,108, 73, 33,253, 18,115, - 20, 6,243, 98,236, 19, 98, 31,183,156,224,238, 68,124,185,222, 16,224,193,180, 45,211,241, 40,161, 31, 83, 67,152, 1, 0, 76, -176,204, 29,188,232,182,145,196, 85, 67, 8, 0, 60, 12, 3, 2,198, 42,154,155,248,232,138, 40,240, 45, 47,157,221, 61,108,230, -247, 16, 19, 36,128, 61,173,189,176, 86, 52,219,232, 99,245,177,123, 95, 38, 37,134,206,229,129, 81, 66,164,224,109, 91,157,175, - 55, 15, 14, 38, 41,217,253, 96,191,160,133,205, 70,238,188, 59, 32,147,227,126,122, 54,158,217, 58, 66,126, 97,255,236,113,180, - 50,199, 40, 30, 59, 24, 53, 44, 35, 96,126,228, 3,143, 63,150, 2,166,247,194, 35,114, 47,197, 33, 7, 3, 31, 11, 69,247,196, -203, 50,233, 35,196,156,253,199, 63,252,242,249,251,211,219,213,182,174,171,170,153, 49,241, 31,126,255,251,255,251,255,245,239, -254,191,223, 61,255,241,151,159,159,223,172,172,169, 68,120,185, 56,184,248,248,206, 20,103,179, 25,144,186,211,184,137, 38,217, -135, 24,157, 41,112, 19, 9,196,193,138,176,143, 93,220, 77,213,105,172, 98, 23, 28, 68,217, 69,237, 31,109, 56, 62,159, 44, 41, - 5,161,146, 42, 3, 80,205,196,204, 69,110,149, 13,139,171,140,137, 88,184,244,192,198,206,175,239,115,242,180,217,238, 66,152, - 81, 85,158,209, 94,152, 90,229, 27,169,253, 0, 65,153,137,133, 37, 84, 16,100,200, 67, 82, 16, 14,121,216,165,148, 17, 24, 53, - 1,213,228, 20,171,104,177,137,237,128,204,110,138,158, 8,201,205,182,219, 93, 54, 75,150, 31, 63,122, 22,231, 71,183, 55,119, -105, 72, 77,211,206,102,139,208,212, 40,181,153,186, 15,154,134,182,110, 85,123,105, 14, 14,230, 77, 26,214, 90, 77,170,202,250, -110, 55,159, 31,229,180, 73,221, 78, 98,172,156, 53, 15,235,110,152,207, 15,214,187,205,186,219, 85, 85,173, 33, 41, 10, 82,232, - 82,231,170,194,178,222,220, 41, 73, 3,154, 85, 15, 15, 63,191,221,108, 78,223,254,166, 57,122,102,128,144,186, 97,183,142,213, - 4,124, 75, 88,167,148, 54,183,107,159,203,241,209,163, 52,232,106,125, 99,200, 48,244,217, 51,121,149,157,250,213, 93,108, 38, -105,183, 21, 81, 97, 4,135,118,178, 72,187,235,128, 13,113,232,183,171,110,187,219,220, 94,212,205,204, 83, 46,166, 5,150,122, - 49,173,218,186,185,188,120,221, 78,102,187, 93,159,129,176,223, 52,109,251,224,201,231,183, 23, 31,222,188,254,102, 50, 91, 86, -237, 66, 98,221, 39,171,171,186, 74,249,118,179, 62,187,185,236,213,103,117,252,236,233, 15,136,252,230,250, 52,103,109,154,153, - 90,130, 80,123,159, 1,120, 50,153, 14, 67,246,161,191,189,124, 31,155,165,230, 29,197,185, 13,217,242, 16,235, 90, 72,134,110, -213,109, 86, 93,191, 93, 28, 28, 62,253,100, 57,159,205,154, 73,131, 64,219,205,221,221,205,197,201,219,119,111, 62,190,123,247, -241,244,227,249,197,197,245, 53,113,245,163,239,253,193,159,253,236,103, 15, 30, 60,189, 62,191, 8,222, 63,126, 52,123,120, 32, - 87, 23,215,191,253,221,203, 12,217, 9, 23,143, 14, 9,236,219,175,191,185, 58,187,241,148,221,224, 59, 15, 31,142, 62, 96, 24, -145,211, 64,128,134, 99,172,217,138,194, 20,145, 64,136, 75, 36, 60,151, 52,161,237, 71,148,123,151, 90,206,134, 68,194,236,142, -168,218,176,140,206, 2, 71, 7,111,107,206,224,224, 24, 36, 32,137,230,148, 93, 71,170, 30, 16,137,168, 90,234,119, 82, 62,239, - 9,132, 73, 17, 24,113, 63,106,119, 4, 74, 89, 59,210, 54, 90, 32,114,132,172,138, 0, 81,120,112, 77,144,203,139, 57, 11, 1, -144, 67, 78, 57, 51,161,193,184,128, 45, 2,191, 98, 88,139,101,139, 0, 12, 96,204,193, 93, 75, 67, 49,114, 80,205,102,192, 36, - 28, 88, 71,243,101, 57, 45,129, 69, 70, 11,102, 12,110, 26,145, 7, 75,194,145,176, 36,226,178, 48, 13,154, 81, 51, 49,187, 89, -118, 71,196, 40, 72,196,201,180, 12,100, 92,157,200,179, 27, 2, 9, 57,146, 92,172,182,150,134, 71,203, 69,168, 42, 3, 80, 85, -117,141, 76,132,232, 72,141, 56, 18,247, 67, 38, 4,195, 2, 72, 33, 36, 66, 15,238,100,104, 85, 21, 75, 56,197,204,249,111,254, -229,175,202,145, 72, 4,196, 82,206, 6, 47, 20,247, 49,102, 13,196,100,170,128, 68, 36,227,184,219,199, 93,231,168, 49, 4, 18, -188,143,232,143,206,219,123,250, 22,120, 58,191, 90, 29, 31, 30,169,235,222,148, 10,191, 15, 45,142, 17, 23, 96,137, 14, 6, 90, -234, 72, 35,116,197,192, 16,125,236,244,236, 3,142,229,155,133, 68, 72,100,247, 94,233,194,164, 87,219,223,128,125, 12,207,143, -187,207, 18, 29,116,220, 59,237,198,219,245, 8, 98,118, 42,177, 80,135,166,109,151, 77,252, 15,191,121,254,224,112, 73, 72, 77, -221, 8, 99,234,119,255,225,171,175,255,228,199,223, 71,198, 33, 13,211,249, 81, 26,250,102, 62,221,172, 86,117, 51,221,151, 99, -121, 28, 6,185,122, 86,150,200, 34,133, 43,112,143,241, 41,107, 11, 46,187,158,242, 3,115,199,146, 21, 35,192,145,166, 32, 99, -116,125, 28,210,149,184, 62,238, 73,203,229, 55, 67,191,183,188,143,250,129,130, 96,187,191, 91, 1, 32,229,108,147,201,188,140, -124,194,164, 17, 9,253,110, 71,160, 96,196, 65, 68,232,250,106, 53,100, 93, 30, 44,234,166,126,253,252, 37, 19, 85, 85,157,211, - 96,142, 96, 20,218,152,186,109,100,137, 12, 85, 59,179, 52,116,171,221,208,119,253,234, 99, 51,155,245,195,240,250,253,135,187, -213,102, 55,116, 63,255,217,159,195,176,189,185,185, 68,237, 39,147,118,114,240,168,239,239, 98,213, 80, 8, 64, 17, 67, 56, 58, -122, 0,174,219,205, 58,109,111,250, 93,162, 16, 44,229,235,139,247,253,230,238,227,233,187,186,158,170,105, 63,116, 18,107, 7, -175, 99,188, 88,173,222,158,157, 47, 38,117, 78,189, 25, 48, 7,116, 13,194, 49,134, 65,181,170,235,109,183,173, 98,123,187,235, - 20, 8, 25,115, 82,215, 97,117,123, 17,155,165, 8, 27, 9, 18,147,227,221,205,199, 71, 15, 30,118, 57, 29, 31, 62,186,184,189, -114,146, 52,172, 17, 61,165,236,136, 0, 70,158,165,154,196,170,114, 53,116,205,218,131,105, 51, 93, 36,237, 8,185,170, 27, 77, - 25,193,251,221,230,240,248, 49, 33,198, 80, 87, 33,204,231,179, 94, 65, 40,132, 88, 55,211, 69, 74,187, 93,183, 43, 91,238, 88, - 53,177,106,204,204,134,221,144,128, 24,111, 86, 55, 87,119,119,139,197,241,180,158,128,123,238, 87,234, 86, 46, 89,117,211,176, - 68,205,137, 99,203, 85,117,120,248,160,219,237,110,110, 46, 72, 90, 53,115, 80, 14, 85, 26,118,195,208, 31, 28, 29,167,164,221, -230,118,249,224,241,179, 47, 62,255,236,217, 39,243,249, 60,212,213,208,245, 55,151, 31, 63,190,127,243,242,197,183,191,253,246, -197,215,175,222,188, 61, 57, 61,191,190,121,120,120,252, 47,255,242, 87,191,248,233,159, 16,113,238,134,167, 11,248,195,239,125, - 18, 5, 94,125,243,226,213,139,151,203,227,229,163,239,124,242,246,228,108, 57,159,172,135,252,237,171, 55,190,237, 31,207,231, -179, 73,205, 34, 44, 1,193, 43, 17, 22,206,121,244, 98,194,158,136, 93, 86,159,163,211,174,140, 53,199, 12, 53,152, 3,122,105, -116, 22,167,217, 72, 29, 8, 65,162,112, 86,232,178,153, 67,228, 34,184,164,146, 86,100,226, 50,100, 29, 52,131, 67, 45, 21, 50, -155, 42,184, 2,160,142, 23, 31, 35, 34, 7,112,117, 71, 55,119,205, 30, 66,168,130, 76,155,154,104,252, 58,239,225, 49, 50,166, -205, 93,132, 0, 80, 85,211, 48,216, 62,184, 77,132,132,100,134,194, 28,153, 74,103,101,140, 83,178,187, 25, 34,163,123, 54,237, -115, 18,100, 68, 52, 4, 98,170,235,154, 29, 13,198, 3,213, 29,133, 89, 8,165, 92, 37, 75, 15, 8,201,193, 2,139,169,237, 82, -111,170, 99, 87,223,203,178, 18,232,222,177, 13,196,136, 34,210,169,154, 41, 35, 34,241,221,174,191,219,174,143, 23,211,217,100, -106, 5, 71,187,167,113,193,200,153,129,193,172, 36,108,178,163, 32, 8, 21,166,229, 88, 96, 42, 79, 89, 68, 54, 55,254, 31,255, -229, 63,191,231, 17, 66,241,202,194,126, 58,179,215,209,142,141, 27, 24,115,123,197,204,231,200, 5,156, 70,247,247,241,177, 81, - 38,229,148, 97, 64, 53, 7,183, 16,226,110,183,173, 39, 83, 28,175,203,116,255,129,216, 11,154,198,113, 49, 17, 9,153,223, 11, -163,225,222, 32, 61, 62, 16,120,143, 90, 39, 36, 28,143,122, 46,216,155,194,156, 27,225,184,123, 41, 55,142, 29,166, 49,148,227, - 48,254,230,227,162,114,196,206,141,184,201,242, 53,169,250,209,225, 65,191,186,126,119,190,154,183, 85,168, 43,137,113, 62,157, -188,120,249,246,110,187,249,163, 31,124,150, 18, 30, 28, 30,189,127,243,226,193,163, 79,183,155, 43, 66, 97, 9, 35,196, 14,220, - 85,145,132,100, 4, 64, 34,114,249, 26, 0, 93,115, 98,100,187, 47,172,142,149,168,223, 35,126,246,174, 38,255,125,209, 23, 75, -153,120,164,238,141, 79,145,146,240, 44,183,146,178,185, 46, 55,172,251, 54, 90, 81,176, 43, 84,237,178,153, 84,229, 9,141, 44, -214,239,220,156, 89,220,149, 66, 32,131,139,139,171,205,106,211, 52,117, 21,227,217,217,101, 12,130, 40, 14,100,253,142,130, 32, - 82,136, 77, 61,153,169,131, 13, 89,251, 53,133,122,117,247,222,134,117, 83, 53,171,219,245,235,247, 31,110, 86, 43,169,234,127, -240, 71,127,186,185, 62, 1,205, 77,221,196,170,166,170, 37,208,122,126, 40,161, 33,162,249,116, 42, 18,146,194,118,117,109,195, -174,212,147, 77, 77, 83,223,119, 59, 55, 63,156,181, 68,124,118,126, 78,204,217, 52,138,188, 60, 57,121,254,241, 28, 65,231,245, -148,145,154,201,100,216,174,235,186, 18,150, 33,105, 78, 9, 1,170,170,218,165, 92,140,149,110,131, 3,197,102, 14,218,163,166, -236, 62,244, 27, 39, 18, 97,236,111,165, 89, 84,161, 90,173,110,141,130,132,102,215, 15,105,232,147, 38,211, 14,210, 48, 59,120, -232,195, 70, 98,219, 30, 60,132,220, 19, 75,218,173,186,221,198, 0,212,225,234,242,189, 16, 12,221,174,239,119,147,105,107,154, - 52,237,118,155,187, 88, 77, 54,187, 77,211,180,135,203,227,126,200, 49, 54, 13,167,110,187,155, 31, 62,220,236,118,232, 6,110, -119,219,213,237,221, 57, 81,108,171,118, 82, 5, 34, 32,142,132, 14,200,179,197, 17, 32,174,239, 46,171,186, 85,131,216, 78, 60, -111, 53,167,201,116,174,125,127,248,228, 51,169,107,161,128, 68, 67,191,110,170,202,156,243,176,251,228,179,103,159, 60,126, 48, -155,183, 85,172,114, 78,183, 87,231, 39,239, 94,189,125,243,234,219,231, 47,127,243,252,197,203,247, 31, 46,174,174,171,170,249, -135, 63,251,197, 95,252,147, 95,205, 38,147,174,219, 46,167,179, 31, 62,157, 62, 56,154,156,189,123,247,205,111,126,123,122,122, -250,240,201, 3, 90, 78,190,254,250,197,171,119,103,235,237,246,155,175, 95, 45, 57, 62, 60,152,197, 24,162,196,194,141,169, 66, - 76, 57, 37,205, 12,140, 60,246, 35, 93,221, 71, 12,212,248,126, 61,206,102, 13,172, 20, 57,193, 1, 64, 93, 17, 25,152,204,161, -144, 23, 93, 33, 25,152, 89, 21,169,156,131, 57,149,138, 59,231,236,136, 46,194,102, 88, 79, 38, 34,108,230, 89, 19, 49,115, 16, -115,205, 89, 5,145,137,173,220,112,165,220, 27, 77, 68, 68, 56, 4, 73,102,166,185, 60, 36, 76,205,202, 22, 0,188,116,145,212, -220, 17, 68,196,212, 82, 74, 69,222,141,200, 64, 20,131, 4, 33,115, 52,223,103, 63,220,134,161, 44,125,124,211,237,182,219, 45, -131, 11, 19, 48,215, 76, 68,104, 14,106, 88, 30, 90,229, 47, 48,179, 0,248,144, 19, 34, 75, 16,130,130,149, 39, 24,115,110,110, -128, 66, 24, 57,150,254,148, 1, 49, 18,141,221, 20, 49, 53, 71, 23, 34, 33, 41,164,179,171,245,234,176, 14,135, 7,203,172, 86, - 20, 64, 35, 56,160,144,208, 75,252,159,152,136,178,121, 32, 68,132, 52, 62, 86, 65, 68,204,188, 31, 50,120,138, 28,135,156,248, -175,127,245, 87, 37, 39, 15,123,239,236,120,232,220, 11, 41,168, 92, 21,217, 11,210,182,244, 51,199, 55, 48, 51, 32, 2, 96,230, - 98,156,160, 50,115, 40,187, 20, 4, 51, 71, 68,161,176,217,110, 20,112, 82, 85,251, 20,211, 94, 90, 94, 34,131, 28, 96,159,171, -188, 95,112,239,139, 10,229,201, 50,142,211,247,190, 17, 36,166,241, 21, 10,203,129,111, 99,240,166,184,250,138, 89,209, 1, 8, -164, 52,161,220,220,242,104, 41,221,155, 8, 9,144, 71, 29, 70, 25,152, 48, 49,130, 39, 68,124,250,228,193,239,158, 63,151,170, - 9,196,177,109, 69, 66, 0,251,219,223,124,251,253, 47, 62,157,182,205,197,229, 69,213, 78,206,222,191,206,202,147,182, 97, 10, -247,168, 49, 4, 36,150,113, 28, 63, 26, 38,199, 94,215,254,241, 54,198, 25,209, 74,180,115, 60,217,203, 99,207, 76,247, 82,243, - 17,145,140,123, 67, 86,225,173,150,220, 99, 81, 71,142, 92,161, 2,243, 17, 70,166,189, 2, 4,220,209, 64,171,122, 6,165, 3, -194,162, 93, 66, 38, 22, 25, 97, 53,177, 2,135,171,243,243,219,235,219,118, 58,153, 76,166, 87,103,151,206, 68,204,170,105,216, -174,171, 16, 21,105, 58, 95,134,216,110,111, 46,185,142, 8, 20,155,249,229,155,175,218,182, 22,162,179,203,171,247,103,167,183, -171,245,116,118,240,189, 47,126,208,111, 87,117, 12,117, 8, 10,192,213,108,126,252,164,158, 31, 17, 49,152,215,147, 73, 61,153, -109,215,151,105,123, 87, 62,172,238, 14,154,250,126,171, 67,207, 33, 94, 93,126, 20, 66,142, 21, 34,130,234,205,106,245,155,215, -111,175,118,187,100, 94, 19, 50, 59, 1,182, 77, 27, 98, 0,240,193,212,145, 88, 74,114, 46, 50,128,101,155, 46, 14, 31, 28, 29, - 31, 28, 28,221,221, 93, 44, 38, 51, 33,138,177, 33,130,229,124, 41,177,218,117,221,135, 15,175, 86,215, 39,230,146, 82, 46,237, - 24,150,170,174,170,197,242,120, 80,173,170,138, 67, 3, 8,211,233,162,239,214,221,144,155,182, 13,213,172, 95,221,132, 80, 77, -167,203,118,210, 58,133, 52, 12,204,236,136, 46, 85, 55,116, 76,178,221,172, 39, 77,197, 85,197, 64,117, 21, 63,188,127,254,248, -209,179,108,112,123,119,113,117,119,147, 21,150,211,217, 98,126, 88,183,179,161,219, 90, 78, 82,213,230,212,182,109,100,122,251, -230,107, 12, 77, 12,181, 84, 13,161, 6,198, 97,183, 69,230,245,234,162,235,179,230, 62, 86,147, 97,232, 99,172, 16,252,224,209, -131,103,159,125,122,116,124, 24, 98,176,156,239,110,174, 78,223,191,126,255,230,245,243,215,175,191,121,249,242,229,187,247,111, - 78, 78,192,237, 31,254,226, 31,253,213, 95,254,235, 79, 30, 63,203, 78, 85,208, 79,151,252,233,113,220,172,174,126,251,247,191, -249,240,238, 3, 8,183,199, 7, 55, 55,183,191,254,237, 11, 22,190,188,188,141, 41, 29,181,237, 98, 82, 35, 11,130,179,112, 85, - 87,228, 48,168,186,131, 8, 7, 33, 40, 31, 85, 46,214, 57, 42, 27,166,113,215, 3,152,243,120,174, 19, 98,206,138, 52,222,199, - 83,206,149,176, 48,169,121,246,204,136, 76,148,205,212,157, 1,133,169, 79, 6,238, 34,165, 75, 47,109, 59, 41,252,188,114,122, -121, 89,200,237,103,227, 68,232,227,176,150, 20, 12,192,163,112, 54, 23,100, 0,136, 33,218, 61,224,171,100, 19,192, 16, 8, 0, -133,198, 40,118, 86, 64,100, 17, 97,230,200,196, 28, 0,201, 74,142, 19,165,192,112,128, 48, 48, 57,192,166,239,182, 93,151,116, - 80,213, 16, 66, 93,213,230,168, 8,129,136, 3, 23,208, 20, 33, 16, 81, 26, 6,119,148, 32, 64, 68,142, 34, 33,229, 92,238,207, -230,134,224, 69,174, 22, 3, 35, 10, 73, 96, 70, 46, 48, 3, 3, 53, 37, 26,169,130,194,104, 0,103, 55,183,145, 96,210, 78,193, -129,137, 2,139, 19, 49,161, 48, 15,106, 89,115, 96, 20,142,197,117,138, 69,130,231,206,128, 8,144,220, 83, 30,250,156, 8,221, - 28,220, 53,105,230,191,249, 87,191,162, 50,204, 26,157,121,190,175,166, 2, 48,151,141, 51, 98, 1, 3,112,217, 1, 20,211,105, - 65,163,112,161,157, 48,162, 59,151,171, 61,221, 27,174, 75,210, 18,137,208, 83,119,181,238,142, 22, 83, 27, 39,232, 14,230,200, -196, 44,200, 12,232,180,255,255,142,226, 58,218,179,112, 9,205,246,146,163,194,194, 33, 6, 66, 27,239,236,232, 58, 0, 18,161, -184,233, 94,165, 84,110,196, 94, 70, 52, 82, 64,190,238,229, 96, 47, 98, 87,162,241,112,164,125,154,144,101, 52, 92,147,176,101, - 99,137,211, 70,158,191,254,216,212,117, 83, 55, 28,226,164,174,111,175,111,191,122,254,234,151,127,246, 99, 51,121,242,233,119, -187,237,205,241,227,167, 58,108,205, 13, 24, 17,156,165, 38,145,251, 63, 58, 34,186,170,221,227, 4,202,202,185,184, 80,136,156, - 24,247, 23,120, 26,137,237, 72, 33,236, 93, 89, 99, 22, 22, 70,162,205,216,101, 45, 57, 1, 64, 96,145, 82,109,130,209,215, 72, - 37,168, 58, 82,111, 0, 0, 40,112, 32, 98, 87,115,211, 17,234,108, 6,128, 18, 35,228, 62,196,234,250,234,246,246,250,182,137, -248,224,233,179,243,147,143,195,110, 11, 76,253,110, 35,129, 65,106, 68, 36, 75,253,208, 27, 56,185, 75,219,230,126,115,250,241, -155,195,249,220, 29,222,158,157,157, 94, 92,238,118,187,131,227,199, 63,248,206,247, 97,232, 8,147, 57, 77,150,199, 49, 74,179, - 56, 64, 3, 32,170,154,217,193,131,135,221,102,123,125,113,190, 91, 93,214,211, 35, 51, 37,194,245,245,135,213,221, 77,172,218, -163,227,121, 83, 77,135,212,119,125, 47, 18,250,148,111, 55,219, 23,151, 87, 77,140,235,174, 91,247,195,195,249,124, 54,109,231, -179,233,122,189, 97, 97, 50, 99,196,200, 97,218, 76,102,237,100,215,109,182,235,179,227,135, 79, 34, 35, 64, 2, 8,192,225,250, -242, 68, 1, 84,109, 57,155, 76,102,203,205,106,213,101, 99,176,186,153, 32, 16,152, 18, 11,104,119,112,116,204,168,169,207,196, -177,106,234,180, 93,153, 25, 18, 87,205,124,189,221,138,219,208,173,167,179,165,235,208,119,219,166,158, 24, 0,133, 38, 15,131, -171, 34, 98,140, 85,113,160,107, 78,139,249,236,209,227, 39, 93,242,205,110,123,122,249,209,220, 31, 30, 62,248,236,217,119,235, - 24, 83,191, 33, 22, 98,174,234, 86,200,242,176,155,207, 15,205,211,213,233,199,233,242, 1, 11, 9,203,100, 50, 81,240,122,182, - 68, 14,169,223, 52,211, 67,145,216, 13, 3, 90, 94, 44,167, 95,124,249,195, 39, 79, 63,105, 39, 45, 16,174,175,111,206, 79,222, -190,127,243,234,213,155, 55,223,190,121,245,226,245,155,247,167,167, 87, 55,119,159,127,250,249, 95,252,242,159,253,201,207,255, -220, 52, 93,126,248,246,233, 81,251,189, 71,211,138,236,253,235,215,175,190,121, 30, 39,205, 39,223,253,228,221,249,229, 98, 49, -173, 23,211,183,239, 79, 96,179, 91,214, 97,218, 54,117,140, 18,197,193,170, 88,199,192, 41,185,170,145,140,216,118,131, 34,255, - 36, 65, 38, 44,145,118, 36, 42,119,122, 50, 28, 63,168,128,144, 7, 3, 66, 22, 86,115, 70,170,107,113,245,148, 18, 34, 6, 97, - 0, 27,204,136,152, 1, 72, 72,213,202, 75,108, 74,153, 2,183,117,139, 76,204, 92,133, 90,205,134,161, 7, 48, 66, 82,211, 18, -193,184, 71,216, 6,230,192,130,196, 41,171, 35, 70, 33, 38, 26,114,169, 19, 58, 32, 48,146, 58, 26, 16, 19, 11,145,238,187,129, - 33, 68, 22,138,228, 34, 1, 88, 0, 81,152, 17,209, 0,179,246, 0,206, 68, 8,100,197, 97,175,182,235,187,108,218,132,170,138, -181, 19, 17, 83,164,178,210,132,210, 19,117,247,193,156, 1, 88, 68,193,155, 42, 58,128, 90, 46, 50,234, 98, 84,102, 32, 53, 71, - 43,148, 3,231,146,209,116, 55, 4, 38,102,194,170,138,229,111,187,170,157,221,172, 64,243,225,114, 25, 42,145, 32, 37,235, 29, -152, 17, 73,221, 17, 85,136, 41,132, 49,134, 87, 8,132, 56,162,150,179,186,217,136,184, 76, 57, 89, 82, 4,207,170,252,215,255, -226,175,240,126,147, 58,254,168,246,179, 10, 47, 66, 40, 35, 68,183, 34, 28,221,223, 66,177,140,154,138,224,169, 96, 23,198, 41, -119,121, 27, 64, 42,207,121, 64,112, 55,171, 99,184,188, 91, 31, 30, 44,193,108,132, 30,151,121,178, 4, 0,195,189,203,124,124, - 73, 26,175,245,123,248,121,129,247, 96, 49,132, 56, 49,141,192, 96,146, 98, 80, 50, 55, 0,115,244,145,248,179,231, 35,224,200, - 87,128,255,252,120,101, 34,102,218,203, 67, 70,217,202,152, 31,247,123, 40, 36, 32,226, 98, 49,127,251,246,221,102,151,234,166, -153,205, 22, 36, 60,109,171,111, 95,190,221,116,221, 31,124,249,244,234,118,117,248,224,225,203,223,253,221,237,237, 93, 12, 33, - 86, 77, 85, 85, 99, 99, 96, 28,109,241,254,203, 24,185,239,123,220,111, 9,174,250,189,129,182, 76, 97,246, 24, 6, 7, 40,143, - 52, 40, 67,202,189, 55,145, 0,156,144,178,233,248,164,114,119,213,113,196, 4, 5, 71, 44, 80, 54,199,128,136,228,142,205,108, -129, 4, 28, 24,172,180, 81,106, 98,166, 40,224,102,106, 84,197,179,247,167, 55, 23,167,143, 63,255,242,240,104,241,246,197, 55, -102,142, 24,136, 2, 50,166,237,157,176,116,125,202,238,147,233,212,128, 67, 85,107, 63,156,159,126,253,224,224,168, 79,195,155, -147, 15, 23,151,183,219,190,251,206,103,223,123,116,120, 4,158, 98, 61, 5,183,170,105,219,233,220, 12, 8,105,189,186,155,212, - 49,198,184,190, 91, 27, 65, 85,207,171,186,234,215,183, 64, 2,110,171,187,107,215,158, 45,137,136,230, 30, 12, 84,251, 58,214, -231, 55,183, 31,111,110, 99, 8, 67, 26, 86,187,206, 28, 22, 77, 67,232,204,236,106,102,185, 64, 89, 99,172,146, 14, 72, 50,157, - 46, 93, 7,115,234,115,182, 97, 75, 14,219,108, 57,231,110,123, 55,157, 29,116,219,187,203,147,215,199,143, 62, 25, 20,118,219, -205,144,135,221,234, 22, 67,157,182,215,211, 73, 43, 18,171,102,154,134,222,115,202, 57, 97, 8,145,171,224, 3,144,232,230,182, -235,215, 77,156, 24, 64, 21, 42,205, 3,120,202,105, 48,184, 71,168,142,233,216,190,235,143,143,142, 85,211,201,233,199,179,203, -243, 39, 15, 63,249,242,241, 35, 83, 36,130,197,242,176,236, 75,178, 38,137,177,235,187, 40,113,117,117,162,142, 28,171,186, 93, - 28, 45,143,154,201,140, 37, 84,245,132, 8,135,221,102, 58, 63,220,237,182, 49,192, 39, 79,159, 62,253,226,243,167,159,127,177, - 88, 46,136,176,239,118, 55,103,167, 31, 63,190,124,245,234,197,139, 55,111,158,191,125,251,238,227,201,233,229,101,211, 46,126, -254,199, 63,255,229, 47,255,194,186,205,118,115, 61,107,195,247,159, 46, 63, 57,170,110, 47,206, 95, 60,255,230,221,219,247,135, -143, 30,200,172,122,241,246,228,250,250,166, 75,233,255,253,143, 95,181,128,199,139,121,185, 56,147,176,136, 4, 9,238,150, 28, -152, 40,198, 88,208, 32,128,140, 68, 18, 2, 99,240,241, 98, 49,210,172,156, 72, 93,105, 60, 8,208,212, 75, 25,221,178, 85,194, - 33, 80,202,170,230, 69,135,170, 6,227,210,110, 63, 61,117, 0,205,153,144,129, 32,105, 70,192,226, 80, 27, 73,217,238,130,148, - 53, 83,201, 12, 2, 32, 64,118,207,170,129,217,202, 59, 43, 67, 8,146,239,239, 79, 8, 68, 20,152,145,136,139,183, 20, 81, 77, -109, 20, 42, 1, 19,212, 85, 85,104,145, 33, 10,222,147,174,144, 0, 48,136,236, 99,131,132, 68,234,168,154, 43, 98, 38,169, 98, - 85, 87, 53, 34, 38, 29,157, 10,149,136,150,219,228,190, 12, 90, 7, 41, 1,237, 50,240, 41, 55,223,177,186,104,102, 37, 75, 1, - 44, 68,169,196,138, 0,138,254, 21,247,133,210,219, 46,245,155,221,241,114, 30, 37, 34,115,217,101, 10, 23,170, 64, 65,251,114, - 54, 37,116, 33, 6,135,178,113, 69,148,108, 57,171,129, 41,130, 7,102, 7,247,236,217, 70,244,174, 20,172,126,153,101, 56,148, - 50, 17, 22,138, 11, 32,154,106, 73,168,143, 50,220,226, 38, 33,134,130, 24,199, 82,252, 45,214,108, 48, 4,244,209,190,173,217, - 36,148,107, 39, 56,184, 48, 5,240, 97,200, 65,112,108,245,208,152,122,220,251,181,131, 83, 46, 49, 72, 98, 34,100,240, 12,128, - 72,209, 45,151, 29, 62,252, 30, 74,227,128, 72,158,198,111,175,129,129,209,216, 85,200,128,251,248,225,200,231, 2,118, 4, 34, - 87, 32, 30,171,183, 72,227,230,220, 29, 56,160,235,200,242, 45,128,175,125,250, 7,255,228, 39, 63,248, 95,255,205,223,206,166, -147,217,124, 81, 85,213,131, 7,143,126,242,131,239,254,251,255,248,187,239,125,254,201, 98, 62,149,120,180, 60, 56,110,166, 7, - 96,125,183, 93,199, 16,144, 1, 89, 10, 31,127,100, 31,239,255, 65, 32, 71, 67,211,114,252,155, 27, 1, 56,146,103,245,189, 41, - 11, 65,129,198,225,220,248, 14, 68,163, 53,214,209, 16, 11, 78,136, 16,201, 77,157,120,124, 38,151, 14, 24, 21,111,148,140,111, - 87, 68,238,136, 28, 16,140, 81, 48,208,158,182, 3,160, 35, 28,199, 1,250,126,144,170, 70,203,150,147, 84,211,108,131, 75, 64, - 55,161,137,199,206, 0, 84,135,102, 50, 75, 67,230,186,133,156,239,110,207, 8,200,193,134,174,239,118,131,186, 1,203,241,193, -131, 24, 34,104,101,121, 72, 57, 69, 96,215, 60,236, 86,210,204,183,219, 93,253,217, 60,155,165,220,161, 3,115,180,220, 73,172, -183,235, 85,183,221, 78, 39,243,213,237, 37, 66,149, 82, 87,133, 26,155, 44, 60,185,219,110, 46,214,171, 24, 99,215,237,234, 88, - 85, 49,158,175,183,191,121,255,225, 39,242,217, 52,106, 51,169, 25,133,136,173,108, 59, 28,145, 41, 84, 19,239, 87, 9, 58, 71, - 89,111,187,192,146,179,166,126,215,111,174,211,110,215,167,158, 98,187,187, 62, 23,169,234,217,252,118,117, 59,244, 55,146,166, -152,181,219,109,155,201, 18,192, 2,161,185,138,196,233,100,142,238,105,219, 53,117,211,175,184,170,231, 28,216,147,154,169, 83, - 76, 93, 63, 12,155,102,113,228,160, 68, 21, 48,231, 60,244,119, 87, 18,226,219,147,183, 8, 72, 34,143, 14,142,107,241,215, 47, -127, 23, 15, 62,205,187,174,173, 99,223,247, 57,231,205,237,105,221,206,186,205,102,246,228,139,156, 82, 2,158, 47, 30,144,224, -102,183,157, 49,162,199,174,187, 11,213,108, 58,155,109,118,187,249,114,241,228,147, 39,135,199,143,155,105, 91,213, 85,206,233, -238,242,242,246,234,236,227,199, 15, 31,206, 78,223,159,156,158, 95, 93, 95, 92, 93, 7,145,159,254,232, 31,252,225, 15,255,240, -248,193,163, 97,232,171, 42,252,228, 59, 15,231,147,184,219,172,126,247,235,111,207, 79,207,143,143, 15,226,114,126,114,117,117, -246,187, 27,142,116,113,118,181,186,188,125, 60,153,182, 85, 44, 54,212, 32, 17,129, 96, 20,228, 65, 0, 42,121,152, 97, 72,132, - 16,152,178,187,185, 17,114,182, 68,232,112,207,219,118,173, 88,134,172,163,141,205,140,160,160,100,196, 0,250, 93, 14,145, 69, - 0, 28, 82,214,209,226,137,134,232, 76,148,212, 8,177,137, 1,152,187, 93, 26, 63,255,134,125,215, 73, 16, 50, 48,243, 97, 72, - 4, 0, 76, 14,150,179,138,112,195, 49, 83,206,232, 8, 32,196, 14,168,238,224, 94,104,169,165, 53, 57,152, 11,177, 16, 13,160, - 57, 89, 16,102, 34, 7, 8, 76, 37,252,147,213,154,186,174,154, 70,179,101, 48, 80,141, 78, 61, 0, 58, 16,129,129, 27, 1, 58, - 78,234, 32,132, 41,107, 29, 67, 12,161, 12,165,195,168,200,246, 62, 37, 34, 2,183,146, 73, 65,199,156,141, 3,147,131, 25, 18, -129,250,152,136, 83,119, 17, 26, 15, 75, 70, 43, 3, 9, 5, 4, 53,231,128,104,106, 34, 97, 51,164,245,106,125,180,156, 55, 77, - 3,192,138, 70, 96, 40, 84,232, 47, 99, 83, 19,176, 14, 17, 16, 85,205, 65, 27,174, 18,104,202,169,140,199,220, 93, 53,185,187, -154, 3, 58, 19, 6,129, 65,139,235,138, 70,115, 19,162,152, 91,137, 96, 59,104, 33, 68,152,161,151, 19,115,159,113, 47,135, 35, - 90, 49, 37, 57, 2, 1,255,254, 57,171,106, 5,126,175,230, 2,160, 37,211, 45, 82, 7,223,245, 93,144,118,212,162,250,239, 57, -136, 48,218, 48,200,192,205,148,137, 75,253,117,204,252, 23, 11, 17, 8,130,238, 69,166, 37, 23,227,132,232, 90, 86, 41,224,186, - 15,114, 34, 48,129,105,233, 50, 16, 21,177, 8,128, 7,100, 97,203, 90,176,100,238, 10,194,160, 5, 79,227, 54, 66,119, 96, 12, -174,104, 78,217, 31, 63,124,242,229,103,167,175,223,157, 78,231,203,199, 79, 62, 9, 77,252,244,233, 39,215, 55,119,255,230,255, -254,251,127,253, 79,255,209,201,235,231,103, 39, 31,230,203,254,217,151, 95,158,188,125, 61, 12,179,170,145,194,243, 28,195, 67, - 8,238, 58,230,247,115, 66, 66, 96,178, 62,151, 1,184,153,187,237,223, 43, 75,186, 31,145, 73,124,223,244, 27, 17, 57, 12,224, - 96,106,136, 78, 92, 84,175,163,111, 27,220, 29, 84, 36,142, 73,248,130,154, 4, 29,223, 97,176,144,158,193,164,252, 29, 96, 24, -193,153,232, 41,133,233,212,250,164, 41,143, 16,110,145,156, 6,205,157,107,118, 51,138,220, 13,125,182,220,180, 11, 70,204, 57, -233,221,201,224,113,183, 89,205,154,214,145, 55, 67, 63,148,196,130,250,131,137,208, 40,116,113,138,109, 51, 95, 18, 83, 69,144, -186,221,195,163,229,242,112,121,113,122,182,186,185,154,204,231,185,219,176, 52,204,113,210, 78,230,179,233,199, 87, 95, 1,241, -228,240,225,110,117,177,238,110, 69,164,101,188,217,172,110,182, 91, 38,154, 78,166,151, 55,215, 77, 93,153,250,215,239, 62, 48, -243,207,190,243,172, 69, 97, 52, 53,159, 52, 77,221, 84,144,116,151, 50, 0, 12,102,145,132, 98, 12, 18,178,165, 88, 69,178, 76, -177, 30, 82,183,222,238,152,105,219,117,135, 7, 19, 14,146,163, 66,208,139,128, 0, 0, 32, 0, 73, 68, 65, 84, 92,245,185, 78, - 59, 52, 5,131,221,234,186,158,204,251,212, 3,113, 45,188,189, 61, 3,105, 61, 27,162,186,233,124,118,148,114, 55,244,155,172, - 30, 99, 59,157,207,132,142,145,195,144,134,172, 3,246,202,129, 87,185, 91,223,222, 60,125,242,236,225,193,193,186, 31,220, 13, -176,218, 14,137, 85,251,148,114,218,101,243, 71, 79, 62,245,212,113,172,234,102, 89,199,138, 14, 31,244,219, 91,215, 33,155, 24, -122,186,190,146, 80,117,171,179,201,193, 19,239, 55,159,124,247, 7,207,190,252, 97,213, 84, 49, 86,154,211,234,246,250,230,242, -236,226,252,228,253,135, 15,111,222,125, 60,191,185,190,190,185,219,244,221,231, 79, 63,255,241, 23, 95,124,247,187, 63, 86,221, -154,237, 30, 45,103,159, 29, 31, 50,218,221,237,213, 55, 95,253,166,157, 77,143,158, 62,250,240,238,221,193,147,199,121, 5, 87, -215,215,179,170,122, 52,109,166, 77,163, 6,206, 12,128,149,136, 48,247,169, 31, 15,119,230,100, 57, 15,185,112,238,136, 56, 67, -105,206, 91,246, 44,128,238,158,203, 43, 30,146,170,171,167,242,198,108,217,132, 9,204,221,113, 80, 19,182,182,109, 82, 78, 62, - 46, 97,109,252, 43,136, 8, 64, 93,223, 75, 96,119, 87, 64,200, 57,196,178, 85,130, 97,216, 33,196,174,219,130,131,170,194, 24, -224, 35, 54,144,192, 10,158, 93, 17,209,221,132, 37,155,103,115, 70,171, 99, 76,163, 21,154,220, 60, 34,103, 75, 69, 53, 76, 97, - 44,147, 74,140,253,144,192,148,153,171, 42,150, 70,120, 61,109, 25,100,215,237,134,161, 83,179,200, 1,203,229, 8, 77,205,213, -189,169,171, 9,177,187, 5, 10, 10, 70,224,204,188, 27, 58, 33, 10, 72,125,210, 42,112, 54,119,247,209,165,138,100,228, 90, 98, -245, 76, 57,187, 42, 8,221, 95, 77, 81, 29, 3, 67,100, 73,140, 0,174, 57,169, 58, 51,239, 44, 95,173,110,231,109, 61,155, 47, - 52,247,128, 74,136,238,164,201, 42,102, 4, 80,128,128,132, 76,106,106,150, 9,137, 36,118, 57,185, 25, 33, 76, 42,222,118, 62, -120, 2, 70,102, 73, 58,140, 67, 21, 48, 85,227,191,249,171,127, 10,132, 88, 46,131, 14, 37,202, 2, 4,123, 52,185,187, 57,149, -152, 34,151,179,143,137,246, 95,114, 81, 45, 49,114, 1,203,140,171,130,145,182, 76, 4, 86, 82,234,232,196, 12,121, 88,247, 54, -107, 27,216,155,186, 73,246, 64,131,177,192,227, 69,144, 13, 99,141,184,128,182,246, 90, 21, 51, 44,221, 4,252, 61,101,126, 4, - 14,140,138,110, 40,239,239,132, 88, 94, 68,202,108,100,252,101,101,138, 65,227,107, 6, 16, 56, 20, 34,205, 61,109, 14, 17, 65, -132,238, 79,121,119, 52,240,167, 15,151,223,190,122,147,210, 48,157,206, 38,147, 69, 51,105,217,244,197,155,247,243, 89,123,124, -184,252,228, 59, 63,172, 2, 13,131,137, 64, 30,114,140,209, 53,151, 37,193,248,240,227,145,159, 51,102,120, 96,255, 36,115,221, -175,153,201, 85, 71,114, 77, 16, 55, 71, 36, 14, 97,220,133, 48, 33, 50, 20, 40, 13,141,192, 5, 4, 64,164, 82,121,229,241, 22, -127,207,141,252,125,170, 65, 51,214, 85, 4,150,210, 8,227, 58,122,182,130,191, 65, 0, 10,162,154,175, 46,111,187, 33, 79, 39, -211,131, 71, 71,239, 94,191, 35,105, 76, 21, 65, 81,234,213,245, 41,113,104,218,182,219,221, 73,140,110,166, 78,155,187,211, 73, - 35,194,116,126,121,125,122,113,121,189,190,107, 38,179,127,252, 95,254,147,213,234, 70,152,221,210,226,248, 33, 14, 29,114, 19, - 39,179,201,124, 81,214,179,183,151,103, 0, 52, 93, 30, 64,218,173,238,238,186,110,235,121, 7,110,196, 33,245, 93,197,232, 57, -197, 24,251,126,183,217,236,158,127, 56,253,230,253, 73, 54,173, 66, 21,165,206, 90, 4,132,252,225,234, 10, 28,166,109,235,234, -211, 73,219,165,132, 37, 69,132,156,211,182,110,230,234,158,114, 74,221,106,189,237,189, 84,254, 98,181,217,174,204, 93, 77,147, - 51, 35,130,246,185, 91,109, 7,173,219, 89,191,187,227,170,101,242, 40, 81,251, 13,114, 85,181, 97, 24,122, 55, 4, 75,132,184, -219,221,177,136,187,182,237, 98,125,115, 90,215,211,105, 59, 97, 68, 17, 4, 55, 85,184,184, 58, 89,173,239,212,168,110,231, 13, -179, 73,180,212, 55,205, 68,152,155,197, 3, 29, 54,150, 19, 73,152,206,150,110,249,238,246,250,193,163,167,199, 15,159, 76,102, - 83,194, 0,150,186,212, 81,168, 43,225,205,221,117, 53, 91, 54,179,229,226,224,224, 15,254,228, 23,159,126,239,251,237,108, 74, -196,219,205,221,229,213,201,201,219, 55,175, 94,189,124,249,230,245,243,183, 31,222,159,157,223,173,215,243,233,226,151,191,248, -243,191,252,239,254,251,118,118, 52, 88,255,232,225,195,207,143,234,103,199,237,230,238,250,237,203, 23,223,124,253,237,147,207, - 62,141,203,217,191,251,219,191,127,240,224,248,242,230,246, 55,191,254,246, 97,219, 28,207, 39,128, 92, 0,233, 85,164,166,170, - 9, 41,171, 39,245,146, 64, 40,141,121,205, 9,108,140, 23, 19, 1, 3,101,205,229,205, 61,153, 17,161, 48, 35,160,170, 5, 97, - 34, 30,205,206,140,165,159,195,204, 49,114,206,154,109,196,148, 11,163, 90,185,145, 1, 5,140, 65, 76, 97,124,153, 46,200, 71, - 26, 89, 52,238,168, 57,131, 89, 54, 13,136,204,236, 0, 81,162,237, 9, 35,184, 7, 88,149, 5, 85,225,240,148,200,130,136,140, - 51, 37, 0,117,199, 66, 64, 33, 22, 33, 53,199,189,140, 65,205, 99, 8,109, 59,169,155,118,159, 83, 48,116, 48,183, 40, 34,145, -213,204, 84, 99, 8, 72,100, 62, 10,252, 16, 33,169,166,108,130,132,196, 57,123, 93, 9,145,152,121,206,206,130, 76,161, 44,117, -131, 80,206, 90, 12, 36, 65, 8,144,205,140, 8, 73, 40, 74, 68, 4,102, 22,137, 52,190, 97, 27, 0,174,187, 4, 41, 47,231,179, -200, 20,235, 10,129,213, 85,208, 89,216, 44, 51,146, 16,141,204, 64, 68, 33,206,238, 57,165,148,115,133,132, 20,179,102, 24, 89, -177,168,106, 66,232, 6, 89,179, 48,187,155, 96, 97,204, 91, 17, 28, 26, 24, 1, 0, 49, 27, 26,186,187, 58, 17,154, 58,162,129, -149,187,182,123,118, 39,196,194, 9, 0,116, 7, 45,110,111, 55, 87, 47,143, 10,194,226, 59, 29, 25,186, 57,217,108, 62,127,255, -234,132, 30, 44,161,228,105,145,144,196,192, 93,129, 4,203, 44, 26,198,217,213, 56, 92, 1, 47,176, 45,190,215, 24,141,139,203, -113,119,234,196,226,234, 8,110,234, 44,156,135, 60, 50,184, 28, 12,139,113,213, 0, 16, 5,193,246,222, 65, 32,115, 43, 41,121, -188, 71,240,222, 27, 51, 20, 74,112,168,228,154, 84,181,138,213,159,254,236,123,255,219,255,249,235,249,116,214, 76, 91,161,112, -252,232,241,179, 39,151,255,199,191,255, 79,223,253,252,211,205,213,201,251, 15,239, 9,163, 68,110,219, 73, 93,215, 18, 35,161, -170, 1,163,192,168,139, 42,182,151, 66,169,115, 34,214,212, 3, 17, 20, 66,129,106,249,246,162,144,233,232,176, 85,205, 56, 86, -125,141,164,180, 75, 96,156,130,129,187,105,201,115, 1,154, 59,149,242,153,155, 35,149,183, 31, 41,105,168, 24, 3,114, 64, 38, - 10,194, 68,150,114,209,160,163,187,199, 74,147,186, 67,238,182, 67,191, 75,121, 32, 3, 2,236,250, 77,136,147,148,125,123,115, - 86,183,139,102,118, 52,116, 27, 68,214,190,231,106,106,253, 46,167, 97,114, 48,203, 41,119,253, 48,100, 27,186,244,228,241, 3, -138,109,104,102,152,186, 56, 59,172,218,101,191,237,168,170,208,108,216,108,218,217,209,250,238, 90, 83,215, 46, 22, 66,212, 35, - 94, 95,157, 46, 14, 30,109,239,174,167,243, 67, 17, 57, 56, 92,244,119, 55, 44, 65,181, 7,105,179,247, 23,171,213,217,205, 77, -219, 86,102, 62,109,218,202,227,174, 31,102, 77,219, 84,213,139,211,139, 42, 86, 63,250,236, 9, 51,207,234,233,114, 57,235,186, -225,230,230,188, 75,105, 24,122, 34, 70,174, 82,159,114, 26, 80, 98,206,195,108,190,128, 28, 52, 89, 74,125,234,214,119, 68, 71, -139,121,172, 39,104, 87,102,105,182, 56,170,163,120,182, 97,232,118,119, 23, 92, 15,136, 11, 38, 26,186, 27, 66,195,208,206,166, - 75,116, 50,244, 73, 83,221,198, 42, 15,119,170, 65, 53,139,230,110,183,187, 94,111,152,165, 14, 50,155, 63,184, 91, 93,223,110, - 86,134, 64,154,114, 26,220,109,182,120,152,211,110,121,248,232,246,246,114,189,186,238,251, 65,194,180, 27,244,228,171,255,103, - 50, 61, 88, 30, 62, 48,183,182,106,154,118,126,115,119, 61, 63, 56,254,209, 31,253,164,157, 31, 30, 30, 31, 87,149,228,156,251, -190, 91, 93, 95, 95,156,189,123,251,238,205,201,217,249,201,217,213,217,213,229,245,221,106,218, 76,126,246, 7,127,252, 71, 63, -254,163,186,153,190,124,249,119,237,244,232, 7, 79, 31, 60,125, 52, 77,221,221, 55, 95,255,250,228,253,201,209,147,199,192,124, -122,113,249,226,221,135, 60,164,175,190,250, 70,204,159, 46,103,117, 8,201, 64,152, 17,169, 10, 76, 84,240, 44, 22, 98,108,155, - 58, 13,189,170,130, 89,233,203, 88, 89,126, 66, 25, 5,148,172,130, 23,149, 0, 33,245, 41, 69, 14,200, 52,104, 14, 36, 34,140, -238,230,206,140, 76, 56, 36, 75, 29, 56, 19, 0,162, 25, 16, 21,145,230,190,236, 8,125,202,132, 24, 98, 25, 49,187, 48, 7, 9, -217,178,153,170,230,162,182, 22,100,226, 17, 90,158,221,145, 75,227, 27,205,202,219,171, 17,137,136,244,125, 18, 66, 36, 84,211, -172,101, 82,237, 5,249, 72, 35, 37, 11, 84, 29,185, 8,244,220, 92,131, 8, 33,246, 93, 55,164, 76, 72,217,243,208,247,224, 78, -232,131,102,200, 8, 8, 18, 99,105, 96,133, 24, 80, 61,129,230,148,128, 32,148,190, 9,141,105,115,119, 43,211,126, 7, 83, 27, - 0, 28, 28,147,105,249, 69,131,165, 98,237, 99, 17,112,103, 14,132, 96,206,224, 70,104, 64,228,110,140,124,215, 15,219,245,230, -209,225,124,210, 54,170, 86,254, 68,117,136, 57,103,116, 39, 14,238,174,166, 76, 65, 4, 93, 45,229,156,179, 18,123,100,114, 33, - 43, 7, 5, 22, 25,108, 16,114, 51, 45,236, 52, 34,128, 1,132, 17,180,204,100,144, 0, 24,198,212,184,141, 64,117,195,123,163, -249, 72, 13,216, 15, 50, 92,141, 36,128, 25, 75, 89, 82,131, 59, 48,161,187,141,123, 78,252,189, 24, 29, 92, 73,234, 38, 98,206, -142,224,229, 5,192,212, 10, 0,216, 11, 91,216,141,202,137,168, 99,135,130,192,243, 8, 43,222,235,213,105, 31,153,119,115, 47, -105, 66, 36, 36,169, 10,172,107, 0, 35, 3,115, 0,166,178,142, 69, 83, 79,128,110,121, 76, 3, 16,168, 59,237, 17,105,165, 64, - 33,132, 99, 96,126, 4,234, 0,122, 80, 55, 6, 28, 82,254,252,201,167,143,143,222,191,120,243,110,121,116,112,112,248,100,113, -120,244,253, 31,124,239,236,226,234,127,254, 95,254,237,191,250,111,127,254,233,103,223,173,106,185,190, 89, 63,125,246,236,250, -244,148,152,156, 8, 24,116, 84, 5,224,158, 51,195, 68, 98,101,151, 43, 1, 28,135,180, 99, 64,160, 64,129, 77, 13,205,145,193, - 82,146, 80,141, 0, 36, 68, 66, 44,100,158,251,244,234,125,231,110,116,137, 35,104,202, 40, 76, 36,251, 98, 7, 33,147, 13, 25, - 34, 99, 96,100,209,190,119,166,125,243, 2,185,146,180,235, 1,145, 67,133, 68,136, 81, 68,192,149, 72, 16,197, 53,107,182, 12, -113, 50,171,119,119,167,195, 96,177,169,192,128,153, 55,171, 43, 25,159,156,150,210,224, 4, 89,117,214,212,253,118, 35, 28,116, - 24,170,229, 19,119, 55, 52,221, 93, 3,122,159,105,105, 25,184,230, 56,113,211,221,230,206,186,141,232,182,173,167, 94, 9,153, - 26, 36,208,184, 53,239,251,126,219,247,174,118,183,190,185, 94,109,213,245,110,179, 11, 18, 66,144, 71,143, 30,217,135,147,171, -171,179,131,217, 28,145,254,238,213,171, 24,165,105, 38, 19, 35,242,165,132, 48, 40, 84,245,146, 64,123, 85, 1, 75,128,109, 51, - 49,247,108,182,233,118,100, 90,213, 45,185, 33, 2,161,119,253,110,209, 54,211,195,199,125,175,253,250,210,114, 94,206, 38, 67, - 31,182,134,112,123, 38,213,212,188, 35,169, 45,173,174,111, 94,198,246,160,169, 39,205,100, 78,228,211,201,228,230,230,170, 31, -250, 16,229,122,221,221,173, 55, 77,213, 78,154,137,166, 45,154, 91, 78,234, 74, 48,165,170,118, 87,142,209, 44,167,100,253,118, -117,125,246,254,240,248,243,229,193,113, 73, 23,214,237,228,102,181,238,178, 79,231,243,221,135,231,186,187,251,201,159,253,215, -207,190,255,227, 80, 73, 16, 1,135, 52,244,235,213,205,245,233,135,183,111, 94,189,253,240,241,227,217,249,217,229,213,213,106, -213,117,253,247,190,248,226,127,248, 23,255,211,197,199,183,125,191,147,118,249,228,193,147, 31,125,126, 52,109,240,226,252,205, -155,111, 95, 78,151, 11,105,155,179,203,179, 39, 95, 60,186,222,236, 78, 79, 47, 23,117, 56,168, 98, 29, 43, 66, 40,165,193,192, - 92, 69,201,102,217,157, 8,235,186, 42,167, 79, 95, 66,236,197,178, 73, 88,110, 18,230,198, 20,220,115,185,220,171,154, 16, 15, -154, 43, 9,201,114,133, 21, 98, 64,180,126, 72,217,124, 86, 87,253,208, 51, 99, 36,114,115, 83, 99, 71, 22,234,146, 2,227,164, -170, 77,181,207, 9, 16,145, 69,246,195,130, 58,136, 35, 15,253, 64, 76,234, 46, 76,238,230,232,117, 19, 7,117,112, 11,132, 74, - 24, 72,178, 90,118, 64,242, 72, 85,136, 65,115, 6,112,114, 20,146, 62,167,148,141, 9, 8, 37, 91, 34,112, 9, 81, 53, 17,178, - 48,198, 80, 37, 85,115, 16, 34,145,232,142, 93,223, 71,213, 16,121,219, 23, 98, 78, 86,183, 97, 72,194,194, 33,224,136, 66, 1, - 66, 32,211,205, 48, 8, 49, 35, 59, 24, 18, 50,177,101, 15,145, 25,209,144,220,220, 5,192, 72,199,188,181, 23,172, 14,131,199, - 32,136,129,220,202,236, 55, 18, 15,230,110, 9,203, 23, 73, 18, 67,236,212,110, 47,175,159, 28,206,167,147, 5,170,151, 52,167, -186,147,107,140,156,179, 41,128,153, 87,194, 56,194,241,157, 80,155, 90,118,253, 48,244, 67,219, 86, 65, 88, 51, 1, 6,243,174, - 12,217, 42,145,242, 72,203,217, 1,153,255,250, 95,252, 85,129, 18,220,199, 34,247,175,251,232, 54,140, 42, 59,192, 61,146,191, - 92,189,209,221,153,208,204, 28, 92,152,169,244, 63, 97,236,153,238,201, 94, 99, 43,108,188, 38, 51,166,221, 26,171, 54,148, 71, -122,233,113, 21, 40, 17,148,197, 67, 1, 80,142, 24, 73, 3, 5, 64,115,231, 81, 65,228,224, 99,181,149, 92,221, 21,192, 16,101, - 28,224, 23,110, 3,142,104, 93,223,227,140, 75,108, 28, 76, 29,204, 61,153,230,130,209,216,255,102, 99, 96, 6,121,156,154,141, -227, 31, 2, 70, 46,133, 37, 0, 32,161,199,199,179, 95,255,238,133, 57, 28, 30, 29,198, 80,185, 89, 19,229,239,126,243, 77, 59, -109, 14,151,211,217,241,147,155,211,247,103, 39, 31,251,110,215, 78,102,197, 39,201,132, 44,161,244,185, 75,172,197, 52,131, 91, -193,253,154,149,144,108,145, 52,101, 55, 71,102, 4,160, 66,133,116, 7, 30,191,207,197,102,139, 72,110,174, 41, 49, 33,241, 56, - 76, 47,175, 32,154, 51,184,150, 47,189,164, 32,202,103,180,110, 23,177,106, 76,149, 24,137, 3,197, 96, 89,209,204,189, 4, 73, -145, 88, 94,252,230,171,190,239,151,243,201,242,201,227,183, 47,158, 35,197,156, 54, 93, 63, 8,123,211,206,182,155, 77, 59, 93, - 16, 49, 5,209,156,114,206, 54, 92,205,167,179,237,110,119,117,115,115,122,113,121,187,217,254,193,151, 63,126,244,232, 19,212, -206,242, 0, 28,134,126, 93, 71,105,219, 86, 51, 85,243,227,136,233,252,195, 55, 92, 77,153,201,140, 82,191,233,251,237,100,126, - 96, 57, 77, 23, 75,118,212,221,238,228,252,125, 86,100, 8,169, 31,222,157,159,191,185,184,238,135,220,165, 62,144,148, 0, 66, -136,114,187,222,172, 54,235, 7, 71,135,219, 93,255,238,226,108,209, 78,134,180, 5, 0, 22, 73, 41,213, 33, 58,184,154,238,182, -119, 85, 61,233,119,235,174, 91, 35, 32, 75,165,218, 5,137, 93,218, 73,136,221,238, 78, 88,218,118,114,113,246,209,193,170,122, -210, 15,121, 24,118,109,211,184, 99, 54,182,220, 25, 88,219, 46,152,164,235, 86, 77, 53, 65, 16, 3, 35, 4, 71, 28,134, 33,231, -225,244,246,214,129, 31, 31, 62, 56, 88, 30, 1,178, 27,152,166,131,197, 82,234,246, 96,126, 80, 5,217,179,178,243,102,183,173, -218,217,164,138,147,195,135,105, 72,253,234, 60,198,106,182, 56,158,206, 14,115,191,233,251,190, 31,250,159,254, 87,191,252,242, -143,127, 94, 87, 33, 4, 65,132,205,102,115,115,121,246,246,197,215, 95,127,253,187,231,175,223,188,254,240,241,205,201,249,205, -106, 85,199,240,203,159,255,249, 47,126,242, 39,159, 60,123,134, 49,180, 77,251,229,147,233,247, 63,153,107,218,189,125,249,234, -221,203, 55,143,191,251, 25,180,245,111,127,251,245,211, 79,159,188,120,119,250,235,191,253,221,163,182, 94, 78,218, 42, 10,148, - 28, 50, 81, 45, 17, 9,134,114,191, 35,169,171,202,193, 85,147,154, 10, 11,148, 98, 28, 22,181, 36, 10, 83, 32, 41,241,143, 18, - 61,224,200,150, 13, 8, 16, 41, 16, 59,104,182,188,235,123, 4, 12, 76,217,148,144,186,172,110, 90, 96, 89,106, 54,152, 71,230, -192,216,167,156,114, 46,114,248, 40,228,136,102,214,198,160,102, 73,115,121,103, 29, 69,213,128, 85, 12, 93,159,205,146,170, 22, -239, 6, 0, 57,154, 16, 71, 97, 98, 26,114,206, 41,155,123, 19,162,186,186, 91,129, 22,128,155, 0, 5,150,236,230, 0, 33,176, - 58,170, 59, 33, 86, 66,196,156, 82, 50,183, 32,146, 52,119,125, 34,129,156,117,215,117,170,218, 54,117,206,217, 53, 49, 18, 33, - 69, 33, 53,239,213,152, 8, 16,202,216,185,220,210,132, 89,136,179, 89, 25,149, 18, 22, 95, 6, 18, 17, 17,103, 83, 55,207, 14, - 81, 36,198,160,110, 0, 42, 28,144, 73,152, 13, 72,205,170, 82, 72, 33, 62,185,185, 99,203,203,217, 12,204, 32, 8,122,209,207, - 17, 9,151,222, 30,185, 9, 35,161,184,155,130, 7, 70,145,106, 59, 12, 58,244,145, 37,151,215,122, 98,183,220,167, 4,132, 21, - 83,118, 2,176,146,222, 51, 4,254,235, 95,253,243, 2, 12,178,189,105,110,223, 23, 29,231,218, 60, 74, 55, 70, 36, 1,236, 59, - 14,247,160,177,177,177, 92,238, 39,232, 68, 92,216,149, 99,184,124,212, 60, 1, 2,122, 26,182,131, 78,154,186,168, 23, 1, 20, - 73, 70, 37,147,141, 77, 56,119, 48,176, 82,199, 42, 35, 10, 26, 73, 6,123,176,145,187,105, 26, 47,180, 35, 78,158,240,254, 37, - 99,223, 12, 66, 4, 34,161,189, 90, 22, 74, 2, 21,201, 65, 75,232,138,198, 0,252,184,122,184,207, 69,238,255,251,242, 36, 43, - 47, 20, 54,155,205,216,243,183,175, 62, 28, 44, 23, 7, 7, 7, 33, 4, 83,157,212,241, 63,254,167,175,191,243,236,193,124,182, -168, 39,211,155,171,219, 47,190,243,221,237,221, 13, 49, 9,145, 57,236,227, 46,163, 67,170,188,148,236,105, 16, 12,142,158, 77, -193,133,100, 52,194,178, 0, 24,236,135,141, 62,110,111,138, 95, 16, 0,139,113, 23,239,159,153,238,174, 57,237, 86,151, 57, 15, - 44, 21, 7, 25, 25, 79, 76, 14, 20,234, 22, 1, 89,194,168, 98, 5, 7,207, 20,196,251,158,136, 37,132,161,239,222,191,249, 96, - 92, 29, 28, 29, 29, 60, 60,252,248,230,125,223,247, 20, 91,192,200,168,183,103,111,128,235, 24, 69,164,114, 34, 4,200,125,175, -253, 77,136,213,102,187,253,112,118,254,241,252,114, 72,249, 79,255,244, 31, 47, 39,113, 72, 67,153,197, 85, 85, 92, 28, 60,224, -230, 96,117,115,190, 60,126, 84,181,245,249,233, 9, 34,166,237, 93, 74,125, 30,186,201,236,209,176, 93, 15,253,206, 53, 15,221, -250,226,228,165, 26, 70, 9,221,110, 85,183,245,203,119, 31,159,159,158,246,185,215,148,135,156,133, 57,165,161, 79,125, 19,235, -110,232, 17,160,169, 99, 82,187,184, 93, 45,167,203,229, 98,190, 91, 93,214,205,100, 72,249,238,238, 44, 48, 3,137,129,212,117, -221,111, 55, 18,171,166,158,152, 27, 19,109, 54,235,108, 46,177, 65,183,171,219,219, 12, 30,171, 26,192, 93,251, 32, 21,154,174, -239,110,154,118,174,195, 22, 60,115,168,116,216,180,211, 67,137,147, 97,216,170, 38, 0, 24, 82, 94,109,119,131,218,162, 93,212, - 34,117,211,244,187,213,250,238,170,105, 91,145,112,176, 92,244,221,110,215,245,179,233, 36, 15,195,144,146,170, 13, 41, 87,245, - 20, 72,204,114,223,247, 40,245,108, 50, 3,160,213,110,163,230, 77,172,126,240,211, 63,250,226,251, 63, 18, 22, 32,239,119,187, -221,122,115,254,241,253,183, 95,127,245,252,197,139, 87,239, 63,188,254,120,250,225,236, 28,221,127,240,236,211,127,252,243, 63, -251,252,201, 83,103,140, 85,117, 56,159,124,241,112,218,242,112,241,241,227,187, 87, 47,135,148,214,219, 93,103,250,242,219, 23, -183,119,235,215,175, 62,110, 46,111, 30, 78,154,182,169, 80, 8,172, 80, 4, 9, 9, 12, 44,171, 35, 82, 21, 42, 10, 98,154, 83, - 74, 35, 34,144,152, 89,136, 66,249,192, 23,175,145,129,187, 89,209, 28,149, 17,171, 48,152, 90, 45, 92,138,148,110,229, 87,162, -186, 49, 33,145, 48, 2,128,152,233,160,234, 0,194,224,133,223, 91,206,128,209,165,201, 81, 66, 29, 36,101, 5, 55, 52,100,102, - 3, 18, 98,199, 18,197,182, 33, 15,227,145, 10,168,102,102, 57,134, 80,254, 78,149,134,160, 48, 27,162,165,236, 96,229,212, 40, - 30, 4, 97, 50,244,113, 43,133, 52,118,220,203,225, 86, 44, 58, 68,132, 66,136,149, 4, 5,200,230,140,192, 8, 41,167,156, 19, - 0, 85, 65,152, 73, 1,209, 65, 8, 28, 89,136, 74,103, 86, 88, 16,128,137,108,140,218,219, 40, 90, 64,148, 80,194,254,131, 38, - 45,255,211, 66,199, 18, 98, 36, 49, 47,191, 18, 10,137,158, 16,131,200, 77,151,118,219,213,225,124, 30, 75, 55,106,156, 64, 35, - 34,106, 6, 98,144,192,200,236,230, 10,134, 72,194, 84,184,235,232, 94,198,107, 64, 20, 3,151,165,183, 16,133, 32, 10, 8,102, - 4,174, 89,213, 45,231, 44, 40, 1, 93, 11,189,196,247,164,147,251,209,138, 23,102, 26,209, 72,176, 28,235,152,182,143,105, 23, -242, 56,248,126,156,130, 37,238,200,228, 14,251, 32,149,237, 71, 30, 80, 55,205,197,249, 10, 15,102,100, 96, 94,232,230, 25, 28, - 44, 57,162, 33,147,141,231,214, 8,138, 3, 40, 82,139,113, 66,131,192, 37, 3,238, 18,213,148,241, 30, 92,199,128,186, 39,147, -177,147,238, 49,153, 86, 18,174,102,128,196, 44,204,136, 89,139,191,207,113,172,146, 22,143,248,253,100,198,144,144,152,205,188, -100, 43, 17, 16, 49, 12, 74, 63,250,209,247,190,121,249,225,221,187,119,135, 71, 15, 38,147,249,226,248, 72, 85,207, 46,175,255, -237,191,255,245,163,199, 79, 82, 63,236, 54,183, 92,215, 10,105,232,119,128, 88, 2,181,166, 5,118, 77,229, 13,198, 13, 76, 93, - 34,151,146, 19, 48,146,123, 78, 61,138, 16,130,165, 68, 60,254,145,202,232, 9, 17,193,117,127, 65,128,145,125,140,232,166, 36, -140, 44,110, 70, 34,224,108,123, 1,226,184, 49,134,226, 83,119,102,215, 33,113,211,186, 38, 44, 22,202,170, 2,137, 14,150,214, -119,182,187, 5,136,174, 10,166,204,194,161,252,124,135, 52,164,164,216,134,170,219,110,154, 89, 32, 7, 53,239,119,183,101,177, - 53,228,126,219,117, 67,202, 85, 8, 7,109,216, 93,190, 85,108,195,100,174,121, 23,227, 2,144, 79, 63,188,237,119,125,218,222, - 52,213,242,203, 63,248,233,199, 55, 47, 79,222,254,174,158, 30,144, 84,136,149,129, 1,122,183,186,232,182, 29,202, 84,208,130, -224,132,105,187, 94,125,184,190,209,236, 66, 65, 68,251, 60,220,174, 86,179,201,164,170, 99, 91,197,249,100,114,183, 94,179, 80, - 96,233,250,225,239, 95,191,172, 3, 30, 78,219,100,151, 18,154,166, 57,170, 68,239,174,175,166, 7,143,234,192,237,100, 34,161, -233, 82,159,250,181, 89,116, 77,187,190, 23,137, 21, 35, 80, 64,199,126,187,201, 0,149,240,174,219, 49, 97,159, 85,250, 93, 12, -177,223,173,153, 47,164,154, 66, 74,193,185,169, 39,169, 95,175, 54,155,235,235,147,200,205,225,100,145, 92,145, 67, 78, 67,172, -230,253,144,186,110, 59,157, 31, 95,223,221, 14,221,122,179, 89, 5, 38, 68,182,156,169,110, 17,112,183,189, 90, 44, 31, 13,253, -182,110,106, 52,179, 97,123,244,228,179, 93,191,107, 22,139,103,159, 61,123,240,244,177, 83,216,238,182, 58,116,155,187,245,229, -213,199, 15,239,222,191,251,240,225,205,201,233,217,197,205,106,187,249,242,217,231, 63,253,242,139,131,249,193,106,155,110,119, -221,227,163,195, 71,173, 29,206,233,246,230,226,253,219, 55,237,180, 26,192, 6,205,203,135,139,183,167, 23,175,223,124,168,131, - 28,183,173, 72, 9,124, 3, 0,178, 16, 7, 41, 9,105,102,140, 21,141,158,226,100, 14, 40,194,170, 94, 42,220, 33,132,172,150, - 29,177,180,120,204,120,116, 55,131,151,127, 71, 7,128, 24, 56,155, 21,123,176,144,171,249,254,147, 12, 96, 70, 68,217,114,202, -169,239,135,194,160,138,194,196,130,132,213,216,200,103, 97, 30,242,224,138,134, 78,192, 70,142,110,177, 10, 68, 2,217,138,107, - 45, 4, 49,179,253,122,140, 74,219,209, 0, 0,177,140, 82,211, 48,144,155,132,176,237,123,243, 92, 94,100,147,154,163, 16, 19, - 33, 37,119, 70,172, 57,168,171, 22,180, 11, 11, 3, 23,233,178,128,168,155, 32, 83, 69,105,112,207,230,144,171, 88, 73, 33,245, - 19, 69,226, 4,102,102, 21,143,125,159,192,236,238,166, 90, 34,122,196, 66,224, 54,118,104,152,152, 82,202, 80, 84, 36,224,136, - 24, 88, 40,134, 62,101,207, 10, 4,106, 42, 82,230, 60,128,228,219,148,239,238,110,230, 77,221, 54, 77,249, 73,185,131,255,255, - 84,189,215,151,101,201,117,167,183, 93,196, 57,231,186,244, 89,174, 13,218,192, 53, 0,130, 67,209,138,196, 12, 37, 74, 90,212, -112,104,158,134,212,155,254, 73, 45,189,105, 73,163, 53, 67,105,196,161, 8, 52, 97, 26,109,202, 87,102, 86,250,235,142,137,216, -123,235, 33,206, 45, 80,111, 0, 26,171, 58, 51, 43,239, 57, 17,123,255,126,223,135, 94,134, 16, 34,236,101,181,166, 89, 85, 99, - 21, 76, 65,179,150,191, 17, 69, 8,194,149,112,175, 94, 22, 36, 66,136, 8,217,156, 1, 18, 80,159,147,166,161,169,107, 85,227, -127,255, 87,255,227, 8, 98,124,103, 64, 26,143,240, 59, 54, 11,254, 38, 27, 78, 72, 68,193, 11,166,166, 20, 10,162, 32,145,219, -200,146,100, 34,192,119,143,153,113, 35, 58,178, 67,129,136,237,230,230,126,127,190, 55,238, 10,137,139,173,123,228, 16, 4,122, - 39,118, 29,255,205,238,132,100,160, 59,103, 83,193, 64,234,168, 41,228,176,171, 35,141,180,176,209,216, 7,136, 72,130, 4, 68, -130, 92, 46, 35,133, 86, 81,184,138,160,128,140, 52, 22,109, 75, 55,130,129, 10,147,236, 29,125,172, 72,164, 16, 81,144,217,221, -170,192,179, 58,254,236, 87,223, 44, 22,243,189,253,163,130,196, 58,216,159,255,211,231,191,116,247,143,222,127,239,228,209,131, -203,203,183,179,217,188,223,182,177,174,217,199,133, 5,115, 24, 51,151, 14,196,140, 92,252, 34,239,118,186,227, 70,193, 77,193, -205, 85,181,239, 28,180, 60,230,125,132,184,209, 40,131,100, 26, 99, 14, 88,102, 48,198,194, 34, 81, 36, 74,172,138,212,189, 76, -186,204,168,158,206,137,176,188, 25, 98,221, 88, 74, 40,236, 14,200, 1,180,183, 65,157,194,249,155, 55, 57,219,193,233,131,163, -211,195,179,231,175, 33,196,118,189,204,219,155, 46,217,252,240, 33,186, 74,168,203, 97, 72, 29,187,205, 77, 16,101,225,219,155, -229,249,229,237,221,102, 83,215,147,255,238,207,254, 26,136,185,154, 16,241,252,232,116,113,240,240,237,217,139,229,249,215,251, -167,143,231,123,251, 8,116,255,246,217,118,211,237, 29, 62,244, 60,104,214,249,252, 40,229, 62,183,155,183,231,175,238,239,175, -182,219,251,201,108,159, 0,108,216, 92,221,222,252,236,233, 43, 71,209,156, 8,129, 16,171, 32,109,206,168,120,189, 90,214, 85, -188, 95,111,134,156,131,240,188,153,116, 89, 47,175,111, 79,247, 22,179,201, 36,229, 60,169, 39,195,176,110,234,137, 35,247,253, - 96,154,203, 26,142, 44,153, 42, 83,189,191, 88, 16,146,147,228,212,151, 58,116,144,170,164,193,170, 42,106,182,217,116, 58,108, -239,102,123,199,170,154, 21,145, 72,132, 83,191, 94,109,215,142, 20, 83, 90, 28, 62,210,156, 40, 84, 33, 68, 4,200, 57, 15, 67, - 27,235, 41,168,130,231,216, 44,204, 76,115, 18,198, 72, 58,169,154,166,170,182,247, 23,166,221,102,121, 43,213,164,239,214,235, -187,179,197, 98, 95,154,248,254,199, 31, 77,103,179, 48,153,130,234,242,246,234,254,246,230,245,139,111,190,126,246,244,229,217, -235, 87,231,151, 23, 55,119, 93,215,254,248, 59,223,251,201,143,127,119, 90, 87,219,237, 82,170,248,241,123, 71,159,125,231,253, -200,126,246,250,229,213,229,249,225,163,211,181,229,103, 79, 95,206,166,147,167, 47,207,222,188, 56, 63,110,154,195,102, 30,133, -128,198, 81,167, 16, 69,150,194, 58, 68, 0, 3,151, 50,199,128, 34,118,116, 98, 9, 33,136, 8, 16,211, 40, 85, 3,181, 84,142, - 71,230,230, 56, 94,208, 1,144, 2,170, 21,128, 24,160, 89,233, 8,142,151, 98, 70,115, 23, 66, 69, 65,112,181,180,220,180,253, -208,149, 95,248,166, 42, 15, 77,158, 53, 53,160,108,251,174,124,250,199,130, 44,141,149,198,114,122, 29, 93,110,224,234, 16, 36, -148,153, 0, 49,243, 72, 14,192, 29,150,170,216,235,148, 16,179,101, 64,102, 68,225,242, 44,114, 53,152, 84,177, 10, 33,171, 26, - 64,148,192,200, 40,129,131, 8,115, 73,183,112,145, 25,143,228,153,210,185,161,192, 36, 33, 34, 11, 0,140,159, 38,119, 66,246, -145,219, 2,133, 79,238, 14,230,102, 89,137, 9,145, 56,200,144,210,200,188, 65, 68, 32, 17, 6, 26, 79,159,187, 73, 7,186,121, - 96,146, 32,125,182,235,213, 42,160,157, 30, 28, 73, 12, 37,177,142, 72, 54,198, 14,137, 74,211, 5,129, 2, 49,138,170,149,210, -168,186,103,117, 68,172, 88,114,105,232, 3,104, 78,234,128, 0, 33, 4,117, 72,169,213,172, 49,132, 40,146, 77,165,144, 35,188, - 40, 81,105,204, 6,154,217, 8, 13, 54,220,145, 97,202,211,200,220, 7, 40,131,110, 34, 34, 4, 3,196,162,120,197, 17, 12, 89, - 6, 19, 37, 52, 9,142,232,136,196,140, 57, 15,140, 68,168,217, 81,132, 44,239,106,170,132, 84, 66,221,185,232, 62,160,152, 90, - 13,160,248, 0,132,196,124, 76,206,184, 39, 87, 47, 67,157,157,159,111, 55,212, 41, 47, 5, 65, 82, 0, 43, 44, 72, 80,176, 98, - 28, 0,244, 18, 0, 66, 0, 10, 12, 12,144,189, 36, 81, 68,138, 38, 79,203,204,222, 77,203, 44,173,252,235,145,184,164,119,147, -193, 71,159,188,255,193,211,151,207, 94, 60, 59, 57, 57, 61, 56,121,188,183,127,224,150, 62,120,252,240,127,253,223,255,254, 7, -223,255,222,201,233,254,235,103,207,194, 71,159,180, 93, 55, 95, 64,118, 37, 4, 2,115,237, 1,101, 92, 92,141,203, 27, 40, 21, - 39, 40,233,119,205, 72,100, 89, 1,193,114,118, 53, 3,119, 3, 14,145, 36, 32,178, 91, 46, 87, 59, 31,209,171,239, 2,172, 8, -224, 34, 66, 20,202,231,174, 0, 54,205, 11, 69, 58, 8,187,102,231, 72,150,147,230, 36,177, 86,119, 6, 7, 96,174, 88,189,143, -245, 44, 91,139,232, 34, 49, 78,103, 55,175,222, 16, 59, 73,104,151,183,243,189, 35,105,166,106,217,242, 48, 12,125,234,213,117, -136,181,152,218,182,107,219,161,235,186,238,228,248, 68,132, 52,231,146,190,154,204, 22,183,183,151,125,215,214,251, 15, 31,188, -255, 73, 12,184, 93,221,172, 90, 67, 14,195,176, 77, 41,247,237,218,161, 95, 93,191,110,102, 7,205,226,232,232,228,189,156,186, -246,254, 38, 19,105,183,121,246,230,108,185,221,198, 32,204,148, 20, 67,140,132,152,214,235,229,144,212,237,250, 46, 11, 19, 33, -181, 93, 95,133, 88, 5,190,184,189,249,135,175,191,254,201,236, 95, 77,234,104,154,219,182,111, 26,234,135, 13, 58, 74,172,212, -208,135, 62,214,139,245,237,219,189,163,163,105,228,155,126,227,161,233,123,103,142, 96,195,208,183, 36, 2, 2,140,184,183,152, -119,237, 6,144,133, 25,160, 2, 34,215,116,125,183,108, 66, 51,107,166,179,197,209,166,170,153,209, 45,128, 15,166,104, 68, 41, -119,161,154, 4,137,221,208,130,153,118, 43,166, 48,157,238,117,237, 18,133,177, 84,237,129,179, 51,199, 73,234, 90, 4,142,243, -227,106, 62,121,112,242, 96, 50,155,187,230,246,254,166, 93,111, 94,189,126,126,115,119,119,117,125,123,189, 92, 93, 94,223,174, - 54,155,110,232,191,255,193,251,127,240,217,103,155,245,181,204,142, 62,252,214,183, 63,120,114,184, 63,175,110,175, 46,174,206, - 47, 58, 77, 55, 55,203,231,151, 55, 81,232,250,126,121,246,230,178, 66,120, 56,157, 78, 38, 21, 9,155, 90, 0, 84, 53,102, 2, -240, 12, 10, 64,204,145,216,146,105,118, 47,128, 57, 67,140, 49, 16,146,249,200, 42, 41, 65, 94, 83,125,215,187, 6, 36, 38, 0, - 5, 0,138,129,186,161,117, 0,176, 28,165,178,242,153,195,226,254,180,130, 4, 30, 0,132,204,213,186,109, 63,228,108, 57, 33, - 82,227,209, 50, 76, 39,140, 36,217, 12, 0, 39, 85, 61, 88, 6,119,137, 66,128,134,216, 15, 57, 8,131, 3,137,184,186,162, 6, - 32,113,103,137,102, 89,193, 8, 17, 89,212,213,221, 69, 36,103,181,241, 74, 14,228,168, 38, 64, 84,177, 24,130,102, 3,183, 40, -164,154, 85, 51, 17,135, 66, 51, 20, 42,104,240,228,142, 88,132, 84, 86,140,224,229, 40, 64,204,165,152,154,178,199,200,230,224, -134, 85,164,172,217, 1,208,156,145, 11, 35,217, 44, 27,184, 16, 2, 71,119, 3,244, 97, 72, 37, 15, 97, 68, 37, 38,231,134,192, -104,102, 8, 72, 65,176, 16,145,203, 77, 60,235,114,181,246, 60, 28,236, 47,140, 16,204,144,201,178,185, 15, 18, 3, 98,116,205, -221,208, 49,115, 64,206, 58,246, 4, 16,209, 44, 3,208,164, 14,230, 88, 94,108, 65,100,200,102, 64,194,228,136,106,158,251, 14, - 11,162, 31, 57,144, 32, 41,255,237, 95,255,229,168,205, 40,203, 77, 87,252, 13,200,203, 71,156, 97,193,200,140,227,130,145, 44, - 38, 66, 84,198,234, 80, 22,239, 94, 66, 72,196, 5, 85, 52,226, 14,169, 68, 99,202,176, 29,101,189, 90, 41,201,162,174,199, 83, -187,249, 88,195, 65, 42,184,204,194,109, 40, 44,183,119, 14,115, 34, 65,112,179,140,224, 84,142,222,196, 8,246, 14, 20,143, 99, -197, 11, 24,145, 73, 80,200, 71, 55, 97,185,115, 32, 34,186,230, 2,231, 39,100, 48,243,221,184,125,199,211, 44, 46, 13, 96, 34, - 96,218,129, 4, 12, 49,224, 14,244, 79,196,199,123,139,207,127,249,213,100, 50,221,223,219, 55,181,245,118, 89, 5,121,254,252, -213,118,219,126,240,228,209,131, 7,239, 93, 95,158, 45, 14, 14,115,202, 28, 2, 19,169,230,172,153, 57, 72, 96,179, 2, 65, 26, -139,187,204, 2,200, 96, 14, 68,160,217,205, 76,251,178, 87, 32,166,157, 73,149,223,169, 19, 0,138,237, 10,128, 72,132,199, 37, - 56, 18, 33, 23, 19, 86, 97,106, 34,130,103,197,216, 52,211,137,131, 3,185, 52,181,165,150,235,202, 29,202,124,115,220,164, 56, -222,222,172,179, 99,195,126,252,224,244,249,151, 95,231,140, 28, 4, 93, 66,136, 65,196, 65, 17, 8, 67, 52,128,225,238,141, 14, -247,211,166, 73,217,223, 94, 94,159, 95, 93, 95,221, 92,255,193,239,253,233,199, 31,124,124,127,115,150,141, 79, 30,127,216,183, -219,183,231,111, 4, 82, 93,215, 39,143,222,191,191,185,186,191,189,201, 78,218,109,167,135,167,194, 18,171,169, 33,108,215,247, -158, 83,169,158,213,117,115,119,127,103,166,243,233,222, 63,126,243,236,237,253, 61,186,153,121, 70, 67,128,148,108,211,110, 10, - 21,206, 29,204,189,138, 33,155,170, 25,128,207,154,201,186, 79,131,230, 39, 71, 39, 81,236,228,224,176,237, 90, 85,213,220,229, -108,154,218, 62, 39, 79,121,189,186,173,170, 89,197,216,245,109, 55, 12, 70,209,135,142,131, 76, 39, 51, 32, 88,212, 53,135,176, - 90,223,131, 67,144, 56,164,222, 85,239,215,183, 93,238, 15, 38,147,189,189,195,242, 73, 8, 18, 28, 28, 72,214,171,251,106, 50, - 5, 75,154,250,186,153,110,182, 43, 3, 14,174, 8, 57, 84, 77, 64,148, 16, 99, 83, 51,210,122,179, 76,234, 15, 78, 31,169,106, - 93, 55,135,199,135, 31,127,255,179,163,211,199,211,189,133,229,225,234,237,249,219,139,179,103, 47,158, 63,125,241,242,217,155, -179,151,231, 23,231,215, 55,171,182,203,105,248,236,211, 79,254,245,239,253,235,233,116,222, 76,154, 15, 31, 31,125,255,211,247, - 16,242,139,175,190,188,189,186,186,190,191,159,158, 28, 17,230,179,139,203,171,171, 27,237,134,147,102, 50,173, 42,145,130, 89, -183,146,142,149, 16,220, 45,187, 17, 50, 35, 32,129,154,155, 3, 26, 48, 18, 7,137, 65,144,104,100,100,168, 1, 86,139,141,129, - 0, 0, 32, 0, 73, 68, 65, 84,130,102, 43, 63, 85, 87, 31,143,169,227,120, 26,213,180, 27, 6, 5,175, 37, 32, 98,214,156, 71, -128,107,185,146, 82,249,133,170, 99, 52, 53, 32, 31, 52, 13,154,163,132,170, 10,117,172, 38,117,237, 4, 64, 28, 40,102,183,140, - 14,232, 33, 8, 33,179, 68, 83, 39, 22, 66, 32, 39,135, 34,105, 98, 97, 33,225, 2, 50,171,132, 99,224,148, 85,147,149,222,103, -105,214,151, 47, 64,193, 3, 75, 93,213, 90, 42, 38, 12,133, 62,130, 5, 53, 72,100,142,117, 21,203,183, 15, 0,140, 24,130,148, - 67,150,186, 23, 77,102,137,249, 23,201, 39,135, 0,142,234,198,194,133,123, 85,202, 49, 6,227, 80,186, 28,195,145, 71,205,131, -153, 34,129, 68, 65,146, 64,104,170, 36, 92, 54,137, 72,104, 69,208,198, 50, 42,166,221,251,172, 55,203,245,193,108, 82,135, 9, - 51, 57,163,102, 39, 68,137, 21, 0,164, 46,149,162, 25,146,104,233,237, 7,113, 3,117, 21, 9, 84, 76,182,142, 33, 50, 66, 24, - 33,187, 68,238, 10,132,238, 20, 2,165,148, 5, 33,134,104, 14,201,141,255,167,191,249,203, 82,187,161, 82,161, 45,163,115, 55, - 48, 32, 10,165, 41, 90,198, 44, 5,150,160, 58, 98, 91, 0,188, 76,155, 16,138, 48,218, 70, 7,105,105,155,218, 72,161,132,209, -198, 81,210,136, 76,104, 87,183,235,211,147,147,194,224, 38, 2,116, 64, 97,166, 66, 46,251, 23, 3, 34, 64, 0,167,119,246,110, - 70, 4,125,215,123, 42, 80,223, 17,152, 75,236,230,160, 80,216,198, 68,164,154, 76,211,216,218, 66, 20,198,194, 86, 52, 0,116, - 35, 65, 36,216,153, 89, 70, 80,194, 56, 47, 49, 64, 66, 22,242,146, 54, 26,153, 55, 69,162, 66,102,190,127, 56,243, 33,189, 58, -127, 59,169,235, 16,107, 85,101,146, 38,208,255,251,171, 95,255,238, 15,191,255,222, 39,159,228,180,101,137, 87,111,207,231,211, - 89,187,188, 45,149, 49,102,114,135,178, 47,114, 51,176, 50,196, 50,183,177,245,228, 14,166,185, 16,140,115,210, 80, 85, 59, 87, - 54,239,232,207,229,255,166,196, 28, 88,180, 8,249, 70, 99,206,248, 93,143,164, 26, 0, 7, 15,205,172,142,226, 6, 82, 85, 96, -234,206,163,188,187,164,238,119,192,157,179, 23,111,186,118,179,191, 63, 63,122,116,250,242,233,203,238,254, 13,112,133, 4, 20, - 26,142,141,169,113,168, 72,104,216, 44, 1,117, 72,155, 73, 61,233,250,246,252,234,230,250,246,254,230,246,250,191,249,211,191, - 8, 54,228,172,205,116, 18,154,250,246,234,173,160, 15, 67, 63, 63, 56, 61,121,242,173,151,223,124,241,250,233,151,110,196,161, - 2, 77,195,230, 46,107,191,189,123,187, 56,122,172,219,229,122,121, 59,217, 59, 98,200, 57,219,225,209,233,237,242,230, 63,252, -244,243,118,232,199,220,106,105, 84, 70,169, 99,213,245,131,169, 57, 66, 29, 99, 55,244, 8, 88,135,202,213,137,169, 9,241,226, -246,110, 82,135, 71,251,251,136,218,109, 54,183,203,123, 96, 1,203,154, 53,212,245,222,116,166, 28,250,190,173, 98,112,228,108, - 94, 9, 91,234,205,180,226,200,238,205,164, 9,145,235, 48, 35, 48, 9,161, 79,195,221,122,233,200, 39,251,167,164,202, 18, 36, -212, 89,125, 24,218,205,250,114,232,250,102,190, 87,197,144,183,247,200, 1, 92, 83, 74,211,233, 52, 52,117, 93, 79,133,165,237, - 55, 34, 34, 92, 5, 22, 66, 48,144,110,187,110,154,230,232,244,248,131, 79,191,189,216, 91,196,186,218,172, 86,175,159,125,243, -236,197,139,215, 23, 23,175,206,206,222,188,189, 60,191,186,218,182,253,193,124,254,227, 79, 63,253,254,123, 79,126,240,233,119, - 7,205,145,253, 71, 63,250,206,241,126,115,117,254,242,205,243,231,113, 62,169, 79,143,159, 63,125,113,116,184,247,236,252,252, -245,171,139,125,146,189, 73, 45, 92, 70,186,160,142, 33, 22,154, 58,189,147, 43,141,193,129,221,196,148,152, 72, 4, 11,166,131, - 9, 12, 8, 73, 53,149, 87, 62,193,120, 20, 34, 38,179, 81,167, 60,104, 54,205, 66, 28, 37, 32,104,241, 52,215,129,213,156,136, - 10, 21, 88,152,193,161,207,217, 77, 5,133, 88, 8, 48,136,236, 77,167,117, 83, 35, 18, 2, 23, 28,121,209,125, 76,170, 74, 21, -115, 46,167, 58,100, 24,235, 47, 92,248,142, 65,178,153, 32,146, 16, 19,162,131, 89,130, 29,174,150, 9,137,216,220,221,140, 40, -148,216, 95,185,241, 75, 96,112,114, 7, 33, 98,102, 32,138,165,211,102,227,104,133, 17, 29, 10,218, 23,118,243, 0, 39, 34, 4, - 74,160,194, 44, 44,229,127,103,102, 68, 23, 17, 24,187, 54, 62,226,176, 16,152, 24,144,203, 4,149,152,153,196,199, 33, 15, 56, - 64,168, 98,153,120,144,160,148,182, 36, 82,209,109, 19,120,114,127,117,121, 51,139,116,188,127,224,194,110,134,136, 49,114,140, - 85,223, 15,174, 86,236, 87,238,238,121, 64, 17, 34, 42, 24,125,166, 17, 6,142,224, 66,108, 88, 90, 92, 32, 66, 57, 27, 33, 5, - 18,164, 50, 37, 19, 18, 2,132,192,108,102,242,206,145,100,136,224, 86,182,172,227, 42, 23, 12,208,137, 75,131,171, 0, 29, 93, - 2, 58,228,145,176,172, 9, 1,136, 25, 10, 75,169, 28,230,205,128,118,114,214, 29, 76,168,252,124,221,108, 54,155,194,245,178, - 27, 58,118, 37,178, 49, 97, 20, 16, 21, 28,209, 70, 17,108,233,124, 42, 32,169,103, 64,102, 0, 55, 68, 39,112, 29,149,212,174, - 99,239,137, 81,205,118,137,124, 99, 4,181,130,193, 33, 64,116, 5,231,241,241,233, 96, 14, 84,166, 28, 8,200,176, 43,235, 22, -217,110, 57,161, 51, 2,160,230, 81,120, 4,232,136, 10, 36, 56,234,169,176,107,211,247,191,253,225,215, 47,207, 95,190,122,249, -237,201,124, 62, 91,160,227,199, 31,125,252,244,229,235,255,243,239,255,225,244,193,195,201,108,255,235, 47,126,249,224,225,123, - 93,187,201,105, 80,160,138,104, 32,140, 36, 37,111,137, 68, 57,103, 82, 55, 71, 65, 41,163, 41, 32,112,203, 57, 39,116, 4,205, -169, 39,137,149,185, 51, 58,184, 97, 16,215,194,199, 23,112,207,166, 35,108, 64, 11,156, 33, 16,243, 14,121, 63,254, 58, 86,177, - 33, 22,140,194, 34,169,237,136,201,138, 92,197,203,219,133, 88, 8, 18, 58,168,185,203,100,110, 41,213, 85,213, 78, 14, 65, 38, -105,123,131,161, 54,197,126,121,198, 85, 67,213,158, 8,211,116,186,185, 87, 85,107,219,126,211,117, 67, 26, 66, 12,211, 40,171, -213, 70,152,166,211, 73,187,221, 14,171, 43,106,102,177,170,247,142, 78, 87,183, 87,195,102, 21,154, 57, 11,111,238,206, 86, 58, -196,208,204,246,142,193,141,208,103,135, 39,213,108,127,189,110, 45,111, 48,136,153, 62,123,249, 66,129,102,205,244,226,234,109, - 93,215,133, 82, 8,230, 65,100, 49,155,174,214, 27, 68,236,135,148,213,220,180,169,227,164,153,108,186, 77, 53, 13,123,211,217, -255,245,243, 95,109,187,238,163,195,121, 37,161,132, 43,234, 42,152,170, 33, 13,253,186,174,234,204,210, 42,228,172,154, 6,144, - 88,215,245,208,110,144,156,221,186,174,229,206,129, 36,185,166, 54,145,165,105, 12,117,211, 16,100, 64, 31, 82,175, 57,101,195, - 80, 79, 28, 98,202,221, 60,196,245,245, 69,108, 38,147,122,202, 28, 99,149,200, 7,203,230,161,114,181,170,154,149, 19,202,122, -125, 55, 12,219,106,114, 88, 53,123,167,239, 61,122,248,228,201,116,182,232, 55,203,243,215,207,206, 94,189, 62,187,120,123,113, -123,119,115,119,119,121,191,218,180,237, 65,221,124,231,147, 15, 63,124,252,164,169, 99,223,175, 57,196, 79,222,127,248,248,116, -127,232,150,175, 46,206,215,155, 85,159,252,242,242,170,190,185,190,188,186, 94,109, 54,235,251,245,227,249, 60, 20, 53, 18, 56, - 58, 82, 73, 52,162,140,199, 18, 80, 36, 36, 16, 53,117,179,210, 44, 66,216,181, 49,202,227, 14, 72, 34,244,125, 42,241, 18, 48, -119, 46, 43, 55, 6,240, 16,130, 35,108,219,142,129, 40, 4,203,218,167, 65,136,137,164, 10, 96,238, 18,130,187, 51, 50,153,153, - 57, 17,162, 82, 8, 4,128,145,163, 72, 36, 84, 38,180,241,108,103,105,232, 67, 44,158, 84,206, 25, 8,169,138,204,130,230,104, -230, 12, 0,110, 28,163,103, 69,178, 24, 72,192,145,176, 31,178,106, 18,146,119, 22, 33, 70,200, 14, 34, 1,208, 60,155, 21, 27, - 27,141,231,189,209,135, 60,254, 80,208, 0,204,129, 16,152, 72,213, 92,112, 7, 5, 3, 87,183, 29,124, 28, 5, 39, 40, 41,171, -186, 10,202,136,188, 53,200, 57,155,141, 93,246,146,216,241,172, 10, 30, 2, 59, 4, 40,221, 47, 68, 68, 86, 53,100,162, 82,237, - 47, 58, 16, 7, 66, 50, 1,114, 47,169,108, 36,190,187,223,214,228,199,251, 7, 78,168, 41, 23,236, 46, 34, 12,125, 63, 82, 74, - 0,134,148,235, 40, 70,177, 60, 63, 67, 36, 51,176,156, 1,140, 16,144, 88,221, 32,121,168, 36,101,203,217,132,209,140,212, 51, - 19,163, 84,134,217,157,221, 53,229,164,166,226,230,200,229,175, 0, 0,204,138,104,142,104,167,197, 24, 21, 76,184, 19,192,113, - 32, 79, 5,249, 40,101, 71, 90,152,239,133, 66, 94,108,161, 59, 52,226,206, 39, 90,182, 19, 86, 64, 99, 49,144,182,109, 95, 71, - 86,195,192,239,152,137,187, 3,185,187,187, 18,160, 26,136,144, 1, 10, 10,128, 22, 36,188,102, 39,114,244,114, 61, 49,119,128, - 92,166, 48, 86, 16, 60,229, 95, 15, 64, 44,193, 77,157,157,202,202,156,128,128, 25,203,109,130,119, 60,130, 82,203, 6, 87, 3, - 66,216, 25,167, 10,210, 43,131, 9,160, 3,227, 59, 31,172,153,154,197,102,254,253,111,127,240, 79, 63,127,126,176,255,230,193, -163, 15, 88,170,253,195,147, 31,125,239,123,255,219,223,255, 63,255,213,143,191,254,228,187,223,117,240,131,163,147,203,203, 23, -200, 81, 66, 68,142, 72,226,106, 32,240, 46,116, 84,118, 96,238, 78,204,230,142,217, 10, 54, 71,123, 5, 55, 75, 3,132, 26,137, - 93, 13, 36,184,250,191,184,213,112,185, 52,218, 59,218, 37,226,152,110,130, 18,115, 98, 66,145, 16, 20, 48,198,144,218,222, 13, -176,137,144,179, 35,128,161,155,162, 80,185,215, 72,156, 48, 13,221,242,206,225, 81, 86, 5, 14,192,128,213,132, 1,134,190,175, -247, 78,153, 99,187,221,138, 80,187,220,178, 59,130,175,182,109,151,134, 62,231,217,116,159, 53,229,188, 57,126,239,211,237,182, -239,218, 84, 77,246,185, 94, 68,134,163, 7,143,214,247,247,106,218,174,174, 39,211, 3,205,253,222,131,247,105,176,148, 7, 87, -247,193,218,110,123,176,191,104,215,171,170,217, 75,195,230,230,230,234,233,249,219,166,110, 14,103,179,245,118, 85,133, 42,105, - 42, 94, 89,115,143, 33,212,161,218,244,219,166,169,221, 53,185,223, 45,215,245, 73,112,164,235,229,234,112, 62,157,212,213,151, -175,206,186,182,251,240, 96,111,177, 55, 13,132, 39,139,253, 77,223,175,218,237,182,221, 74, 77, 49,198,126, 0, 17,202, 2, 8, -144,114, 15, 76,224, 57,229, 33,152, 99,140,203,212, 11,242,233,124,193,204, 67, 50, 96, 34, 51,181,212,200, 92,135,101, 93,205, -204,187,249,100,214, 49, 84, 85,157,234,169,170,222,223, 93, 30,157,190, 31, 67, 29,121,114,117,121,150,219,190, 34,168,166,139, -166,138,174, 67,136,117, 96, 58,122,242,112,186, 63, 63,121,240,164,174,234,245,205,229,171,215,207,158, 61,127,121,118,121,125, -123,191,186, 95,111,174,239,239, 45,231,143, 78,246,126,239,123, 63, 48,226,161,223,112,213,124,242,201,119,190,253,233, 7, 65, -240,234,229,179,139,179,203,193, 18, 52, 53, 82,122,245,236,185, 43,106,202, 77,109,139,195, 69, 25,137, 16, 65, 54, 98, 30,225, -236,234,170,134, 33,144, 57,128,122,225,254,101,208,146, 64,246,114,195, 35,226, 64,166,208, 89, 6,203,129, 37, 33,228,156, 66, -140, 10, 6, 64,181, 4,116, 75,110, 41,229, 32,194,194,105,232, 1, 53, 48, 23,201, 6, 35, 25,122,118,175,153,213, 61, 89,145, - 78, 80, 29, 74,137, 26,171, 42,106,214,164, 94,170,120, 96,104, 0,192,128,140,234,198,142, 8,196,194,224, 48, 12, 41,136,236, -158, 27,140,238,192, 36,129,201,205, 85,135,148, 11,222,124,112,171,163,168, 66,210,162,214, 3, 33, 30,178,103,135, 81, 59,228, -227,127, 34, 17, 46, 31,100, 83,181, 2, 58, 70, 68,214,172, 68,187,211,156,131, 3,134, 74,202, 5,130,136,137,204, 13,200,204, - 29,212,149, 70, 74,250,152,104, 1, 64, 46,211,255, 12, 0,206, 2, 77, 93,245,106,166, 25,156,204, 50, 87, 12, 25, 77, 45,198, - 74,213, 4,208,128, 28, 52,185,149,166, 15, 11, 33,210,122,219, 14,185, 61,217,223, 51, 7,204,218, 76, 38,125,206,160,166,189, - 1, 32, 6,198, 76,217, 83,168, 88,213, 76, 29,133,192, 69,179, 33, 32, 69,241,236, 92,158,131,238, 28,176, 27, 20,208,234, 74, -250, 1, 34,187,121, 51,164, 62, 4,239, 21, 1, 70, 61,105, 81,193,225, 40, 76, 68, 46,127, 27,101, 71,237, 69,223,236,230, 8, - 68, 76, 12,174,110, 6,164,197,144,142,166, 32, 82,228, 77,254, 27,159,198, 59, 10,217,111,196,208, 80, 80,127, 96, 78, 76, 68, -216,212,149,153, 11, 49, 22,213,159,146, 23,128, 39, 48,162, 35, 56,162,115, 89, 41,188,187, 79, 20, 90,129,107,129,206, 19, 9, -120, 46,143,227, 17, 8,108,138,200, 8,163,145, 21,203,177,151, 16,172,172,139, 29,161,100,244, 11,203, 12, 71, 42,227, 40,144, - 53, 47,138, 83,247,130, 49, 40,192,221, 48,102,103, 11, 74,167,100,106, 12, 28,179,234, 39, 31,125,240,213,243,179,139,243,243, -189,131,227, 73, 51, 93,183,219,135, 15, 30, 62, 62, 61,252, 95,254,143,255,244, 63,159, 28, 54,147,197,155, 23,207, 31,127,240, -248,234,205,107,102, 17, 33, 55, 51, 80,203,169, 24, 73, 88,196, 0, 65,117,188,152,186, 35,139, 64,157,144, 24, 45,119, 93,209, - 52,137, 48,114,220, 73,195,116,164, 34, 23,166,252,232, 62, 25,193,206, 56, 50,131, 20,128, 11, 14,193, 77,153, 37,247,189, 15, - 29, 86,209, 53,193,160,192,108,253, 22, 37,146, 8, 0,184,102,242,140, 4, 97, 50,147,201, 76, 98, 20, 81, 3, 16,105,210,246, - 30, 24,195,244,160,219,172,128,188,109,187,126,115, 27, 98, 5,140,171,237,198,134,164, 41,205, 23,199,117, 61,225, 89,213, 13, -105,221, 39, 75, 93, 53,221,203,214, 79,247,142, 99, 8,106, 58,217, 59,124, 88,205,114, 82,174, 14,114,223,131, 41,152, 57,113, - 66, 55,199,251,251,187,147,211, 7,203,219,219,205,242,246,238,250,106,147,242,219,235,243,166,122, 60,105, 38, 67, 74, 65, 68, -205, 1, 28, 13,204,117, 58,157, 40, 89,223,103, 85, 96,196,236,126,123,191,137, 18, 3,162, 3,238, 77,231,142,240,242,230, 90, -136,226,164,222, 91,204,212,146,165, 36, 66, 33, 78,182,109, 91,155,166,182, 91,183,247,179,189, 83, 55,243, 80, 87, 8,109,223, - 17,210, 54,117,158, 83,110,183, 15, 14, 14, 55,155,123, 51,152,204, 15, 2, 7,100,153,198, 25, 34,187, 97,183, 90,198,201,124, -190, 56,246, 13,119,171,101,140,149, 35,247,166,235,237,221,222,252, 96,181,186,203, 89,171,122, 26, 5,187,190,243,212,181,155, -155,189,195,147, 71, 31,127, 58,153, 79,246,247,143, 35,194,205,197,171,103,207,159,191,120,245,250,213,219,183,183,247,203,219, -229,170, 29,210,188,150,223,255,193,143,143, 23,115, 99, 9,213,164, 2,255,157,207, 62,249,232,227,199,171,235,219, 23,175,158, - 65, 32, 58,156,222,126,243,234,120, 86,221,111,187,155,171,213,241,180, 57,158, 77, 2, 81, 45, 98, 96, 93,118,100, 12, 60, 66, -141, 0, 81,161,216,174, 75,185,194, 10,105, 73, 28, 74,222, 3,137,136, 4, 17,204,212,129, 24,144, 66, 72, 41,169, 26, 49,103, -205, 33,132,170, 18, 52, 77,110, 8, 24, 43, 41,212, 0, 4,100,150, 52,100,183, 44, 18,156,209, 82,170, 42, 65, 96, 27,134, 66, -163,170,132,218,172,129, 8, 9,135,148, 53,103,148, 82,197, 35,119,143,145,220,105, 72,137, 35, 5, 10,160,158,221,208,113,132, - 59, 10,169,142, 20,115, 68, 24,122,205, 41,177, 20, 61, 27, 50, 50, 69, 73,125, 50,115, 97, 20,230,148,181,207, 3, 49, 86,129, -209,160,207,138, 8, 21, 81, 54,199,209, 26,104,102,206, 4,204,156,212, 8, 29,120,100, 1, 23,112, 13, 19, 13,230,129, 3,128, -165,161,175, 39,181, 57,112,208,146,138,134,113, 42, 93,240, 90, 46,129,221,201,114,166,128, 18, 42, 53,216,118, 67,153,198,184, -230, 16,196,140,132, 12, 24, 16,172,140,162, 84, 53,165,140,239,198, 58,228, 76,190,110,251, 58, 72, 85, 69, 71, 38,162, 97, 24, - 8,201, 0, 49, 2,170,105,118, 2, 19,145, 33,165, 18,145,100,226,100, 10,110, 33, 70, 80, 76,150,145,168, 72,104, 53, 91, 19, - 17,101,178,109,251,200,146, 53, 39, 29, 28, 49, 37, 5, 55, 32, 32,163,170, 38,221,244,252,183,127,243, 23,136, 94, 34,231,163, -181,179,224,250,119,109,161, 2, 46, 64, 7,100,148,130,200, 4, 43,206,168,146,100,218, 89, 64, 97,236,158,142,208, 94,192,127, -129,120, 41, 27, 90, 40,113, 65,130,109, 55, 76,167,147,146,213, 7, 47,203,107, 42,153,152, 2,207, 42, 73, 33,102,193, 82,157, - 47,143,177,242,180,221, 93, 49, 9,101, 44, 92,185, 58, 24,143,108,173, 50,174, 22, 0,231,241,116, 91,250,159,176, 27, 56,161, -131, 16,218,152, 47, 26,177,198,180, 75, 43,226,200,177,183,194,246, 26, 49, 1, 14, 8, 62,120,185,240,185, 75,168, 38, 21,125, -241,205,203,138,121, 54, 95, 8, 11, 16, 76,131,252,236,139, 47, 31,156, 30,255,241, 31,255,201, 55,191,254,220, 73,134,161, 11, -165,244,140, 72, 44,136, 78, 28, 36,196, 50, 94, 14,194,136, 50, 38,151,208, 1,164,100, 67, 37, 70,169, 42,150,138, 99, 45, 81, - 70,106,194,206,190,234, 56,150,120,223,185, 38,199,151, 16,122,137, 84,130, 57,133,106,118,112, 12,224, 88, 0,205, 54,250,182, - 65,196, 52,203,100, 66,132, 96, 54,180,237,197,203,179,118,187, 57, 56,125,180,127, 56, 63,123,113, 54,116, 27,196,104, 58, 12, -237, 38, 84,117, 78, 67,191,185,219, 44, 87,174,234,233, 46, 84, 21, 17,190, 62,123,115,189,218,220,222,221,126,252,225, 39,223, -249,248, 83, 71,186,189,189, 71, 79, 58,172, 60,171,154,205,231,243, 88, 87,171,155,243,155,179,111,230,243,253, 42,152, 97,204, -125, 23, 24,182,203,155,102,118,184,190,191,137,161,210,172,169,111,207,206, 95,111,251,237,203,243,243,151, 55,247, 65,228,250, -238,118, 59, 12,219,109, 59,169, 38,165,146, 32, 32,229,196, 80,133, 0, 0,253,208, 23,197,109,223,247,106, 26, 99,197,132,219, -190,223,155, 78,131,212, 23,119,183, 19,161,121, 85, 53,177, 74, 67,151, 12, 17,161, 27,210,102,187, 33,176,166,170, 99, 12,132, - 54,105,166,197, 6,147, 0, 1,112,194, 52,141, 49,153,129,219, 98,255, 84, 24, 7, 29,136, 48, 6,206, 67, 74, 41,183,237, 38, -132, 73, 93, 85, 44, 53, 73,236,186,117,201,207, 78,154,217,124, 18, 87,155,109,172,103, 64, 50,164,109, 63, 36, 34, 90,236, 31, - 28, 63,121,252,240,225,163,217,100,106, 58, 92,189,125,243,213,211,103, 95, 62,125,246,226,236,252,252,242,230,122,117,143, 14, - 63,252,214,135,127,240,233, 39,123,139,253,205,118, 21,132,190,251,237,111,253,209, 31,253,238,222, 94,115,117,246,230,155,175, -191, 0, 9, 91,180,175,190,126,186, 93,183,183,247,203, 87,223,188, 60,156, 78, 15,167,211, 42, 10, 0,149,155,188,136,148,222, - 80,233,156,184, 2, 49,169,169,187,150,176, 29, 51,141,170, 81, 44, 24,118, 34, 41, 55, 84, 18, 17,119, 27,178,149, 5, 25, 17, -138, 68, 2, 24, 6, 29, 17, 43,204,133, 73, 48,202,209, 10, 10,195,177,100, 27,132,216, 84,135, 33, 19, 99,249, 67,221, 65,136, - 75,131,143, 9, 57, 72, 29,164,244, 31,203,116,222,202,209, 36,169,149, 76, 98, 1,237, 49, 17,162,154,151,248, 32, 18, 20,138, - 12, 49, 51,113,100,108, 38,196, 12,110, 6,110,197, 47,148,114, 86,117,145, 17,163,224,136, 34,130,196,227,133,188, 64,234,125, -100,172, 91,249,230, 72,202,216, 23,118,157,111, 34,140, 65,220,192, 13,152,197,204, 11,122,182,184, 46,204, 33,231,236,217,198, -254, 60, 35, 3,141, 30,134, 29,140,135,139,110, 72,184,244,219,205, 60,231, 84,118,168, 35, 92,171,188,119,221, 0,144,200,174, -239,219,156,250,199, 71,199, 18,171, 50,222,160, 18,157, 96, 44, 52, 97, 36, 2,194,156, 51, 17, 74, 96, 4,204,170,196, 68, 44, - 59,139, 27, 2, 98,202, 58,174,226,128,204,149, 0, 82, 78,230, 10,238, 69, 61,173,166,104, 30, 16,213,161, 75,189, 20, 46, 57, -148,124,236, 59,241, 16, 24, 2,141,204, 1,216, 1,249, 93,221, 17,202, 36,216,208, 11,134,146,120, 23, 63, 87, 32,222,205,102, -156,118,235, 85, 3, 45,175, 0, 40,151,109,182, 16, 48,111, 50,161, 91,113,184, 18, 34,216,136,138,223,233,141,202,142,220,221, - 60,165,145, 58,134, 82,158, 97, 5, 44,236,224,128, 54, 46, 13,112,252, 2,193, 13,140, 92,208, 45,227,206, 72, 58,230, 80,136, -212, 20, 28,220,148,133,124,124,165,149,128, 13, 58, 58,168, 2, 49,144,153, 35, 59, 32, 35,170,145,176,131, 33,102,247,113, 69, -235,232,136,226, 0,223,250,240,189,215,175, 46,159,189,126,189,119,116,122,124,112, 60,228,116,120,116,242,209,227,199,127,255, -159,255,233,147,247,159,204, 14, 78,187,245,122,211,182, 77,108,204,198,223, 99, 36, 25,221,229,229, 70, 88,238,143, 76,105,200, - 60,198,151,194, 24, 30, 34,118, 36, 22, 6, 51, 51, 37,100, 22,210,108, 37,226,227, 8, 76,130, 12,174, 62, 42,253,136, 2, 22, -220, 27, 1, 3,145,132, 42,166,190, 7, 55,116, 2,114, 20, 97,150,212,117, 82, 53,136,168,109, 79,130, 6, 56, 12,131, 90,206, -121, 0,112, 10, 50, 12,109, 85,113,234,219,122,182, 31,235,250,238,230,162,221,172,211,160, 16,132, 9, 37,136,153,247,125,118, - 51,115, 60,168,130, 8, 95,221,109, 73,162, 19,181,155,139, 24,115, 53, 91,196,170, 78, 93,207, 28,166,123, 7,174,221,197,211, -159,206, 30,126, 70,177,202, 67, 27,226,116,232,183, 33,134,170, 10, 60, 9, 8,118,116,242,208,146,254,211,175,190, 94,183,173, -106,142, 85,125,125,127,217,246, 29, 35, 45,246,102,160,108,168,163,155,209,113,214, 76, 82,233, 8,102,171,170,208, 15,185,237, -251,131,249,236,106,185, 92,109,214, 85,172, 76,253,243,215,111,212,108,218, 52, 68,146,186,252,224,248,192, 29,134,102, 50,227, -188,152,206,215,109, 50, 75,132,118,151, 7,205, 57,109, 54, 33, 68,101,234, 52, 75, 53, 5,224, 62,117,145,188,150, 70, 45,109, - 87,173, 84,205,116,126, 80, 87, 13,199,208,247,171,118,187,241, 48,161, 80,187, 57,176, 19,134,183, 23,103, 32,181,196,202, 28, -215,203,117, 29,235,199,239, 63, 62, 57, 57,217, 63, 60, 66,130,229,205,117,219,109,159,189,120,243,197,179,103, 87, 55,183,151, -119,119,247,171,245,195,195,131,127,253,163, 31, 46, 38, 21, 98,216,182,221,147, 39,143,254,240, 15,255, 96,182, 55,187, 57,123, -253,246,197, 43,170,164, 53,171,192,191,254,229, 87,183,171, 13,171, 47, 98,245,222,209, 17, 34, 25,162, 21, 91, 3,148,150, 56, - 56, 18,144, 23, 87,133, 19, 22,127, 61, 18, 33,163, 20, 57, 76, 49,113,176,101, 51, 36, 42,151,114, 70,212,148,152,131,144,185, - 27,139, 20, 18, 84, 57,200, 19, 82,206,137,208, 74, 63,221,205, 84,141, 4, 20, 52,132,128, 14,157,246,132,224, 74, 49,144,187, - 39, 29,132,136,145,204,119, 68, 39, 2, 17, 6, 36, 6, 36,194,156, 70,213,154, 32,230,114,229, 54, 99,137,229,168, 84,172, 32, - 37,196, 65, 14,217,115,145,183, 89, 9,116, 40,136,160, 57, 48, 9,244,222,165,196, 33, 84,130,185, 48,164,152,193,156,208, 17, - 9, 28,187,161, 39,148, 16,131, 59,100,176,194, 44, 1,112, 5, 45,167, 79, 69,140, 81, 0,217,114,202,217, 16,133, 3,152, 57, -149, 7, 17, 96,168,234,161,239,221, 44,103, 85, 65,231,152,250, 97,218,230,166, 26,241,173,101, 58, 33, 18,134, 60, 8,113,172, -106, 53, 53,119, 36, 10, 33, 20, 82, 74,113,110,131, 38,224,236,224,236,184,105,245,118,181,124,255,112,143,130, 12, 73, 53,229, - 80, 69, 14, 1,204,221, 13,171,106, 72,189, 14,137,133, 57, 4,200,166,217, 68, 48,114,116,194,220,182, 18, 5,153,115, 2, 51, -101,230,148,180,138, 76, 84,126,224, 86,248, 96,142,230, 68, 6, 10, 0,217, 92,125,168, 36, 84, 18,248,111,255,234,223, 22,188, - 4,130,145,196, 18,105,247,223, 96, 99,220, 45,151,102,177, 67,129,179, 48,150,226, 37, 33,243,152,163, 25, 5, 67,133,162,190, -227, 12,239,216,140, 59,146,243,248,230,244, 24,248,254,110, 57,159,205,137,208,137,220,157, 75,244,222,169, 48,136,177,212,247, -203, 11, 1,125,135,141, 20,119, 27,209,232,163,119,148,113,244,131,148,222, 6,150,238,217, 46, 86, 50,106,194,139, 43, 29,208, -203,124, 9, 11, 58,125,196,178,235,142,130, 9, 64, 99, 90,157,145,129,128,169,152,177,199,253, 9,128,161, 19,145, 20,202, 57, -146, 27,242,147,135,135, 95,125,253, 18, 29,231, 7,251, 37,149, 22, 9,126,249,213,211,195,197,252,247,255,248, 79, 89,252,201, -183, 62, 6, 75, 67,159, 37,196,113, 13,129, 94, 74, 6,166, 94,202,124, 86,128, 97,101, 54, 88, 38, 93,128,194, 34,177, 54, 45, - 27, 32, 41, 60,168,178, 62,197,194,147, 46,135,148, 49,236,244,206,233, 42, 68,232,142,194,113,236,223,231, 68,147,154, 56, 32, -139,182, 27, 4, 96, 97, 27, 6,138, 21, 32,181,171,246,226,237,205,208, 15,135, 71, 7,199, 15, 14, 95, 61, 59,115, 16, 64, 4, -142, 66,182,221,220, 1, 5, 27,202,245,183, 21,204,205,100,218,181,237,243,215, 23,155,174, 95,109,214,191,255,227,223,137,177, -238, 84,171,186,217,110,182,142, 74, 50,109, 22, 7, 15, 30,191,135, 0,200, 28, 66,163, 82, 85,211,125,145, 10, 88, 8, 40, 86, - 49, 15,195,116, 58, 31,134,141, 43,133, 56,177,220,159,189,126,246,205,213,165, 57,108,219,109, 63, 12, 65,120,221,118, 67,202, -154,117, 82, 53, 76,187,139, 10, 0, 19,215, 85,181,221,118, 41,167,194, 74, 83,205, 65, 24, 0, 55, 67,234,115, 58,156,207,213, -248,110,189,221,111,164, 31,146, 33, 12, 67,222,110,151, 7,243,153,231,182,213, 84,197,166,215,244,118,121, 43,192, 7,211, 57, - 7, 1,162,170,170, 73,234,162,192,117, 2,194, 88,178,166,243,197, 1,152,170, 42, 17,230,148, 2, 85,235,118, 11,224,192,113, - 58,169,137,176, 31,134,118,181, 58, 56,122,220,181,119, 65,234,201,116,250,254,183,222,127,242,228,201,241,131, 39,200,184, 94, -223,191,189, 56,127,254,252,245, 23,207,158,189,188,184,184,190,187, 27,134,244,195, 15,159,252,249,239,253, 94,141,116,183,186, -147, 88,127,255,179,239,252,228,223,252, 4, 65,159,127,241,243,182,235, 14, 63,122,239,171, 95,127,121,116,122,216,131,254,242, -139,167, 13,242,233,222, 94, 16,174, 98, 33,111,163, 3,198,200, 68,193,193,134,156,133, 68,132,163, 84,230,214,165,158, 74, 60, -128,202, 30, 30, 75,112, 86, 42,210,221, 66,140, 9, 5,195,224, 57,198,138, 0,128, 40,196, 88,254, 81,182, 44, 36, 0,160,102, -204, 92, 14,188, 99,163, 5, 16,208,103,117,227, 0,170, 25,221, 4, 2, 51,155,155,102, 37, 4, 34,204, 96,104,238, 4,117,224, -193,193, 29,155,170,118,192,156,179,155,197,170, 22,192,193,178,234,144,213, 3, 11,128,169,187, 8,163, 35, 35, 40, 64, 49, 79, - 16, 11, 83, 49, 2,138, 26, 40, 50,123, 80,132,161,119,115,107,154, 72,200,155,148,104, 7, 1,136, 65, 12,209, 13,250,156,144, -160, 14, 21,160,113,144, 29, 66,203,119,174,185,210,123, 97, 9, 65,115, 46,113,240, 40,236, 4, 68,200,140,229,248,203,228,224, -216, 37,133,189,189,227, 15, 63,118,162,233,209,254,182,239, 60, 13,149,132,242,136,231, 42,152,102,102,138,177,241, 34,133, 5, - 10,129,205,157,133, 98,168,145,137,136, 68, 2,185, 27, 88,202,249,102,189,158,197,176,183, 88, 40,129, 48, 85, 85, 99, 96,238, - 26, 67,148, 24,135, 52,184,186, 4, 97, 9,102, 90, 80, 5, 33,196,108,234, 73, 41,112, 54,232,219,174,174, 36,214,181,185, 49, - 99,224, 80,172, 80,224, 86, 70, 82, 37, 89,164, 6,105,232, 34, 83, 12, 81, 36, 12, 89,249,239,254,230,223,149,155,203,168,152, - 48, 55, 47, 46, 36, 42, 48,229,241,244, 75,165, 4, 84, 18, 47, 69, 41, 50,190, 0,138,102,200, 84,113, 7,186,255,205,240, 32, -251, 8, 57, 68,128,209, 38,141,194,114,115,119, 23,235, 70,202,216,164,136,149,199,151, 45, 20,120,157,255,102,182,236,102,134, - 40, 5,248,136,192,224, 90, 52, 78,224, 86,172,176, 99,207,110,215,204, 31,149, 91, 35,210,101, 71,151, 87, 45,119, 81, 87, 21, -166, 29, 14,186,132, 94,199,187, 23,224, 78, 38, 69, 64,130, 96, 14, 6,158,179, 23,196, 40, 16,113,112, 52,128, 92, 42, 12, 33, - 78,132,245,215,223,188,152,207,102,211,217, 66, 85, 69, 36,117,253, 23,223, 60,253,206, 71,143,154,217,222,211, 47,254,249,213, -235,179,217,164, 97, 33, 34,118, 85,150,186, 84, 67, 72, 4,119,248,156,113, 40, 8, 94,138,178, 68,236, 8,110,137,136,199,236, -100,217,250, 35,192, 24,231, 31,191, 57, 83,123,167, 83, 4, 0, 0, 67, 98, 68,169, 38,211,122, 58, 51, 55, 10, 97, 44, 34, 32, -131, 25,215,117,217, 68,129, 59, 50,101,213,155,183,183,128,188,152, 53,251,135,123, 95,127,254,179,156, 83, 30,218,178, 92,108, -183,219,118,179, 74,195,192,210, 68, 78,149,216,100, 50, 91,175, 86,231, 23,111,239,214,155,190,239, 62,251,214, 39,235, 28,154, -233,193,116,214,104,234,209,114, 61,153, 30, 61,122, 63, 72, 76, 67, 87, 46,145, 55,103,111,246, 15, 79,134,187, 55, 85, 93,117, -171,107, 98, 86,245,170,153,185,235,221,197, 11,115,208,212,255,226,203, 95,127,125,113,217, 84, 53,184, 95,223, 47,137, 1,129, - 82,202, 41,107,100,170, 98,133,227, 26,197, 1,161,212, 77,187,161,119, 3, 38,202,170,219,174,175, 66, 96,166,229,106,125,114, -112, 52,155, 86, 73,253,205,213,125, 19, 4,137,186, 52, 12, 89,217,237,126,185,204, 40,119,109,219,246,105, 94, 77,132, 5, 17, - 24,189,138,145,128, 85, 19, 19,228, 62,183,219, 21,179, 68, 65, 70,234,251,126,181, 93, 71,230,126,187, 76,106,219,110, 45,113, - 98, 72,129,104,187,190, 95,223, 95, 87,147, 61,142, 97,187, 93, 70, 9,199,167,199,239,127,248,240,209,163,247, 66, 93,117,219, -213,253,253,213,171,231,175,159,191,126,243,229,203,215,207,222,156,173, 54,237,209,108,246,147,223,250,193,191,250,244,187,219, -161,223,164,116,184,191,255,147, 63,249,253,143, 63,253,240,250,226,205,179, 95,253, 42,206,103,241, 96,246,171,159,255,242,238, -126,121,125,183,252,197,207,190,124,114,120,112,180, 55, 33, 42,149,204,157,224, 30,177,232,109,136,136,153,132, 66,193,252,154, -231,114,220,226, 29,228, 5, 9, 11,253, 36,231,172, 59, 84,118,193,248, 49,145,170,230,156,153, 48,231, 60,168, 85,204,204,108, -106, 99, 6,112,247,108,124,247, 73, 14, 33,164, 60, 56, 88,202,137, 72, 0, 32,171, 5, 41, 59, 87,178,172,194, 12, 68,197, 48, - 19, 89, 2, 99,182,162, 55, 34, 44,122,107, 51,115,235,186, 54, 48, 3,148,103, 42, 0,144,250, 56, 76, 41, 42, 77, 38, 52,181, -130, 39, 35, 70, 32,108,219,108,169,112, 99,112,200,102,238, 2,196,196, 10, 24,136, 71,214, 58, 88, 25, 40,101, 27,112, 76,206, -193,152,108, 30,143, 79, 20, 99, 44,172,180,130,180,101, 36, 3, 39, 66, 97,212,108,106,227,136,118,221,246,188,183, 56,253,240, -195,215,175,207,126,241,249, 47,117,232, 6,135,161,109, 39, 76, 37, 33, 3, 6,196,140, 72, 67, 26,136,184,142, 21, 10,231,148, - 74,241,189,132, 80, 89, 68, 85, 83, 30, 8,168, 27,172,107,219,147,189, 61,138, 1, 29,153, 48,229, 30,220,202, 3, 54, 21,174, - 53, 97, 78, 9,192,153, 69, 66, 64,112,115, 3,116, 18, 54, 51, 52, 11,149, 56, 16, 2, 72, 12,106,224,166,170, 94,222,145, 8, - 32, 18, 3, 65, 55, 40,130, 51, 19, 11,153, 58,130,105,118,254,219,191,250,139,114,235, 39, 34, 40,110, 39, 44,250,164,241, 27, -222, 9,162, 10, 72,160,244,160, 0, 28,184, 44,251,192, 10,218,144,136,220, 0,242,120,133, 25,161,137,163,103,124,204, 74,150, -147, 38, 11,231,190, 85,140, 77, 32, 96, 66, 26, 17, 6, 99,223,169,156, 84,137, 0, 73,136,118,211, 69,212, 2,189,113, 99, 70, -112,163, 93,135,179,240,139,127,211,159, 45, 30, 13, 23,220,181,148, 70,142, 36, 90,121,203,149,166,214, 72, 10,222,169,172,199, - 79,196, 88,133, 2,164,209,137, 87,102,124,192,132, 72, 94,244,214, 60,210, 48, 16,193,204,247,231,147,179,243,183,203,213,102, -177,191,215, 76,102, 6,214, 84,225,151, 95,127,211,109,183,191,253,219,191,181, 89,221, 29, 28, 61, 58, 57, 61,190,191,190,110, -166,115, 68, 50, 51, 34,161, 81, 15, 89,122,218, 12,163, 40,158,222,121,177, 97,100,254,184,103, 29,241, 14, 0,174, 90,190,141, - 29, 63,109, 12,137,151, 2, 55,114,160,114, 23,113,111,230,123,210, 52,174,234, 90,198,127,228,110,204, 2, 14,150,148, 8,213, -140, 0,134,110,184, 95,174,171,201,100, 50,173,143,222,123,120,241,242,213,182, 85,228,144, 54,215,201,121,115,249,114,200,192, - 97,226,158,154,104,211,105, 83,207,246,110, 46,175,222, 92,190, 93,110, 58,176,252,225,123,159,196, 88, 31,157, 60,212,148,182, -247, 23, 44, 18,235,186,105,154,155,139, 87, 57,219,226,240,232,246,229, 47,110,175, 47,165,158, 69,242,197,193,131,118,115,159, -213,235,201,140,114,187,217,172,235,217, 65,168,234, 77,187,250,249,151,191,126,121,121, 53,153, 76, 98, 85,119,221,118,211,118, -204,148, 82,114,176,110,200, 44, 88, 87, 77,153,166, 33,161,186,243, 56,136, 76,229,173,172, 94,134,242,142, 64,109,223,214, 49, - 62, 60, 62,185, 90,222,247,195, 80, 7,100, 32,116,157,206,230, 30,235,117, 55,228,182,159, 68, 86,237,212, 97,179,109, 1, 16, - 29,134, 60, 48, 7, 51, 95, 45, 47,103,243,253, 89,211,112, 96, 52,239,115,150, 88,245,125,127,115,115,141,104, 36,141, 84,149, -112, 68,235, 84,109,182,127, 84, 85, 53, 73,156,207, 22,143,223,123,252,224,225,241,124,190, 24,210,176,186,191,123,115,246,230, -217,179,151, 95,191,124,241,213,139,151,175,222, 94,244,195,240,221, 7,199,127,248,217, 15, 30, 30,157,172,214,183,125,238,255, -228,143,254,240,119,126,239,183,173,239,159,125,241,139,126,232,223, 92, 94,118,195,246,243,207,127,169,174,151,175,222, 6,243, -227,189, 89,211,196,210,207,200,238,129,199,250, 76, 89, 67,141, 45,118,226,146, 81, 99,161,162, 51, 67, 26, 9,168,238,227,156, - 56,171, 21,155, 88, 54, 67, 0, 70, 76,217, 68, 8, 1,133,169, 79, 57,229, 36,194, 99, 52, 15,137, 9,133,201,220, 9,108,188, - 89, 50,185, 90, 63,100, 65, 43,169,110, 71, 80,240, 74,216, 71,140,107, 25,242, 19, 17, 79,235,134,168,100, 21,160,220, 77, 75, - 90,180,124,196, 66, 8, 69, 93, 29, 99, 32, 14,128,165, 40, 68, 14, 72,142,129, 17,198,171, 54,150,165,145, 59,164,108, 34,236, -160,105,116,191,130, 0, 50, 11, 2,150,180,123,249, 34, 89,100,220,157,130,149,250,163,170,250,144,251, 33,187,153, 89,102, 47, - 39, 81,218,177, 16, 32, 48,227, 46, 45,170,102, 44,140,174,125,202,105, 50,121,244,254,251, 63,253,233,207,255,241,167,159,111, -218,237,237,122,141,142,219,161, 61,153, 76, 41,136,132,192,210, 32, 26, 22,141, 38,128,153, 26,128,169, 18, 51,193,184,137,244, - 17, 65,195, 14,112,185, 92, 78, 34, 77,103,179, 18, 25, 47,179, 70,115,207, 89,153, 41,112, 96,102, 43,207,207, 49, 42, 81, 78, -183, 96,166,132, 32, 49,142, 51,132,194, 60, 40,210,214,242,100, 34, 34,192, 32, 92,164,165, 44, 72, 28,213, 64, 45,187, 25, 34, -171, 41,255,251,191,254,183, 35,131, 19, 1, 92,203, 73,121,231,158, 53, 24, 97,133, 64, 59, 93, 86, 41,185, 50,142, 43, 73, 4, - 26, 3,167, 59,242,139,163,185, 25,145, 3,252,102,156, 15,217, 74,204, 31, 8,136,208,115,191,237,243,108, 49,113,117, 32, 67, -167,221, 49,116,172, 30, 16,130, 32,171,155,131,141, 1, 24, 36, 66,231,209, 27, 98,165,149,244, 14, 30, 89,106, 84,227, 94,165, -252, 87, 30,215, 61,229,246,224, 72,110, 99, 84,114, 7, 87,240,119,192, 25, 66, 32,122,215,168, 69,183, 49,145, 96,232, 69, 37, -136, 8,133, 19, 91, 82, 70, 37,203,233, 14, 34,113, 58,169,126,249,229,243,166,106, 22,139, 57, 35,106, 78, 85,160,255,251,167, -255,252,157, 15,158, 12, 67,191,186,191,155,237,237,245,221, 22,176,200, 61,136, 88, 28,129,144, 29,128,136, 17, 75,124,200,223, - 37,147, 67, 8,190,251,109,165, 81,217,190,219,107,104, 42, 91, 96, 98, 26,239,220,184, 83,211,240, 88,103,115,208, 73,179,143, - 8, 33, 10, 32, 2,104,145,113,199,197, 47, 76, 0, 0, 32, 0, 73, 68, 65, 84,195,248, 66, 40,160, 78, 34,166,110,219,157,191, -122,189,190, 95,205,102,179,227,211,163,103, 95, 61,237,146, 78,234,122,179,188,202,198, 64,229,202, 41, 81,112, 90,195,222,209, -233,100,186,215,110,150,111,206,207,151,171, 21, 75,252,173, 31,255,164,170,136, 73, 55,219, 13, 87,147, 88, 77,167,251, 39,251, -135, 15,150,119,183, 55,183,215,148,182,179,131, 19,237, 59, 53,219, 59, 60,105, 55,203,205,166, 77,125, 91,133,234,249, 23,255, -153,171,249, 98,113,220,109,238,239, 87,203,175,207,223,100,131,182,221,204, 39,115,100,124,123,117,221,118,189, 35, 16,146, 1, - 12,195, 16, 67,140, 18, 75,134, 23, 25,205,188,142, 49, 74,220,246,189,219, 88,196, 31, 82,142, 44, 76,156, 52,149,157,206,221, -182,237,134, 97,209, 76,246,246,231,153, 48,245, 3,154, 7,118,142, 77,219, 13,128, 24, 34,103,215, 62,229,108,144, 85, 75,110, -162,106, 26, 4, 77,253,160, 57, 3,147,165, 52,168,239,237,159, 90,110,251,118, 53, 91, 28, 48, 34, 19, 79,166,243,161,223,110, - 55,203,147,147,147,135,143,143, 22, 7, 7, 36, 52,116,253,106,181, 60,187, 56,123,245,250,213,211, 87,103, 79, 95,189,121,123, -115, 51,171, 39,127,252,217, 15,190,245,232, 9,177,220, 93,159,125,255, 7,159,253,215,127,252,147,211, 7, 7,103, 95,127,211, -110,239, 19,249,245,205,237,254,201,225,170,237,159,125,243, 2,187,116,180, 55,221,155,213, 33,160,144,164,108, 36, 20, 72,138, -212,162,216,208, 10, 94, 27,129,193, 93,221,153,216,204,204, 29,193, 8,139, 11,201, 3,133, 33,231,119,147, 83, 51, 35, 36, 34, -206, 57,215,117, 40,115,155, 97, 80, 70, 12,145, 45,229,162,244, 9,204, 62,218, 24, 80, 77,199, 90,148, 91,145, 27,147, 8,131, - 24, 96, 12, 66, 88, 74, 36,132, 36,136,164,230,204,197,116,138,217,181, 92,248,153, 48, 23,233, 23,151,135, 17,187,155,112, 25, - 50, 11, 19, 0,161, 57, 48, 35, 11, 23,252,139,169, 2, 16, 49,169,101,115, 51,164, 32,140,128,142, 76,129, 3, 34, 2, 7, 22, - 20, 6,166, 33, 27,168,198, 58, 20,149, 31, 16,151,192, 68,249,250, 33, 27, 54,149,236,239, 81,172, 86, 41,117,195, 32,133,167, -130, 5,125, 67, 14,224,166,169,172,223, 0,208,173,235,251,165,218,209,227,199,103,111, 46,190,126,254,188,109,183,136, 56,159, - 78,159, 60,120,176, 89,175, 30, 76, 26, 9, 53,135, 24,234,198, 77,205,141,193,179,101, 64,175, 66, 3, 80,208, 91,192,132,229, - 83, 35,196,128,112,115,187,178,212, 29,238,239,129,200,238,172, 6, 14,142,132,194, 50, 10,190, 67, 69,140,132, 98,106, 65, 56, -134,224,238,170, 90,226,207,150, 45,134, 64,196,234,198, 8, 33,134,241,178,174, 30,138,239, 19,220,220,152, 80, 88, 10, 79,145, -169,220,227,176, 79, 3,255,221,223,252, 37,140,205, 93, 26,145, 38, 59, 17,202, 8, 34, 52,103, 14,227, 81, 24,119, 17, 61,220, -157,140,145, 70,155, 94, 57,180, 23,150,123,161, 32, 2,185, 41, 16, 65,185,106, 1, 18,151,165,144, 85, 85,120,251,246,246,225, -195, 7,102, 61,161, 56,184,155, 34,122,129, 19, 20, 70,174,249,136,198,216,189,210, 71, 47,221,142,216,131, 72, 50,126,197,165, - 39,108, 90,152, 57, 6,133,251,232, 64, 96, 6, 89,177,200,174, 93,109, 20, 66, 1,140,175,167,157, 68,157,208,144, 5,118, 47, -138, 17, 86, 7, 56,154,196,203,189,115,188, 47, 8,241, 8,241, 45, 89,170,253, 69,115,119,123,123,117,187,156,205,231,147,201, -196, 0, 68,112,189, 92,159, 95, 94,255,183,127,246,223, 47, 22,245,249,217,249,124,239, 96,187, 90, 86, 85, 61,170, 85, 88,118, -120, 63, 65,230,130, 22, 0,211,221, 76,109, 55, 90, 42,129, 35, 47,223,206,187, 6, 22,151,125, 54,208, 8, 21, 37, 34, 98, 46, -119,175,210, 47,159,236, 29,196, 88, 59,112,121, 67, 0,179,229, 97,204, 18,140, 71, 24, 68,164,213,221,242,252,205, 25, 56,238, -237, 79, 15,142, 31,188,252,250,153,171, 74, 12, 73,217,109,200, 41, 33, 73, 53,157,138,200, 98,198,251, 71, 15,145, 56,245,253, -203,151,175,174,238,238,231,243,253,239,126,244,109, 32, 72, 67,110, 22,135,100,158,134,237,226,224,144, 72, 54,235,229,230,246, -250,230,250,162,158,204,174, 94,127,209,109, 87, 67,183, 78,155,101,156,236,121,185, 75, 54,115,244,108,214,181,119,111,127,241, -213, 87,255,241,167,159,207,167, 83, 98, 90,109, 86,125, 26,110,238,151, 5,233, 92,130, 66, 69,103, 60,169,235,192,226, 35,216, -159, 28,188,156,165,218,126,200,234, 72, 92,196, 41, 85,172, 20,124,219,181,136,120,176, 88, 76,154,201, 98,222,172,187, 36, 6, -185,221, 58, 34, 32,101,205,106, 46, 34, 85,172, 42, 17, 68,234,251,158,133,205,116,218, 52,125,187,149,170,169, 10,154,124, 72, - 64, 20, 24, 35,113,219,183,205,100, 42, 68, 34,149,153, 3, 41, 32, 60,254,240,131,247,223,123, 50, 91,204,193,181,111,187,213, -242,254,242,242,237,171,243,203, 47, 95,188,122,126,126,190,221,110,191,251,222,251,127,246,187,127, 24,172,223,118,221,180,230, - 63,252,147, 63,250,225,143,127,123,232, 54,111,190,249,245,228, 96,177, 66,248,197,175,190, 0,160,231,175,206,222, 60,125,125, -188,152,236, 47,102, 84, 76,200, 14,170, 26, 67, 96,228,178,101, 41,251,134, 24,100,132, 61, 33,148,252,137,153, 49, 11,142, 53, - 69, 39, 96, 66,206,154,136,208, 70,105, 54,140,212, 95, 9, 85, 37,217,220, 82, 6,196,186,138,102,110,250, 78,134, 67,142, 92, - 8,220,194, 40, 34, 41, 37, 36,182, 2, 88,103, 86, 85,119, 15, 68,166,166,154, 10,251,186,196, 99, 98, 93, 87, 18, 1,193, 65, -131, 68,115, 69, 34, 53, 8, 34, 33, 72, 20, 33,100,115, 8,204,229, 33, 80, 38, 11,136, 68,238,196,130,200, 64,152,179,149, 64, -114,161,165,238,208,169, 36, 18,202,169, 62, 27,136, 68, 98, 48,115, 75, 78, 34,196,156,205,136, 88, 36,128, 89,249,128, 32, 82, - 78, 42, 7,179,230,193,195,151, 23,151,157,170,212,245, 42,229,205,144,153,176, 22, 14,204, 6,102, 6,230,185,180,190, 37,178, - 14,105,173,105,241,240,244,118,217,254,227, 79,127,182, 92,111, 75,152, 45,198, 96, 14,236,237,147,131, 35, 96, 38, 68, 22,202, - 57,107,206,150,141,152, 0, 11, 21,197,133, 24, 68, 10,112,133, 28, 84,109,185,222,220,222,223,159,238,207,170,166, 81, 53,220, -217, 49, 2, 5, 70, 84, 7, 66, 39,150, 66, 81, 44, 70, 13,162, 48,228, 84, 76, 44,229,239,184,174,130,170, 17,130, 16, 19,203, -120,209, 66, 38, 2, 3, 74, 67, 22, 44, 1,254,210, 82,245, 16,248, 29, 56, 32,165,196,127,251,215,255,142,198, 7,115,113,217, -141, 18,163, 50,193, 86,203, 84,110, 33,227,131,145, 60, 59,162,150, 50, 49, 73,145,107,192,187,208, 98, 73, 53,150, 33,199, 72, - 91, 30,179,150, 35,231,177,200, 54, 2,243,197,229,245,225,201,177,148,223, 92,244,157, 57,116, 28,195,149,120,209, 59,113, 42, - 34,113,241, 8,150,211, 72, 54, 42, 43,249,113,164,225,102,201, 13,118, 35,176,221,168,103,167, 28,249, 23,226, 18, 32, 2,121, - 23,156, 28,169, 46, 72,129, 0, 25, 32,188,163,199,143,177,202, 29, 91, 14, 1, 13,138,173,155,161,160,233,137,202, 23, 73, 28, - 31, 62, 60,121,254,252, 53, 16, 77,166,179,102, 50, 25,134, 20,132,190,252,250,217,233,225,126, 30,250,171,235,183,119,119,183, - 68, 30,171,186, 60,224,202,142, 98,231, 27, 68, 64,176, 33,149, 83,120,169, 44,143,160, 55,215, 66,254, 43, 99, 36, 87, 43,186, - 75, 26, 65,209,255,191,183,222,120,255, 33, 66, 8,243,227,135,229,231, 55, 94, 67, 10,148,172,236, 78,204, 41,198,180,221, 74, - 29,215,171,237,229,249,165, 14,219,197,254,193,209,233,131,151, 79, 95,164,172,105, 72,125,219,173,111,222, 0, 79,117,243,182, -154, 29,245,235,187,246,254,245,222, 98, 65, 0, 47, 94, 60,255,217,175,191,216,172,183, 31,125,252,221, 15,222,255,176,219, 46, - 93, 83,179, 56, 78,195, 22, 89, 42,219,174,111,222,128, 52,104, 90, 87,245,245,229,197,124,255, 84,152, 86,247, 43, 71,105,215, -171,102,182, 87, 9,197,201, 52,167, 14,101,210,117,195, 47,190,250,213,197,106,243,244,197,203,189,197,220, 29,210,144,238, 86, -235,145,183,231,227,164, 42,187,166,148, 38,245, 52,136,248,110, 83,239, 0,129,163, 35,180,125,251,174, 66, 55,228, 97, 82,213, - 72,152,205,126,248,233, 71, 76,248,249, 87,207,183, 93, 55,175, 66,172,107, 51, 3,146,178,191, 6, 5, 98,110, 87,119,186, 43, -226,215, 49, 70,166,182,221,198,216, 8, 67,144,186, 14,146, 77, 65,147,123,118,207,194,129, 89, 36, 72, 96,108,166,211,111,125, -250,201,163, 71, 79, 66,140, 67, 26,218,174,189,191,187,251,242,217,179, 95, 61,253,230,155,151,175,223, 92,188, 93,212,211, 63, -248,236, 71,191,243,157, 79, 38,179,197,171,103, 95,124,250,201,183,254,135, 63,255,243,253,253,253,231,191,252,231,118,187, 92, -117,237, 23, 95,126,245,242,155,103,147, 73,243,236,215, 79,107,131,147,253,121, 93, 87,174, 70,132, 89,157,152,133, 67,136, 12, -192,229,227, 23,162, 8, 48,129,140,177,246, 50,145,196,146,192, 51, 0,160, 34,102, 24, 13, 56, 0,136,234,202, 28, 25, 17,137, -170, 88, 1,143, 79,124, 22,137, 49,142,127,172, 48, 88, 9,171, 80, 96, 78,158,139,193, 46,165,172,166,165,166,158,135,212,247, - 67, 37, 2, 8, 99,149,164, 48, 55,152,128,104, 58,105, 88,202, 53, 31, 10,184,196,198, 79, 44, 87, 49, 6,150,108,134,204,187, -157, 0,102,117, 34, 38, 38,112, 36, 17, 22, 81, 3, 22, 14,204,229, 83, 38,194, 8, 2, 88,144,225, 84,246,135, 76,196, 66,230, -154,213, 9,203,189,151,144,208,204, 75, 40, 82,221, 0,129, 3,187,186,154,206,159, 60,185,223,180, 95,127,249, 84,115, 98,150, -219,251,165, 17, 34,139, 19, 72, 9,203,144,148, 19, 15,160,229,148,135,156,113, 58, 27, 12,159, 63,127,121,187, 90,169,101, 48, -127,242,240,228,241,163,199,151,215,111, 63, 60,220,219,159,237, 67, 73, 97, 26,228, 97,240,157,156, 90, 40, 20, 73, 81,105,147, - 49,242, 48,162,228,253,250,110,133,174,139,253, 57, 51,131,123,178, 92, 30,196,163, 68,176,212, 17,188, 76, 30, 32,196,160,217, -218,190, 19,198, 24,162, 2, 86,204, 14,144, 76,105,100,107,210,238,105,198,224,218, 15, 10,150,130,112,118,207,217,145,128,145, -204, 60, 59,148, 62, 48, 34,230,172,252,119,127,253, 23,239, 48,181,229, 83,130,229, 39,189,227, 90,189, 83,102,240, 78, 83, 14, - 4, 99,148, 22, 1,139, 72,174, 80,120,202, 16,185, 44,115,124,151,185, 46, 83,136,241,143, 7, 68, 48,117,102, 89,223,223,106, -152, 44, 38,149,155, 35,128,144, 56,148, 28,149,191, 75,221,140, 70,234, 82, 62,246,119, 39,239,119,231,145,200, 99,100,189, 76, -240,129,138,241, 17, 11,212,134,184, 68,125, 74, 27, 23,129, 9,153, 73,118,128,117,112,119, 55,203,133,129, 74,229,116, 11,101, -158,232,239,156, 37,190,243,126, 56,130, 1,238,214, 5,227, 35,150, 16,220, 76,155,166, 18,242, 23, 47, 94, 47,246,246, 98, 85, - 85, 85,221,118,237,102,189,185,190,190,250,193,119, 63,253,228, 59,223,185, 58,123,241,254, 7, 31, 93, 93,188,142,161, 25, 61, - 57, 37,199, 35, 76, 64,174, 14, 52,182,195, 70, 6, 82,201,134, 90, 1,246,152,143,212, 72, 51, 24,249, 27, 5, 68, 51,178, 85, -119, 28, 30, 68,100, 38, 51, 88, 28, 28,149, 1, 44,184, 1,209,216, 35, 6,114, 3, 20,113,207,224, 32, 44,119, 87,119,119, 55, -119, 89,243,193,225,241,193,201,226,236,213, 89,215, 14,155,229,101,151, 90,164, 41, 87, 65, 98,147,123,219,172, 46,254,195,127, -250,143,255,240, 95,254,233,243,159,255,244,191,252,236,243,203,187,251,164,233, 71,223,251,221,131,163,135, 92, 53, 20, 23,195, -230, 54,181,247,113, 54,223, 59,121,184, 89,173, 40, 86,221,102,189,188,127,219, 76, 23,195,230,126,187,188, 93, 28, 62, 90,222, -189, 69,150,186,158,222, 95,190,238,218,141,166, 97,177,127,188,222,220,253,243, 55, 79, 89,228,236,250,250,110,185,100,166, 24, - 4,157,134,212,219, 8,141, 40,215, 24,202, 57,101,213,166,174,130,132,221, 55, 12,230,214,132,255,143,169, 55,251,177, 45,185, -206,252,214, 16, 17,123,159, 49,231,155,119,190, 85,117,107, 96,145, 44,138, 67, 73,108,146, 18, 7, 73,109, 11, 26, 72,169,219, -109, 73,221,104,184,209, 15,134, 97,192,126,243,191,100,216, 64,195,176, 13,195, 48,108, 9, 80,183,221,118,183, 68, 81,226, 88, -243,157,115, 30, 78,230, 25,247,222, 17,107, 45, 63, 68,156, 44,189, 93,178, 88,200,203,147,251,196, 94,177,190,239,251,125, 94, - 64,155,174,203,231,156,168, 38,179,135,251,123,119,183,183,167,203,213,217,197,117,191, 55,154,204,175, 85, 99,191,234,101,230, -129, 74,146,148,174,174, 47,178,236,148,136, 45,165,126,175,234, 87, 53, 0,132,224,205, 52, 38,109,154,102, 54,159, 48,234,173, -205,173,221,221,189,157,173, 61,118,161,141, 93,168,195,237,251, 15, 31, 60,126,253,246,157,187,200, 20,155,213,116,122,245,242, -224,229, 47, 63,252,244,233,171, 87,167,231,215,211,233,244,209,254,173,255,228,219,223,189,127,123,135,125,208,216,126,231,251, -223,125,255, 55,190, 57,187, 56,189, 60, 59, 58,191, 56, 89,116,177, 30, 15,125, 8, 47, 62,125,222,206, 86, 91,227,225,112, 80, - 97, 89,252,113, 50,115,236, 56,167, 65, 0, 50,205, 42,132, 42,243, 86,147, 9, 17, 99,142,171,130,186,181,171,192,196, 20, 36, -137, 57,199,153,194, 4,102,142,124,206, 62, 49,123, 85,209, 36,196,236, 8, 85, 85, 68, 85,129,185, 88,205,204, 20,137,193,160, - 14,190,237,162, 33,120, 42,242, 90, 76, 41,169,152, 89,238, 84,206, 28,115,114, 92, 87,158,208,213,222,173,145,168,104,144,227, -232,232,216, 1,160,115,164,146, 61,151,132,128,236,179, 11, 30,156,203,239, 6,246,161, 38,231, 16,160,170, 2, 50,171,105, 76, -234, 28,154,129,137, 9, 24, 57,151, 68,136,153, 61,145,101,209, 8, 67, 85, 1,114, 65, 56, 1,128,168,100,109,137,139, 63,159, - 20, 23,210,180,200,207,159,189,154, 76,231,147,171,235,243,203,137,130,142, 7,195,235,197,124,213, 70,116, 28, 8, 29,168,247, - 62,207,175,177,233, 58,230, 48,222,252,249, 7,159, 30,158,158,128,161,169, 18,113,221,235, 93,205, 22, 53,200, 59,247,239,147, -115, 0,172, 42, 93,138,148,133, 17, 53,239,188,161,137,149, 74, 44, 51,200,104,107,239,221,124, 21,231,243,249,173,237,141,170, -174,146, 90,236,186,224, 42, 34, 66,162, 12,129,202,198,246,162,246, 1, 74, 18, 3,169,234, 32, 6,170,209, 57,159,151, 20, 25, -197,115,131,141,101,164,164, 81, 69,156, 99,118,216,117,130,102,204, 84,101,124, 2, 0,170, 33,145, 42,152,196, 40,137,255,244, - 71,127, 88, 42,233,138,160,154,199,237,140,113,207, 14, 60,203,139,247, 53,234,203, 40,135,126,138,173, 97, 61,185,175,231,204, -188,174,206,219, 98,202, 18,120, 9, 60,173,211,173,165, 14, 80, 23,173,108,109, 12, 37, 38, 43, 43,110, 83, 48,212,210, 21, 72, -228,214,205,128,134,120, 51,178,150,217, 58,123, 94, 11, 26, 31,114,247, 8,150,165, 5, 17, 21, 95,189, 3,200, 77,193,133,131, -137,159,155, 39, 1, 13, 21, 81,212,242,130, 4, 50,244, 6,215, 65,214,245,250, 41,123, 54,160,168, 72,153, 91, 99, 55,152,245, -140,118, 22,181,221,237,205,167,207, 94, 69,177,254,112, 84, 87,125,231,168,109,154,159,126,248,105,205,221,254,254,206, 98, 54, -255,248,195, 95,157, 31,191, 10,140,190,238,177,243,236, 3,177, 67,200, 45, 34,172,146, 84, 4,137, 75,240, 67,109,109, 57, 45, -237, 58, 57, 65,199,107, 33,152,156, 47,191, 44, 94, 39, 6,212, 56, 56, 19,243,245,168,191,177,153,177,154, 26, 99,201, 70,100, -174, 89,222, 43,117, 29, 34,115,229,231,215,179,179,195,195,148,236,238,163,135,163,205,209,171,167,175,186,110,217,174,218,212, -169,167, 4, 0, 0, 1,152,122,220, 45,151,179,207, 94, 30,126,248,236,229,249,228, 26,193, 0,221, 55,190,242, 53,239, 43,212, - 68, 68,177,185, 6,145,219, 15,223,214,152,212, 85, 34,214, 76, 39,189,193,184, 10,117,179, 90,176, 27,174,218,149, 25,110,108, -236,116, 77,211,182,203,225,104,179,238,111,118,205,236,147, 79, 62,252,229,179,231,249,249,152, 92, 93,119, 49,153,218,206,198, - 24,145,150,171, 6,214,215,152,252, 91, 78, 41,169,105,175,174, 3, 59, 85,181,242,234,197, 94,221,219,232, 15,135,189,161,129, -142,251,245,107,251,123, 41,197,103, 71, 39,128,174,235,154,141,209,104,119,107,235,236,106, 42,169,171,124,157,105,209,170,138, -190,114,206,123,199, 8,224,188,223, 26,141,103,243,105,138,157,239, 15,219,216, 69, 81,116,158, 9, 71,181, 75, 93, 28,141,199, -203,118,117,189,152,111,237,237, 60,122,243,173,251,175,189,190,177,189,139,200,211,235,203,195,195,195,207,158, 63,251,232,211, -231, 7,103,167,231,151, 83,231,232,155,191,246,213,175,127,225,109, 54,152,207,231,247,238,237,127,227, 27, 95,221, 24,143,142, -159,127,150, 40,117, 8,191,248,228,179,189,205,141,195,243,139, 79,126,249,241,198,160,191, 53,234, 83,161,129,228,203, 98, 6, -157,251, 12,228,102,202,197,108,200,142,204,178, 26, 68,134,150,123,125, 45,231,119,214,119,238,164,234,152, 45,143,216,217,211, -134, 64,128,206,187, 36, 41,207, 68,140,148, 84, 76, 85, 83, 44,223, 40, 67, 41,166, 44, 66, 68, 5,160,220, 58,131, 25,231, 74, -222, 5,206,200, 11,202,205,116,196,142,136,201, 57, 70, 36,209,168,128,149,119, 42,121, 61,146,145, 37,204,132, 49,199,115, 28, - 1, 0, 51, 3,100,249,151,137,152, 43, 95,238,174,148, 61,135, 22, 37, 86,235, 43,133,138, 58, 31,216,145,103,102,239, 16, 73, -147,196,100, 89,196,205, 59, 37, 98, 86, 80, 19,201, 58,115,169, 53, 67, 50, 85, 83,153, 38, 89,118, 58,157,207,155, 85,211,165, - 14, 81, 99, 23,163, 72, 74,201,133,208,136, 38,226,202,129, 3, 67,132,174,137,139,148,252,198,232, 98,114,125,116,122,214,117, -157, 35, 66,132,183,222,120,216, 38,157, 93, 95,125,229,209,221, 97,221, 47, 36,154,210, 83,103,142,125,130,114,196, 85,161,103, - 0, 42,146, 36, 2,152, 39, 15,166,199, 23,147,205,158, 31,142,134,170,128,104,142,125, 89, 24, 48, 6,226, 76,205,117, 76,128, -220,165,148, 99, 77,204,222, 0,152, 28, 33,139,196, 44,149,147,154,102, 39, 18,145,129,117,169,147,100, 68,168,102, 10,200, 8, - 68,152,161, 5, 42,134,136,150, 50, 90, 1, 29,115,140,202,127,246,163, 63, 44, 13,117, 6,136,180, 70, 13,220,212,244, 25, 34, -115,185, 94, 97,129,245,174,119, 41, 89, 40,200,128,150,242,156,173, 37, 12, 85, 64, 46,173,132, 57, 59,191,238, 87, 53, 34, 48, - 68,239,252,233,233,209,206,173, 59,146,186,204, 3, 64,200,190, 32,204,203,250, 60,122,150,176,149,149, 12, 85,126, 67, 20,163, - 75,166,246,174,215,180,140, 4,142,110,140,246, 88,108,129,134,146,241,110,192,197, 74, 77,159,215,196, 26,163, 65, 38, 80, 32, - 50, 64, 42, 48, 28, 67, 36,203,183, 24, 64, 34,244,148, 77,186,229,103,223,124,167,104,253, 90, 37, 71,126, 52,170, 62,121,246, -114,208,239, 87,117,221,239,247,235, 58, 44,166,211, 15,159,159,190,125,123,188,119,247,222,203,167, 79,190,241,205,127,244,226, -179,143,123,253,126,127,180,157,219,169,204,178,233, 84,178, 11,146,202,235, 15, 11,180, 30,203,175,120, 45, 55,184,178,139, 89, -123,224,136,125,233,154, 93,247, 30, 32, 81,232,143,171, 94,207,180,224, 76,193, 0,156, 67,100,141,137, 72,129, 28, 57,159, 59, -160,175, 46,167,103, 39,167, 10,112,239,222,237,126, 21, 62,253,240,227, 4, 56,191, 60, 97,239,129, 61, 98,109,237, 60, 38, 29, -247,181, 23,120,115, 52,232,247,122, 73, 82, 23,211,112, 56,252,250, 23,191, 38,113, 21,170,254, 96, 99,163,237,162,247,117,175, -223,107,187,180,156, 28,167,118, 89, 15,119,134, 27, 91,166,182, 90,204,134,227,205,170, 55, 34,166,174, 89,228, 12,180,196,184, -177,185,141, 93,252,241, 47,127,230,234,129,129,121,162, 69,179, 66, 38,199,212,180,109, 94,171,173, 37, 38, 92,191,188,177,137, - 73, 84, 6, 85,133,192,154, 61,147,101,182,192,189,173,173,175,190,253,218,157,157, 29, 3,119,126,189,152, 45,150,200,214, 52, -157,247,110,119,103, 43,248,234,233,241,177,103,232,215,189,202,249, 36,186, 22,184, 32,182,173,170, 5,143,222,133,170,215, 7, -213, 94, 85, 17, 82,155, 98, 21,124,191,223, 31, 12,198, 4,208, 27,110, 62,120,231,157, 55,191,244,222,254,189,215, 67, 21,154, -249,245,193,171,103,207, 62,123,250,228,229,171,151, 71, 39, 7,103,103,231, 87,215, 95,121,252,250,251,239,190,123,255,238,107, - 81,210,214,206,206, 55,191,245,235,175, 61,186,127, 61, 57,107,154,217, 39,159,124,244,226,244,116, 62,157, 93, 78,174,143, 94, - 29, 45, 39,179,157,209,112, 88,215, 55,222, 93, 34, 10,222, 37, 77,156,193,179,200, 88, 54, 84,107,110,117,233,207,225,181, 50, -134,204,222, 51,235,122, 39, 73,228, 20,208,179, 47,137, 15, 36, 68, 82,149, 54,118,193,249,108,146, 17,137, 18, 59, 38, 16,133, -224, 3, 50, 90, 30, 95, 40,103,103, 92,105, 66,101, 2, 68,102,242, 76, 92,204, 8,204, 46,228, 94,132,138, 93, 76,194,232,128, -144,115, 43,142,170,130, 49, 51, 98,110,197, 96, 36,172,214,158, 22, 38,151,127, 83,196,236, 28, 35, 81,169,137,203,143,122, 82, - 67, 32, 32,145,132, 0, 57,205, 0,104, 92,210,161,104, 42,128,192,193,103, 19,142, 9,146, 39, 48,131,148,208,231,141,129,187, -209,226, 8, 41,153, 1, 98,135, 41,132,122,190,108, 22,171, 85, 82, 80,181,220,188,218,175,195,100,186, 0,128, 6, 81,201,192, -120,217, 9,142, 71,211,101,243,243, 15, 62,158, 47, 22, 25,173,222,239,213,222,135,243,201,213,151,239,223,221,223,220,138,170, -160, 72, 76, 42,160,166, 61, 23,216,249, 76,177,245,206, 35,115, 62, 91, 67, 85, 49, 51,170, 77,102,203,118, 53,223,218,222,240, -189, 26,217, 35,113,215,117,206, 17,135, 0, 70,106,106, 42,142,208, 8,219,166,243,140,136, 44, 26, 93, 30,251, 50, 33, 17, 13, -153, 68,196,214,125,212,162,154, 67,203,204, 78,147, 16, 97, 8,228, 66, 21, 69, 40, 59,199, 25, 21,208, 36,121,231,204, 12,243, - 46,238,207,255,228, 71, 96,160, 32,165,200, 54, 79,182, 72, 0,192,174,108,191,168,240, 24, 0,128,202,122,187,228,101, 11,228, - 29,203, 42, 60, 71,128,141,224,230,159,222, 48, 13, 21,145,137, 75,119,135, 25,212, 85,117,126,114,234,251, 27,126, 29,145, 42, -131, 26, 25,185, 27,141, 49, 71,103,179,129, 68, 11, 3, 6, 74,176,215, 44, 99, 35, 53, 7, 74, 11,238, 38,163, 91,202, 95,201, - 76, 1,137, 17, 5,184,172,186,217, 21,202, 78, 94,200, 19,123, 32,134, 66,154, 51,204,171,223,108,154, 41, 34,167, 34,152, 65, - 78,237, 2, 49, 27,144, 34, 16, 16,231, 16, 22, 33, 0, 27,232,246,206,206,242,250,250,226,122, 62, 30, 13,201,133, 58,244, 24, -245,195,207, 62, 67,115, 3, 94,190,124,241,106,255,193, 27,154, 58,141, 82, 15,135,196,206,135, 42,171,200, 25,129, 74,204, 89, - 53, 45,141,103, 25,250,147, 93,237,133,136,161,107, 36,112,185,224,100,241,245,134,172,192,236,204,180, 63,218,169,122,125,160, - 92, 69, 70,150, 18,128,165,166,201,175, 8, 83,115,217,184,214,181,147,201,252,228,213, 11,235,150,175,191,243, 14,123,247,252, -201,139,235,211, 3,209,174,238,111,197,100,177,155, 85, 85,237, 29,250, 16, 25,157,119, 46,166,238,252,106, 10,128,183,239,220, -121,247,241,187, 10,145,156, 71,224,118, 62, 55,196,224, 56, 25, 46,103, 87, 93, 27, 1,124,187,188, 88, 45,103,139,217,213, 96, -180, 41,113,185,154, 28, 57, 4, 96, 95, 85,149, 11, 30, 36, 61,249,236,131, 31,127,244,113,236,186,121,211,204,166, 83, 1, 11, -176,126, 6,208,242,155, 45,198, 8,107,135, 93, 78, 47,116,109,151,204,250,253, 62,234, 90,212, 55,243,204,119,246,198,151,211, -249,197,245,162,170,170,173,205,209,254,214, 78,219,118,215,179,105, 47,212,103,147, 11, 48,245, 92,157, 92, 93,143, 67, 80,144, -202,123, 2, 76,210,121,230,182, 93, 25, 81,191,234, 85,193, 87, 85,127,181,184,114,190,118,228,137, 45, 37,107,147,116, 41,237, - 61,120,244,230, 87,190,126,251,225, 27,195,141, 45,105,227,114,118,249,228,201,147, 23,175, 14, 15, 78, 79,159, 31, 28, 30,157, - 93,116, 93,247,107,143,223,122,124,255,158, 26, 59,166,119,223,120,248,245,175,191, 71,218, 93, 28, 61,127,249,244,137, 16, 8, -232,214,230,240, 39, 63,254,153,182,114,107, 52,220, 24, 13, 60,121,200,161,142,210,245, 75, 73,173,114, 21, 33,106,238,226,201, -206, 63,242, 57, 41,152,123,148, 68,133,153, 21, 17, 84,193, 52,105,110,246,241,106,150, 84,234, 16,136, 25,193,114,102, 71, 84, - 77,181, 87,247, 8,172,137, 89, 51, 67, 34, 74, 38,136,236, 61, 3, 96, 29, 42, 17, 81, 85,199,156, 97, 91,236, 24, 50, 38, 9, -161, 72,150,128,204,148, 52,121,199,142, 93, 20,245,142,242, 77, 57,127, 71, 99, 18, 52,242,129,131, 39, 1, 76,146, 16, 13,201, - 1,176,169, 8, 42,152, 18,187, 42,120, 66, 80,133,220,149, 9,142,186, 54, 17,147,115, 78, 36,130,129,247,174, 77,137,137,122, -117,149, 13, 67, 34,146,109,136,136, 6, 70,206,121, 35, 51, 66, 38,151, 13, 43, 76,228,216,137,170, 98,206,189, 2, 35, 16, 96, - 39,118,113,117,237, 60,189,126,239,254,178, 89,165,152, 16, 76,212,174,174,175,199,131,254,112, 56,156, 45, 27, 64, 55,139, 66, - 33,184,224,143,143, 79, 46,174,167, 34,137, 8,251,117,245,248,181, 71,199,151, 87,247, 55,134,111,221,221, 71,176,192, 30,157, - 67, 38,118,232,157, 19, 64, 83,173,122,181,227,144, 36,105, 74,228, 28, 5,103,162, 68,144,196,206, 46,175,110,109, 15, 55, 54, -119, 93,168,136,188, 74,116,228,216, 57, 51, 75, 49,153,168, 35,108, 58,149, 24,123,117, 45, 6,160, 90, 85, 61, 85,200,192,112, - 3, 35, 36, 53, 69, 85,207,220, 73, 76, 49, 49,179,247,190,105, 27, 53, 53,212, 42,184, 78,208,146,196,148,242, 36,152, 45,128, -236, 57,195,229,234, 16, 90, 21,254,179, 63,254, 67, 64, 40,115, 47,131, 74,177, 9,146, 17, 18,169,100,170,250, 26,201, 5, 86, -138,188,254,193, 94, 62, 31,165, 89,137,132,181,150, 9, 37,118,104, 72, 25, 32,130, 8, 32, 57, 64, 65,104,160,206, 7,137, 93, - 84, 28, 13,107, 64,159,255,165,220,134, 90, 56,186,133,115,150,117, 95, 51, 53,162,245,202, 4,177, 44,202,243,215, 3, 72, 52, -229,211, 63,159,205, 8,154, 55,249,159,163,211,197, 64,129,214,247,144,124, 74, 26, 57, 36, 95, 40,146,197,169,175,121, 85,165, - 57,172, 91,218,150,180,252,191,101,202, 23, 20,206,197, 38,235,183, 24,229, 69,166,218,120,212,127,121,120,236,125, 85, 85,189, - 42, 4, 23, 66, 77,250,211,143,158,108,247,253,151,190,250,222,225,171,163, 71,111,191,115,118,124, 52,222,216,113,190, 42,246, - 76, 43,142, 87, 0, 2,226,178, 13, 67, 64,226, 27, 76,155,153,170, 8,136, 42, 96,161,142,220, 4, 17,242,146,162, 92,147,192, - 68,135, 59,183,217,179,118,109,142,229, 81,229, 76, 44,187,116,164,139,161, 87,105,236, 76,162, 37,189,184,156, 45, 22, 77, 24, -108, 62,122,252,168,109, 86, 31,252,253,143,167,167,175,122, 27,183, 37,117,132, 22,234, 13, 12, 53,168, 90, 55,117,206, 37, 73, - 23,147,233,197,228,122,177, 92,125,233, 11, 95,249,194,151,223, 71,100, 49, 52,176,184,154,223,122,240,104,255,193,155,231, 7, - 79,102, 23, 47,124,168, 92,175, 47,221, 74,218,153, 52,215, 73, 36, 54, 77,175,215,159,205,174, 57,244, 24, 89, 99,179,152, 77, -254,238,131,159,190,154, 76,135,253,126,215,117,203,182,109,219, 40,160,102, 38, 73, 37,105,126, 30, 21, 44,137,220,136, 64,121, -156,104, 99,231,144,122,189,218, 76,107,239,111,109,143,198,131,193,241,233,229,217,228,170,137, 93,215,117,154,196, 57, 26,246, -122,139,166,105, 98,155,162, 36, 85,239,160, 75,118,181,152, 87,132, 62, 84,140,138,232,242, 84, 91,247, 6,102,170, 73,230,243, - 75, 48,246,222, 87, 33,204, 23, 75, 51,219,191,125,231,189,111,188,255,248,139,191, 54,218,216, 68,194,217,229,233,217,225,171, - 39,207,158,188, 56, 56,120,254,234,240,197,193,201,233,100,178, 51, 30,127,227,205, 55, 95,187,119,111, 54,155,222,187,115,251, -215,191,241,222,131,251,119,206, 79, 14,154,213, 28, 7,189,143,159, 62,175,157, 63,155, 78, 62,251,224,233,102,175,190,179,189, -105,104,249, 41,228,226, 68, 35, 98, 6, 4,239, 88,138,146,136,162,178,174,199, 89, 55,187, 16,218,231,104,223,162, 70, 17, 48, - 19, 38, 17,199,158,185,236, 42,136, 93, 76,217,150, 13,165,246,192,128,215,193, 37,102,118,236, 51,186, 60, 4, 23, 83, 2, 49, -118,107,237, 14,114, 83,118, 46,187, 84, 88,247,120, 56,196,224, 93, 38, 63, 6,239, 12,129, 28,177, 39,176,245,201,193,148,146, -170,145, 15, 85,224,192,236, 68, 68, 82, 71, 76,140,204, 46, 16,162,228, 75, 61, 2, 17, 37, 85, 85,101, 66, 68,144, 36,153,254, -139, 4,204, 14,145,147,198, 20, 37,223, 4, 68, 21, 12, 44, 26, 82,142, 62, 98, 38,164,243, 58, 33,152, 93,193,180,254, 90, 19, -185, 64,200,200,192,216,116, 93, 8,161,107, 83,240,174,233, 98,142, 8, 24, 88,219,182,117, 85, 13,135,131,179,139,203, 65,191, -126,117,114,246,226,240,168,156, 98,132, 91, 91, 27,200, 46, 46, 23, 95,125,120,183,215,235, 25,144, 88,102,205, 35,128, 3,208, -224, 42, 0, 16, 81, 85, 1,196,170,242,165,240, 19, 80, 13, 46,166, 83,135,186,187,187,171, 68, 6,230, 66,197, 33, 0, 65,238, -120, 34,114,162,169,235, 58,102,240,206,229,149, 50, 82,182,132,150,190,114, 19, 41, 59,122,114,130,192, 72, 92, 2, 48,226,200, -229,190,204, 92,183,204, 68,196, 46,171,181,165, 33, 46,103,184,136,137, 72, 69,156, 81, 6, 99,230,238,173,188,221, 32, 80,203, - 48,252, 50,200,230,187, 34,193, 77, 95,105, 25,117,129, 32,195, 52,179,133,116,109,227,206,144,159,245, 61, 32, 39,217, 44, 71, -168,114,161, 5, 51,155,217,198,120,120, 50,153, 33,142, 51,139,147,145,204, 4, 29, 65,150, 3, 51,248,203,138, 22,105, 37,220, -129,235, 6,162,252, 56, 2,161, 19,205,232,211,146,245, 65, 2,180,181,238, 4, 69,190,128,204,230,202,243,176,100,131, 60, 50, -179,164,132, 38,235, 96,238, 58,133,101,152, 35,162,134,134, 6,140,206, 32,183,218,100,217, 62, 39, 49,114,196,200,149, 14, 66, - 64, 49, 27,111,110, 62,186,183,127,120,114, 49, 24, 14,189,115,131,193,232,141,199,111, 29,156,156,253,221, 39,135, 15, 30,221, - 57,124,249,100,213,174, 16, 45,198,198, 73,133,236, 16,179,197,202, 64, 20, 28,131,105, 70, 45,151,129, 29,233, 31, 72, 2, 98, - 6,204,222,192, 84, 5,145,214,136,102, 40,216, 31, 81,231, 56, 10, 34,128,116,157, 1,147, 99, 48,213, 85, 99,230,184, 14, 42, -145,131,215,156,153, 66,118,189, 26,236,136,152,177, 91, 16,210, 98,114, 53, 61,122, 49,186,251, 24, 24,217, 56, 54, 43,147,171, -173,251,111,205, 47, 94,144, 26, 32, 55,171, 70, 68, 76,177,139,205, 59,111,189,139,224, 22, 87, 19,244, 20, 23, 83, 53, 9,152, -150,147,147,233,233,115,195, 42,166, 84, 3,104, 90, 93, 93, 28,246, 7, 27, 33, 84,189,254,230,201,179, 95, 12, 55,246, 70,155, -123,179,243, 87, 72,210, 25,158,206, 86,207, 95, 30,248,135,247, 87,171,101, 18,201,215,210,124,150,172,145,212, 56,118,189, 85, -215, 45,155,166,164,162,181,116,190,156, 76, 46,204,244,139,143, 31, 17,200,209,197,213,116, 25,209, 36,248, 42, 89, 90,181,171, -166,109,150,205, 98,216, 27,222,221,187,117,116,126,153, 52,174, 86,171, 20,171,187,251,123,109,108,143,102,139,205,141,113, 23, -213, 48,133, 48,242, 85, 13,154,144, 67, 4,168,122,155,205,106, 49, 95,173,146, 65,175,223,127,237,141,183,222,250,210, 23, 71, -219,219, 85, 93,167,102,113,117,117,121,121,118,118,118, 57,121,241,234,224,224,236,252,228,226, 10, 76,222,189,255,224,173,123, - 15, 36,117,108,242,131,223,250,214,195, 55, 94,139,203,217,197,201,243, 15,127,245, 33,143, 70, 85, 21, 22,203,197, 47,126,126, -170,177,219, 25, 15,250,245, 0, 16,217,149,234, 32,133, 0, 0,142, 17,152, 98, 18, 3,200, 1,212,148,149,152, 98,205, 54, 34, -114,142, 37, 9, 88,134, 97,229, 86,103, 68, 70, 77, 42, 6,204, 46,105,100, 98, 48, 52,208,212,166,188,216,149, 36, 4,185,132, - 11,213, 12,208,188,243,106,224,152, 50, 78, 82,196, 0,137,125,190,251,103,176, 23,198, 46, 1,162,168,121, 70, 17, 3, 54, 95, -170,239,204,123,135,153, 52,204, 25, 84,198,236,208,136,216, 44,198,232,125, 8,117, 37,162, 73, 51, 6, 7, 29,251,242,158, 54, - 35,176,220, 74, 6, 6, 64,230, 12, 98, 30,106,136, 75, 91,131, 42, 66,118,223, 3,146,115, 62,115,187,141,137, 9,173, 43,130, -170, 97,217,220, 50, 25, 42, 18, 48, 34, 1,118,154, 37,226,114,217, 35, 87, 89,188, 53, 24, 17,242,213,244, 26, 1,246,247,182, - 87,177, 75, 41,129,105,211,196,182,237,136, 56,171, 2,139,229,106,181,106, 1, 44, 56, 78,104,143,238,220,173, 6,253,143, 63, -254,244,219,111,190, 54, 26,141,162, 49, 59, 0,233, 20,146,168, 5, 87, 27, 4, 5, 19, 81,246, 76, 68,102, 16,147,229,150,104, - 83, 49, 37,233,186,173,209,176,204,150,204,132,138, 68, 92,215,150, 36,182, 77, 76, 45, 3, 24,174, 17,229, 8,170,146,245,218, -220,127, 10, 6,228,125,183, 90, 49, 3,147, 15,228,146,197, 14, 0, 12,170,224, 82,210,130, 56, 70, 11, 33, 36, 81, 4,171,124, -136,109, 68,208,188,244, 82, 49,239,193, 33, 17,123,254,179, 31,253, 17,174,239,253, 89, 7,229,245,159, 36, 11,137,246, 57,153, -232,166,196, 47,239,206,214,177,126, 88,247,129,174, 21, 90, 43,204,195,236,135, 33,102, 66,179,108,236, 45,224, 73, 51, 85, 14, -124, 53,185, 30,141,134,156, 93,182, 25, 18, 95, 60,131,121,239,128,165, 58, 96, 61,201,100, 47,124,190, 53,100, 73, 10,144,114, -207, 97,105,175, 6,202,137, 80, 88, 67,139,242, 8,204,232,179, 93, 60,159,250, 89,184,227, 18, 94,203,181,117,153, 64,147, 1, -188,186, 86, 97,105,221, 52,136, 88,214,141,185, 51, 47,255,124, 42,127, 88,239,114,204, 96, 52,168,159,191,120,165, 70,195,209, -136,209, 85,161, 2,144,103,175, 78,182, 42,247,181,247,191,222, 44,151,239,124,249,107,121,219,228, 10,127,137, 85, 20,188,195, -242,238, 85, 83, 41, 43,254,155, 79, 23,214, 54, 32, 40, 19, 90,142,170,174, 97,157,108, 57,207, 76,152, 84,199,219,251,228, 28, - 17,107,106,193, 72, 21,128,208, 87,158,156,183, 24, 77,204, 5,111, 41, 97,229, 46, 78, 46,175, 38, 23, 0,114,239,193,195,179, -231,159,156,156,157,187,225,134,181,141,117,201,168,234,143, 70,182, 60,107, 22, 87, 33,176,169, 46,151,171,179,203,203,147,171, -137,153,125,239,123,191,191,156,207,187,213, 89, 24,236, 1, 86, 91,251,247,247,238,220,157, 78,206, 63,250,201, 95,110,223,127, -123,235,214,163,174, 91, 57,215, 71,163,225,230,118,175,238,169,152,196,102, 48,218,188, 60,125, 90, 85,195,203,147,231,179,229, -114,176,177, 3, 68,159, 60,123,218,175, 7, 77,215,181,146,184,200,115,132,255, 0, 33, 84, 5, 47,162, 41, 38, 66, 2, 2, 83, -136, 42,227,186,247,181,183, 30, 45,151,205,193,249, 52, 38,225,155, 98,118, 64, 5, 19,176, 36,105,217,180, 73,100, 60, 28, 44, -155,166,141,157, 99,106,186,118,119, 99,227,114,182, 76, 41,237,110,110, 24, 64,191, 10, 76, 84,213,181,180,171, 80,245, 76, 90, - 67, 68,246,161,238,255,250,183,190,245,218, 59, 95, 24,141, 54,152, 93,183, 90, 29, 29, 30, 76,206,206, 95, 29,157,124,252,228, -233,179,227,227,139,201,164,118,244,149,219,187,119,119,119, 0, 97, 99,107,248,253,239,126,123,111,127,111,114,252,234,224,249, -211,165,234,249,244,106,107,115,243,167, 63,254,249,106,209,236, 14,123,227,222, 0,114,234,192, 50,199, 57, 75,100,234,157, 55, -192, 36,169, 10,181, 67,143,136,201, 4,115,199,178, 99, 0, 11,158, 85,243, 76,134,236, 3,227,250, 43,167,229,102, 67,136, 10, -249, 16, 68, 48,107,150,109,168,188,222, 36,179, 77, 29,114, 22, 51, 29, 81, 62,197,152,193,178, 9, 26, 9, 12, 68, 77, 82, 36, -210,174,233, 98,140,162,198, 55,122, 47, 80, 93, 87,109,148,224, 24, 50,177, 5, 81,132,206,123, 0, 0, 32, 0, 73, 68, 65, 84, - 89, 36, 47,237,153,216,221, 20, 79, 34,145, 1, 72,206,221, 19,122,199,107, 11, 47, 25, 18,136,114,112,192, 57, 33,143, 96,104, -162, 8,148, 63, 4, 4, 98,159,155, 66, 44,137, 58,231,138, 4, 5,192,128,158, 89, 1,201,113,102,183, 50, 51, 82, 89,231, 50, -231,238, 76,208,148,152,184,147,104,136, 46, 31, 19,204,129,160, 38,215,247, 78, 64, 79,175,166,219,155, 27,247,111,221,190,158, -205,213,196,212,218, 46,166,148,222,123,231,157,208,239, 29, 28, 30,167,204, 47, 81, 24,244,235,179,201,244,205,205,225, 27,247, -111,147,171, 12,133,152, 68, 84, 13, 42, 87,231,143, 52, 71,141, 56,120, 80, 52, 77,204, 62, 95,163,153,248,114, 54, 35,208,241, -104,131,170, 80,140, 64, 49, 58, 79, 38,218,197,174,107, 59,239, 93,211,118,106,169, 10, 46,199, 24, 85,210, 77,229, 6,123,111, - 96,146, 18,152, 57, 23,192, 49,168,169,169, 3, 0,162,166, 77,160,185,248, 1, 0,192,121, 44, 27, 99,211, 46,117,154, 79, 85, -179,186,118, 0,108, 40,162,202,127,254,199,127,160,240,249,190,165,220,249, 57, 51, 22,214,241, 85,179,172, 7,174, 95, 2,152, -223, 3,185,211, 99,125,137, 44,151,165,162,244,229,127,148,173,226,136,133,170,140,159,187,206,205,192,177, 91,204,231, 85,175, -239,185, 88,172, 16, 13, 52,111,246,114,105,158, 17,223, 24, 94, 74, 17, 32,226, 77, 51, 93, 70,226,100,188,251, 58,218,207,235, -188,233,250, 16,167,130,197,192, 27,133,216,138, 23, 94,172, 96, 85, 33,223,118,214, 50, 2, 23,199, 56, 56, 0,151,205,254,132, - 30,201,209,205, 70, 36,203,155, 57,151,148, 11,165, 16, 16, 48, 73, 28,109,222,246,245,248,131, 95,253,116,115,115,183,174, 66, -148,212,175,235,139,203,203,227,203,249, 55,127,227, 27,253,241,214,100,114,213, 46,151, 33, 84,206,249,242,145, 56, 42,204, 79, -205, 45,175, 14, 49,135,241,180,108,214, 51, 86, 19, 1,209,200,249,130, 91,115,174,128,131,214,111, 63, 83, 1,170, 70, 91, 91, -218,182,232, 56,159, 4,106,144, 73, 71,210,180,165, 59, 29,141, 66,109,109,119,240,244,233,124,222,244,250,189, 59, 91,131,131, -167, 79,206,167,139,204,209, 19,242,113, 53,185,117,255,241,236,250,210,108, 53,236,247,218,182,107,150,171,227,243,201,197,100, -210,171,195,155,247, 31,163,175,145, 56,137,178,227,205,141,225,120,123,235,244,248,132,123,163,237,157,123,205,234,106,181,152, -163,164,222,230,174,103,127,121,242, 34,174,230,211,217,180,109, 87, 0,140,152, 66, 53, 60,159,156,133,241,246,195,123,247, 47, - 47, 46, 63,126,246,164,242,222, 33, 50,145,128,229,165,110, 25, 81, 12, 84, 44, 56, 82,145, 70, 4, 0,234,224,239,223,218,121, -116,123,255,131,151, 7,159,188, 58,236,215,189, 42, 4,195, 28, 53,179, 27, 23,110,126,217, 70,233,186,182,243,204,171,174, 83, -180, 85,211,173, 86,203, 65,191,183,138,210, 52,205, 32,240,104, 48, 96,196, 16, 92,191,215,119,236, 98, 39,189, 65,253,224,254, -131,127,244,155,223,191,253,224, 97, 93,215,136,176,152, 93, 93,158,157, 30, 28, 31, 62,121,241,242,163,231,207, 95,157,158,199, -174,187, 61, 28,188,182, 53, 98,135,219, 91, 91,223,252,141,111,252,230,119,190, 67,100,151, 39,135,234,232,232,226, 92, 37,246, -122,189,167,207,158, 99,219, 61,216,219,206,198,176, 44,121, 22,252, 23,187, 42,244,188, 15,249,187,234,124, 64, 0, 5, 77, 18, - 1,128,128, 96,173,226,171,154,130,101,127,177,230, 66, 78, 34, 53, 17, 75,149,243,162,106,152,235,241,172, 75,106, 4, 85, 8, -102,249, 65,202,144, 55,202, 59, 22, 38, 66,178,252,252,198, 4,104,196, 62,111, 71, 8, 76, 85,187,197,178,137, 34,222, 59,230, -108, 70,177,236,152, 19, 53, 79,148, 85, 47, 19,209,164,196,121, 19,205, 64,168, 38,128,134,142,242, 46, 37,251,184,156,203,128, -132,156,124, 4, 34,204, 4,221,124,145,206, 61,186,136,232,153,162,154,119,236, 40,168,106,236, 50,180, 43, 0,162,105,121,117, - 1, 32, 58, 42,126, 13, 4,199,156, 93, 24,148, 53, 54, 2,231,179,120,139,235, 46,161,252, 21,206, 57, 45,116, 76,149, 11,163, -224,170,224,231,171, 38,106, 34,128,126,213, 91,181, 93, 8,110, 52, 28,189,241,248,209,238,173, 91, 32, 73, 13, 98,215,189,249, -218,195,227,139,235, 13,167,191,254,214, 99, 10, 61, 68, 74, 93, 4, 0, 31,152,128, 65,213, 12,136,152,157, 51, 68, 19,205,221, -155,121,177,236,217,181, 81,174, 38,215,187,155, 27,190,223,255, 60, 21,132, 16, 99,148, 78,178, 25, 64, 82, 98,151, 43, 6,139, - 22,201,204,153,114,136,196, 0, 20,187,142, 9,153,153,153, 52, 74,222,201, 73,134,223,230,106, 11,196, 98,160,146,252, 14, 7, -134,114,187, 65, 2,239, 60, 2,138, 41, 3, 68, 49, 87,130,146, 37,166,143,160,166, 0, 12,153, 65,145,111, 83, 10, 72,101,196, - 95,239, 64,193,200, 4,254,193, 18, 30, 0, 13, 5,115, 83,199, 77,205, 7,162,161, 67,144,172,117, 90, 81,192, 51, 38,201, 68, - 5,188,227,249,162,169, 93,223,146,130, 83, 52,128,164, 96, 0, 46,107,152,168, 55, 6,110, 2, 68,191, 46,227,206, 58,110, 2, - 91, 51, 80, 11, 99, 62, 15,238, 89,157, 84, 4, 82, 81,205,117,126, 6,196,133, 93,134, 55, 64,156, 53,196,191,224,149, 29,129, -228,179, 59,228, 75, 16,146,154,121, 66,188, 41,250, 40,174, 33, 3, 68,116,134,134,166,136,140,108, 38,169,235, 92, 53, 24,108, -222,126,255,254, 59,207,158,126,250,226,229,179,119,222,121,199,208, 66,221,123,251,141, 71,127,249,239,255,195,223,253,244,163, - 31,252,227,239,189,122,250, 23,183, 31, 62, 6, 77,109,183,236,245, 71, 10,198, 72,104, 42, 34,235,212, 1, 32,170, 33,152,154, -105,102,159, 74,206,155,169, 42,138,250, 16,138,125,126,253,247, 95,179,173, 41,248, 96,201,200,123, 0, 67, 70,235,196, 57,151, - 61,148,138,232, 42, 15, 8,150,242,208,199, 73, 49, 54,203,197,242, 44, 54,247, 19, 7, 32,239,136, 17, 24, 36,109,239,222, 21, - 85,114, 3,182, 5, 32,155,170,128, 78,231, 11, 81,189,179,115,119, 99,188, 53, 91, 92,139, 73,175, 55,168, 6,189,237,253, 59, -104,230,124, 24,111,223, 53,228, 80, 13, 17, 3, 72,215, 45,231,203,213, 84, 76, 12,171,205, 91,247,156,171,219,217,249,106, 57, -237,141,239,172,212,227,114,182, 92,204,239,223,189,253,252,213,203,195,139,139,173,241,120, 88, 85,216, 38,201,156, 82, 34, 21, - 51, 80, 38, 66,197,186, 10,169,105,239,223,218,221,218, 24,159, 92, 92,254,248,163, 79, 12,128,152, 46,167, 87,204,155, 85,168, -140, 45, 37, 51,176, 92, 70,155, 82,202, 93, 45,209, 18, 2,246,235,170, 21,241,140, 33,132,166,109, 30,220,190,243,234,244, 84, - 52,121,118,183,118,182,151,139,101,175,223, 55,149,189, 91, 59,239,189,255,205,123, 15, 95,175, 7, 61, 51,136,237,234,106,114, -121,125,117,241,252,197,193, 71, 79,159, 31, 95, 78,166,243, 89,223,225, 87, 30,220, 11, 68,203, 46,190,247,165, 47,126,251, 55, -191,211, 31, 14, 47, 78, 94, 94,156,157, 54,236,207, 79,143,175, 39, 87,243,101,179,156,205,119,250,189,189,205,205, 12,116, 35, - 51, 50, 48, 3, 38, 32,231,178,119,183, 75,202,235,185, 8,203,194,179, 24,182, 50,253,149,204,152, 80, 17,187, 38, 18,145,115, -206, 0, 50, 57, 0,201, 37,145,192,100, 6, 73, 68, 65,131,227, 60,203,231,163,217,146,174,115, 75, 12,140,142, 72,172,148,178, -250,192,196, 36,201,136, 17, 29, 37,233,242, 96,232,125,240,193, 33, 18,173,235,141,215,248, 40,200,186, 72,222,105,112, 33,116, - 16, 20,218,224,218,217, 12, 64,168,206, 7, 96, 36,181,104,154,215, 41, 42,186,166, 90,149, 53,102,197, 28,213, 20,160,246, 46, -138,136,118,128, 22,106, 7,138, 41, 37, 46,215,116, 64, 34, 16,141,173,248,224, 29,130, 8,100,203, 10,153,199, 76, 23, 65,202, -241,248,146,118,230,236,158, 52,114,214,243,204, 14, 82,212,164,214,135,234,158,115, 85,224, 23,103,151,227, 81,191,174, 7, 77, -108,119, 55, 55,238,220,190,235,156,251,244,227, 79,106,239, 94,127,120,111,212,175,187,164,221,114,246,222, 23,223, 8,189,126, - 66, 86, 21, 23,124,182,140,136,116,236, 93, 46,223,179, 66, 89, 54, 85,203, 86, 81, 21, 72, 34, 87,215, 83,239,160,234,215,101, -147, 68,136, 0,171,182, 69, 16, 71, 92,122,203,205,145,165, 46,111, 32,215,133, 76,184, 94,248,138, 36,102, 2, 36, 69,180, 84, - 44,112,200, 14, 0, 48, 69,206, 80, 19,200, 41, 51, 5,242, 8, 70,204, 77, 76,166,137,128, 8, 32,197, 84, 10,155,137, 1, 34, -255,233,143,126, 15, 20, 53, 87, 31,225, 90,182,187,241,128,131,130,102,215,140,102, 96,241,122, 23, 65,166,166,104,165,138,163, -132,102, 11, 26,184, 60, 20,121,179, 97,101,157, 3,184,102, 47, 32,168, 25, 35,129,153,164,110,214,116,219,195,129, 34,100, 74, - 39,130, 21, 21,116, 77,218,202,115,153,138, 33, 26,173, 27,166,178, 19,188, 8,148, 76,104, 25,226,142, 80, 66, 82,153, 94,157, -191, 53, 69, 36, 69,176,194,222,231, 98, 18, 42, 24, 59, 45,175,172, 2, 48,206,151,190, 50,249, 91,246, 78, 2, 80, 89,121,230, -235, 76,126,230,145,114,154,143, 9, 37,181, 92,111,236, 61,120,211,249, 10, 13,238,236,223,253,217,223,255,141,175,234, 81,191, -175,192, 85, 85,117,203,197, 71, 79, 95,126,225,241,235,231,103, 71,174,234,213,189,170,157,175,216,251, 44,250,131,152,169,101, - 72,228,141,229, 40,251,235,173,120, 37, 17, 84, 9, 29, 51,101,101, 41,235,186,153, 16,130,136,200, 4, 98, 68,174, 55, 28,151, -158, 15, 69, 75,137,168,112,182, 65,209, 85, 65,163, 2,152,198, 40, 93,119,248,226,229,197,241,179, 10,245,141,119,191,124,126, -181,154,175,146,165, 86,208, 13, 55,183, 6,155,219,147,147, 3,105,102,117,109,190,242,179,233,244,242,226,234,197,225,225,245, -116,242, 59,191,253,195,123,143,222,186,186, 60,100, 21, 52, 25,239,221,185,117,231,206,245,197,217,229,249,113,206, 63,155,193, -226,250,148,129, 86,177,139,106, 33, 12, 24, 52,181,141,175,122,243,197,213,173,253, 7,171,197,100,145,244,213,241,209,197,197, - 5,169,221,190,181,255,242,213,193,108,181, 68,196,162, 56, 33, 3,192,160,223,223,223,222,189,189,123,103,123,115,235,222,222, -254,155,247,111,205,218,246, 87, 79,159, 79,151, 43,206, 56, 83,196,100,210,181,113, 80,213, 12,200, 76,162, 89,158,135,130, 26, - 33, 96, 8,204, 8, 96,109,151, 6,189,122,127,123,247,106, 62,143, 41, 14,250,189, 89, 19,137,169, 95,247, 7,117,237,188,123, -243,237, 47,124,231,119,127,111,255,254,163, 80, 85,102,208,182,139,139,179,179,147,163,163,143, 62,123,250,139, 79, 63, 59,188, -184, 92, 53,139,253, 97,255, 11,251,183,201,204,147,253,254,239,253,238,183,190,251,253,249,244,242,229, 39, 31, 8,225,213,108, -118,113,126,118,120,112,220, 53,237, 70,229,247, 54, 55,123,253,192,142,196,114, 79, 16, 39, 21,239, 28, 51, 87,189,218, 84,141, -172,242,204,134,185, 65, 35,123,116,147, 8,179, 99,228,104, 49,231,206,197, 64, 85,153,200, 57, 78,162, 25,118,167,150, 55, 56, - 40,170, 98,185, 84, 47, 24, 1, 1,128, 90, 8, 1,212,186,216,121,231,138,167,146, 73,237,230, 69, 3,102, 70,236, 66,240,102, -166,162,142, 89,213, 68,165,246, 1,144, 28,241, 77,222, 28, 12,156,163, 28, 94, 34,114,206, 59,116,236, 28,151,168,170, 35,211, -148,186,200,128,196, 46, 11,253,249,219,106, 37,141,143,150, 84, 36,101, 11,140,153,101,163,181,152,185,224,188,207, 90,130, 6, -207,107,194, 45, 33, 97,210,242, 27, 52,131, 76, 76,203, 24,250,156,255,178, 44,101, 2,100, 8,176, 38, 41, 75,121, 3, 99,244, -236,216,115, 29,252,112,128,149, 19, 3, 0,204,107, 16,172,136,118, 55,250,211, 85,247,252,240,104,123, 99,227,141,215, 31,237, -221,189,189, 92, 46,159, 62,125, 62,185,154, 14, 7,253, 47,125,233,139,231,151, 23,253,186, 26,142, 55,217, 52, 16,113,168, 68, -149,188, 51, 1,231,189, 39, 76,166, 6, 80, 85, 85,166, 94,102,129, 76, 85, 65,117,217,164,249,124,186,183,185,225,235, 58,111, - 41, 36, 99,191,184,116,143,132, 80,153,154, 20,253,147,208, 32, 73,182,129,186, 60,134,122, 2,224, 92,186,157,231,104,134,130, -106, 81,203, 7,102,249,143,130, 72,206,135,252, 81,139, 8, 19, 6,114, 64, 28,147, 16, 90, 86, 55,137, 76, 12,249, 95,252,147, - 31,221, 48,186,114,108, 30,204,242, 17, 88,224,234,229,100, 46,139,153,245, 6, 39, 51,187,176,152, 17,139,240,153, 45,225,185, -119, 15, 16,208, 74,223,213,141,143,114,205, 17, 91, 63,109,196,120, 61,155,239,237,237, 88, 20,200,145, 75,164, 18,208,192, 82, -149,151,127, 48,229,166,214,178,251, 70,181,124,115, 5, 67, 68, 45,205,126,184, 94,196,148, 69, 13,150,134,244,178,195,200, 95, -164,146,191, 42,122,112,217, 5,216, 77,165,120,118,180, 56, 68,203,193,238,124,217, 55, 48, 98,198,108, 97, 44, 27, 80, 82, 75, -217,217, 32,210, 57, 55,220,125,248, 54, 35,105,106, 65,213, 48,253,245,191,255,127,212,116,184,177,225, 92, 80,176,126,229,159, - 61,125, 78, 68,239,191,255,181, 20,187,222, 96,180, 90, 78, 1, 92,240, 30, 76,129, 29,160, 49,115,214,174,215,229,176,229, 99, -203,151, 20,118, 1,153, 51,159,207,214,159, 99,158,247, 12, 12,129,204,160, 55,222,235,109,140, 76, 5,209,105,219,144,119,232, - 40, 83,130, 75, 88,192,140,208, 82, 23,197,240,201, 71,159, 76,206, 94,109,109,223,122,253, 75, 95,121,241,242,224,228,248, 8, -201,213,129,187,249, 5,170,196,110,201,222,215, 53,152, 89,187, 88, 30,157,159,191, 60, 57,107, 99,247, 91, 95,255, 13,244, 21, - 80, 29, 6, 91, 85,191, 87,245,250,227,205,205,233,213, 36,198,214, 98,219, 92,157,248,254,118, 85,241,106, 58,211,148,130,247, -109,187, 20,177,254,160, 47,178, 26,141,247,147,201,103,159,254,234,114,177,250,234,151,191,222, 31, 12, 8,181,223,171,151, 93, -115,122,113, 97,136,129,243, 70, 88,115,113,193,108,181, 92, 46, 23,155,227, 90,165,253,232,249,193,229,108,158, 36, 3,101,233, -230,138, 40, 34, 41,197, 80,213,185, 95,190,104, 63,249, 86,171,226, 61, 43,114,112, 60, 30, 15,251,117,189, 49, 28,137,196,235, -233,188,223,171, 31,222,190,125,116,121,217,182,205,189,253, 91,223,249,222,119,191,250,205,223,234,143,199,192, 36, 93, 92, 92, - 95, 92,156, 30, 31, 28, 29,253,234,227, 79, 62,124,242,252,236,106,106,113,245,214,222,222, 27,123,183,146,200, 23,190,240,230, - 15,255,228,159,238,222,218, 57,124,246, 25,247,170,147,201,164,105, 87,189,141,209, 71,159, 61,117,141,222,218, 24, 85,149, 87, - 64, 4, 18, 67,199,172,102, 68,202,142,217,185,124,212, 2, 99,134,136,230,130,209,236,212, 2, 32,239,216, 74,160,130, 24, 81, - 77, 37, 37, 68, 82,179,182, 75, 55,115,189, 11, 14, 12, 36,138, 22,151, 0,170,165,252, 7, 51, 72, 41,154, 41, 59, 78,144,193, -147,152, 73, 71,217, 66,135,144, 31, 34,146, 46,102,183,177,130, 85, 85,189, 46,201, 10,236, 41, 15,194, 76,132,185, 64, 14,144, -156,175,170,128,136,196, 76, 88,252, 28, 0,156,213, 53,188,113, 4,168,154, 40,231,176,120,161,200, 2,123, 15,107, 39,111, 18, -113,149, 99, 36,208, 12,151, 2,199, 62,139,132,107,232, 2, 81, 70,238, 0,102, 30,132,137, 38, 85,186,169,111, 91,167,251,243, - 89, 73, 84, 98,152, 24,152,129,144,192,123,116, 30, 29, 53,204,154, 12,165, 83,116,222, 28,178,227, 10,177, 66,155,182, 29,162, -171, 43,239,157,235, 98, 92, 46, 27,231,120,103,111,107, 58, 91, 93,158,159,221,187,125,123,149,116,209, 53,163, 16, 92, 38,197, - 18,186,172,130,136, 57,207,140, 20, 69, 66, 8,154, 23,168, 10, 20,156,154, 93, 94, 94,247, 2,245,135, 67,100,151, 79,137,146, -250, 7,117, 76, 6,164, 73, 96,237, 58, 37,200,115, 41, 1, 90,148,164,106,206,177, 33,153,228,141,157,178, 15,185,186,199, 12, - 12,244,134,189,149,119, 40,204, 4,134, 73, 69, 77, 42, 31,114,175, 96, 30,219, 13, 32, 37, 97, 71,193,251, 46,138, 43,162, 79, -198, 32, 40, 32,170, 1,129, 74,126,241,139, 38, 64, 52, 19, 38,159, 67,244,249,204,213,108,156, 2, 44,165, 85, 57,182, 90,154, -158,208, 0, 52, 1,115,238,154, 65, 51, 43,117, 26, 5,217,152, 97, 55, 2,128,190,234,147,158, 45, 35, 5,135, 38, 37,163, 87, -102, 88, 69,163, 66,231, 45, 37,171,150,145,121,104,217, 72,161, 37, 13,149,225,106, 57, 44,244,249,221, 14,129, 24, 98,202, 33, -175, 2, 28, 37,128,148, 52,207,238,185, 35,204, 4,136, 28,129,101, 57,193, 76, 12, 0,185, 3, 3, 99, 71,166,107,112, 61, 65, - 41,241,138, 8,140,249,218, 12,140, 76,160,209, 87,227,237,187,111, 16, 65, 59,159, 57,246,203,118,254, 63,254,247,255,195,183, -126,251, 15, 63,250,229,223, 28,159, 28, 62,188,247,186,103, 30,110,108,189,245,214,227,127,251,215,127,251,205,247,127,109,114, -113,118,122,114,210, 52,203,221, 77, 8,193, 87, 85,207, 36,145, 15,152,109, 64,170, 55, 96, 28,145, 44,183, 18, 2,178,243,102, - 70, 76,196,168, 98,150,148, 42,135,136, 38, 9,179,133, 70,193,213, 85, 94, 85,170, 68,170,188,175,130, 36, 49, 81, 3, 50,139, -146,148, 60,202,170, 67,213,110,185, 92, 94, 29, 18, 18,135, 10,136,201,132, 92, 61,218,232, 49, 50,244,234,216,172, 92, 53,114, -212,144, 11,210,197,216,165,233, 98,217,180,237,176, 63, 28,247, 7, 64,182,115,107,239,250,244,116,122,113,112,247,193,107,177, -105, 1, 25,212, 37, 97, 85,110,151,179,171,147, 39,231,167,135,183,110,191,214, 45, 47,134, 27,251,206,135,213,252, 98, 53,187, -212,129,138,129,186, 65,183,188,250,201,207,255, 54, 4,119,112,112,184, 92,206,123, 92,189,245,240,209, 98,177,200,101,144,128, - 32, 42, 6,112,127,111,183,223,247,151,147,249,241,229, 68, 36,245,171,106, 80,133,139,233,180,211, 82,199,152,159,220,121,215, -202,213,100,119,123, 19, 17, 53,139,226,201, 12,161,174, 7,142,176, 75,169, 87, 85, 49, 37,231, 61,160, 13,251,195,126,221, 63, -191,190,138,233,120,123, 99,235,119,190,251,157, 31,254,254, 31,246,134, 67, 81, 1,208,213,244,122,122,117, 62,185,184,122,121, -112,240,233,179,103, 7,167,231, 87,211,249,237, 81,255,254,214, 46,139,214,189,250,143,126,244, 7,111,188,249,230,229,241,225, -139, 87, 7,110,107,227,232,228,232,240,240,104,181,138,139,217, 98, 84,247,182,247,198,204,148, 84, 52,165, 80, 85, 73, 58, 43, -231,100, 6,170,172, 3,122, 8, 41,137, 18,105, 82,116,152, 33, 76,154, 47, 31, 0,136, 20, 37,113,169, 52,241,201, 18,130,229, - 6,100, 85, 12,193, 73,210,152,132, 88, 61, 57, 84,136,102,142, 29, 25,164,168, 49, 69,246, 44,162, 46,167, 33,203, 85, 29,137, -157,153,130, 26, 7,111, 81,164,139, 84, 48,115,232,200,153, 73,191,223,235,186, 78, 76, 8, 60,168, 49,161,152, 24,144, 67,207, -206,161, 65,210,228,156, 71, 70, 84, 51,129, 36, 74,222,192,128,137, 85, 81, 44, 91,182, 45, 91, 78, 85, 18, 18, 59,207,146, 80, -215,252, 44, 32,242, 76, 32,160,166, 34,210,171,107,201, 14,123, 3, 34,210,117,172, 50,247,197, 58, 31, 76, 33,197, 14, 0, 50, -114,129,152,129, 12,196, 24, 44,198, 84,240,184, 25, 92,152, 49,226,142,209,186, 64,209, 59,232,162, 52, 77, 52,243, 0,129,200, - 48, 25, 33, 38, 67,100,255,218,107,143, 38,147,233,249,229, 21,145, 27,142,122,111,189,249,134, 72, 34,199, 63,249,201,207,150, -171, 85, 29,194,178,237,234, 80, 53,241,242,245,157,237,126,168, 82, 50, 37,201,102, 21,149, 14,209, 85,222,199, 24,115,190,132, - 3, 74,146,182, 73,166,105, 60,218, 6,192,148, 26, 34,118,174, 82, 5, 34, 37,116, 41,117,206,177, 82,134,185, 27, 57, 70, 81, -199,104,106,121,132, 71, 87,224, 94,121,131,103, 70, 41, 38,135, 64,204, 32,178, 74, 17, 68,123, 85, 63,111,134, 29, 81, 82, 81, -211,186, 10,146,160,137,157,169,120,231, 16, 33,154, 18, 66, 29,156, 0,116, 81, 84,147,195,155,105, 49,247,106,100,211,119, 54, -156,103, 99, 36, 0, 81,126, 3, 75, 54,164,128, 89,169,146,128, 12,155, 65, 48, 33, 38,149, 28, 57, 53, 84, 99, 15,153,167,187, -238,218,131,178,204, 95,183, 89, 32,187, 60,252, 14,106,119,122, 53,127,109,175, 78,154, 76, 81, 83, 71,174,206, 26, 59, 25, 16, - 26, 96, 6, 54, 2,230,179,111,141, 30, 54,211,114, 69, 64, 99,204,216, 72, 66,206, 14, 91, 3, 53, 49, 64, 69,164,226, 27, 42, -228,132, 82, 32, 96,172,104, 8,196,229, 70,137,165, 95,132, 0, 1, 36, 33, 25,104,126, 15,100, 14, 67,105, 74, 42,252,100, 53, - 3,197, 92,112,233,135,155,183,223, 32,164,184,156,131,129, 72,250, 95,254,167,255,249, 75, 95,251,205,111,255,167,191,187,152, -158,125,252,225,207,199,131,173,205,237,109, 31,252,195,135, 15, 62,123,246,226,127,255,191,254,239, 63,254,131,223, 62, 58,124, -177,104,250,183,239,221, 61, 63, 63, 53, 52, 71,156,137, 19,107,255,169,113,240, 41, 9,128,229, 88, 4, 34,169, 8, 59,199,236, - 0, 12,201,188,167,194,248,225, 96,160, 6, 74,236, 66, 8,228,189,153,211,182, 69,246,177,109, 16, 29, 18,128, 36,141, 29, 57, - 75, 81, 76, 20, 68,150,167,199,169,107,155,118, 73,161,135, 76, 70, 21, 0,196, 78, 18, 64,111, 56,108,103, 83,212,206,247, 34, - 65, 47,106, 90,181,205,245,124, 17, 83,220,191,117,123, 25, 19,205,231,179,233,108,113,121,184,185,255, 58,251,222,201,241,209, -233,233, 17,167,213,114, 58,217,186,253,184,153,207,183,239,188,189,177,251,168,139,173,165, 97,108,174, 16,250,237,226,170,234, -141,201,249,197,108,122, 57,159, 29,157,158, 84,190, 82,137,163,209,198, 98,181,218,217, 30,134, 58, 60, 95, 45,147, 73, 82, 85, -209,141,209,240,222,222,222,178,107, 63,124,126,232, 0, 8, 77, 16,187,212,121,230,241,112, 56,153,206,242,149, 43, 63, 95, 8, -184,138,237,116, 62,223, 30,143,172, 45,170,180,129, 73,138,139,174, 13,193, 15,251,155, 87,211,121,211, 52, 75,102, 1,168, 42, -119,103,119,119,111,111,231,191,251,111,254,219,119,223,253,210,233,100, 18,219, 85, 74,113, 62,185,188,154,156, 93, 93, 93, 63, -121,241,226,227,231, 47,207, 46,174, 84,226,227,221,141,135, 59,219,201,224,225,131,187,191,255,195, 31,122, 71, 79,126,245,211, - 38,197,179,139,179,233,179,167, 81,116,190,106,108,214, 60,218,221,206,166,149, 36,102, 8,222,135,148,132,145,213,140,217, 49, -113, 82, 81,128,202,251, 85,215, 48,112,118, 19, 43, 9,129, 47,161,105, 83, 64, 8, 62, 52,171,150, 24, 21, 57, 73,155,119,146, -132, 4,144,178,111, 98,213,116,206,177,247,142, 1,197, 84,192,152, 80, 37, 9, 0, 33, 85,149, 23,177,218,185,108,126, 43,212, -116, 36, 85,113, 33, 88,138, 42,209,202,127, 99,236, 8,173, 88,144, 99,234,156,119,165,233, 23, 73,147, 1, 97, 8,193, 59,238, -146,186, 92,150,160, 10,134,228, 72,146,178, 35, 80, 96,246, 98,130, 88, 44, 2,228,243,166, 94, 28,115,206,166, 18, 49,130,137, - 42,121, 66, 64, 17, 53, 80,231,208,161,139, 93, 66,196, 4,234,202, 62,129, 68, 75,169, 5, 38,212, 46,229, 27, 52, 50,229, 6, -100, 64, 32,114,169,107,147, 73,134, 52,176,247,197,251,231,156, 74, 2, 75,192,232, 67,165,113, 41, 17,155,200,189, 94, 8,190, -110,218, 68, 72, 34,178, 84, 9,183,246, 23, 71,167, 79, 95, 29,136,200,201,217,121,175,170,222,251,226, 23,134,155,227,167,159, - 61, 91,204, 23,201,244,233,203,163,126,191,218,123,109,251,244, 98, 18,245,242,222,214,214, 70,237, 29,113,211,117,193, 59, 71, - 85, 39,218,172, 26, 98, 46,175, 61, 49, 77,178, 92, 45,234,202,187,186, 86, 77, 72, 30,129,146, 36,199, 94, 84,146,180,236,156, - 65, 41,164, 3, 64,206, 99, 57, 64,178,232,216,105,174, 3, 71, 0,209,224,170,100,162, 41, 17,160, 33,161, 42,152, 57, 37,116, -156, 36,101, 68,101,215, 53, 36,234,152, 82,236, 16, 40, 56,175,192,170, 6,146,152, 28,104, 82, 64, 73,209, 33,154,170,203,114, -142,153,228,159,173,182,166, 44, 20,249,145,214,149, 46,101, 35,175, 80, 62,112, 0, 53, 40,247, 52,195,108,176, 45, 74,167, 21, - 95,100,201,193, 18,165,181, 57,102,109,219,194,117,103,148,234,246,206,238, 39, 47, 14,117,255,109,131, 14, 9,141,216,202,168, - 93,188,178,144, 41, 8,154,255, 93, 93, 47,170, 63, 79, 58,149,158,115, 43, 55,136,172, 44,107, 17, 39, 11,238, 88,138, 38, 2, - 37,222,151,143,135,108,176, 65,180, 92,197,183,182,118,194, 58,150, 10,107, 36, 66,126,150, 81, 13,145, 13, 20,114, 16, 66, 13, -125, 53,222,189, 71,177,105,151,173,137, 86,131,141,191,252, 63,254,215,189,253,123,223,253,193,183,210,197,217,251,191,254,237, -103, 79, 62, 57, 63, 59, 25, 12,122,193,247,234,190,188,247,238, 59,255,238, 63,252,245, 55,190,246,149,199,111,190,243,225, 47, -127,118,120,248, 28, 68,125, 21, 48, 12,146, 68, 2,133,146,108,178,216,197,188,150, 50,203, 4, 52,135,148, 93,112,100,166,142, -110,100, 57, 48,135, 40, 12,160, 92, 85,206, 59,137,157, 22,215,148,100, 74,120,198,138, 17, 15,173, 93,105,155,208,179,166,164, - 6,198, 1,184, 71,161, 39, 73,144, 16, 45,197,136,131, 81,189,184, 60, 73,171, 69,127,188,133,148, 12, 48,117,113,177,106,154, - 54,154,217,195,187, 15,183,111, 61, 60, 63, 63,233, 22, 87, 91,251, 15,170,186,106,150,203,197,116, 1,203,217,244,250,120,116, -235,141,110,213, 88, 90,213,117,117,126,122,192,213,192,135,186,107,168,105, 91, 36,116,161,234,247,251,199,167, 71, 81,245,241, -107,143,145,236,229,203, 87, 42,178, 61,222, 90, 54,139,174,107, 66, 85,205,175,174,198,195,254,131,237, 77,101, 58,189,184,188, - 88,204, 29, 56,231,168, 19, 69,100,207, 8, 8,158, 97, 99,208,187, 94, 44,213,214,144,103, 3, 36,152, 46, 22,128, 48,170,250, -217,207,100, 10, 28, 56,120,223,118,105, 50,189, 10,190, 74, 98,139,182, 37,128,157,173,205,127,246,163, 31,125,255,123, 63,216, -222,221,155, 47, 86,150, 98,187,152, 95, 79, 46, 38,147,139,211,179,179, 39, 47, 94, 62,125,117, 52,157, 47, 6,193, 61,216,189, -213,167, 56, 30, 13,190,247, 59,191,243,240,225,131,229,114,222, 54,221,193,233, 9, 59, 26,236,108, 30,158, 79, 46,142,206,118, - 55, 55,246,239,237,139,152, 90,142, 31,194, 13,225, 54, 3,193,179, 77, 46, 83, 92, 10,195, 22,128, 40,219,190,185,140, 62,106, - 46,176,154,182,177, 67, 7,132, 24, 37, 17,162, 15, 46,198,232,136,131,239,181,169,139, 34, 33, 91,105,205, 4, 12, 12,130,247, - 49,198,130,255, 50, 19, 69, 48,136,146,214,248,170,210,196,228,152, 32,165, 82,152,144,157,111,197,230, 6, 42, 34,152,152, 92, - 6,117,136, 25, 0,177, 39,135, 0, 4,146,249,163, 14, 77, 37,169, 17, 2, 36, 95,102, 66,204,142,142,252,157,163,117,151, 52, -249, 92,184,157,143,108,179,114,207,117,168, 73,192, 52,248, 74, 64,116, 93,129,237,184,216,139,205,140,153,137, 81,146,230, 81, - 14,205,229, 90, 80, 66, 4, 7,150, 52,197, 8, 32,158, 89, 76,193,204,196, 50,123, 54,198,232, 16,156, 35,199,144, 36,138,176, -168,177,115, 49, 17,162, 16,162,153, 46,187,206,111,110,137,243,139,233, 76, 85,163, 74, 59, 91, 50,211,213,116,250,225, 39,159, - 57,231,216,249,118,185, 48,132,249, 98,245,233,147,231,195, 94,223,143,194,243,243,243,253,241,120,191,223,243,181, 71,128,164, -134,107, 21, 1,212,128,144, 1,163,225,170, 89,237,110,142, 17,149,156, 83, 17, 5, 33,100, 81,129,114, 78, 24,153,228,197,122, -222, 74,229, 70,188, 16,156,198,148, 9, 91,249,168, 81, 19, 34, 2,231, 77,180, 19,241, 68, 62,120, 4, 18, 75,165,252,195,180, -246, 33, 65,178,210, 90, 65, 6, 16, 37, 58,224,117, 53, 42,196,212,145, 90, 50,139,109,231, 32,111, 79, 0, 32,195,173,242,250, -165, 24,192,243, 65,206, 8,150,169,211,156,249,184, 98,235, 68,106,238,228, 54, 80, 4,250, 60,113,153,203,230,208, 48,207,149, - 88,214,223,248,121, 35,133,166,178,168, 87, 13,131, 81,144,231, 49,162,247, 65, 98,100,230,108,182, 89,159,222,154, 51,114, 55, -164,119, 90,215,209,101,118, 11,103,172,174, 17,162,154,161,169, 41, 73,238, 19, 55, 21,203, 45, 45,165,126,210, 12,201, 50,254, - 32, 99,118, 0,200,145,129, 17,128,150,247, 85,161,174,175,107, 87, 11,111,216, 0,243,164, 0, 4, 68,190,164,106, 57, 12,199, -251,218, 53,203,197,220, 15,199,163,209,230,191,251,171,191,188,184,156,254,147,255,252, 15,218,174, 73, 77,220,216,217,249,193, -239,253,254,255,246,111,254,205,230,246,245,214,150,235,247, 6,119,239,221,125,237,222,157,191,248,171,191,122,227,241,127,177, -179,187,119,244,226,197,157, 7,247,167,215, 87,117, 61, 80, 85, 3,112,206,229, 16, 47,172, 59,230, 51,158, 41,151,100,153, 26, -176,230, 88, 72, 33, 56, 32,162, 50, 0, 8,168, 67,100,132, 36, 9,185, 50, 19, 75,121, 41,134,154, 26, 14, 61, 0,177,152,144, -193, 98, 34,102, 64,139,205,170, 10,190,223,171, 13,161,109, 22,236,168,215,239,199,216,116, 49, 58, 95,161,115,249,235,159, 98, -154, 47, 87,162, 9, 8,135,195,209,124, 62, 79,177,233,245,123,104,104,106,221,114, 46,105,213,219,216, 80,109,110,221,189,127, -121,116,188, 92,206, 42,231,130,235,117,205,140,137,171,193, 86,211, 44,118,246, 31,199, 24,153,194,209,229,213,197,100, 18,188, -155,205,103,215,211,235, 46, 73, 29,194,106,181, 88, 54,171,219, 59,187,111,220,185,181,106, 87,103,147,235,235,197, 34, 37, 35, -180,136, 38, 89,169,161,242, 92,169, 98, 21,220, 14,141,207,103, 51,209, 92,194, 11, 38, 8, 96,215,179,185,137, 13,122,125, 5, - 37,196,174,139,109,106, 7,189, 30, 34, 3,194,173,221,189,147,179,211,247,223,123,239, 95,255,171,127,253,250,155,111,130,217, -116, 54,107,154,213,245,249,201,249,197,217,244,106,242,226,240,213,199, 79, 94, 94, 92,207,230,203,213,237, 81,127,183,231,201, -210,111,253,230,119,191,250,205,223, 72,109,119,240,236,227,176,181,241,234,197,171,131,163, 99, 95,251,203,143,102,155, 85,239, -173,251,247,152, 89, 21, 68, 53,195,249,147, 40,103,252, 28,179, 99,140, 73, 1, 64,146,249,158, 79, 49,197, 36,158, 60, 33, 68, -137, 72,140,197, 64, 12, 64,216, 69, 49,211,138,157,130,117, 34,158, 56,130,137, 2, 19, 39, 83,235, 58, 1,237,133, 10, 84, 20, -243,105, 72,146, 84, 44,230, 47,128, 26, 4, 87, 42,203,186,152, 15, 92, 16,211,202,121, 32,180,220,111, 74,100, 6, 4,108,168, -196, 36, 49, 33, 3, 50, 57,240,206,177, 2, 38, 3,231,200, 85, 30, 20, 84, 13, 80, 77, 5, 57,215, 49,172, 17, 82, 4,166, 74, -182,214,165,160,180,167,154, 1,147, 7, 48, 0,201,237, 12, 41, 38, 23, 24, 12, 77,172,109,163, 35, 34,246,109, 23, 25,201, 7, -175, 32,146, 52, 64, 70,230,130,115,206, 68, 76, 0, 20,140,243,183, 15,114,231,160,154, 90, 42,189, 29,153,185, 68,200, 38,201, - 52, 37, 35, 2,172,189, 87, 77, 14, 99,229,114,127,189,151, 86, 75,213, 25, 34, 17,182,203,101, 12, 97,123,247,214,207,126,246, -139,151,135,135, 49, 37, 21, 65, 4,102,254,232,201,179,233,108,246,246,107, 15,171,224,192,250,157,180, 49, 73,219,182,170, 18, -106,159,146, 76,154,166,141,237,189,212, 15, 85, 48,246,128, 14, 8, 68, 5,193, 24,156,169, 94, 76,174,107,166, 94,175, 39, 98, -206, 33, 58,151,186,148, 39, 69, 98, 84, 37,102,140,106,185,209, 84, 84, 36,198, 16, 2, 51, 24, 58, 5, 69, 2,109,219, 8, 70, - 0,222,187, 76, 70, 69, 48, 66, 20, 19, 75,138,204, 38,108, 32, 4,192, 68,132,172,166,185,130, 77, 68, 1, 21,149, 12, 65, 85, - 29, 25, 48, 27, 96,219, 44,243,161,199,127,250, 39, 63,164,210, 97, 93,204, 78, 57, 48,157,221, 54,249,151,154,243, 11, 57,180, - 74, 72, 80,198, 98, 88,247, 73, 81,254,147,228,237, 48,220, 84,106,175, 43, 85, 97,125,192,150, 66, 84, 40, 29, 89, 8,204,232, -171,126,106, 22,147,166,219, 28,244,242,123, 5,168,116,159,174,169,145,101,183, 15, 5,181,179,254,161,107,209, 22,203,146, 95, - 76, 19, 2,231,102, 16,188,177,196,151,189, 83,185,103, 80, 38,209, 16,172,157,245,144,163,195, 0,104,106,170, 37,164,188,198, - 18,195, 77,106, 22,202,118, 92,242,164,164,200, 27,183, 30,121, 77,171,217, 53,249,170, 55,222,253,201,255,251,127,254,127,127, -251,203, 63,255,151,255,106,188,179, 25,187,148, 99,166,251,143, 31,159, 61,123, 62,185,186,232,247, 7,189,170,167,104,131, 94, -245,183, 63,249,197,206,198,104, 56,168, 94, 29, 28,236,221,187,191,152, 78,217, 57,239, 3, 59,159, 49,127,228,124,126,163, 18, -175,139,210,161, 20,129,100, 3, 46,220, 20, 40, 18,103, 66, 14, 2,114,168,123, 91,187,214, 70,118, 46,251,152,192,121, 48, 65, -118, 96, 96, 77, 75, 76,169,107, 32,138,235,213, 23,231, 23,207, 63,251,164, 63, 28, 63,120,227,189,173, 17,191,120,246,172, 83, -114,140,237,170, 35, 95, 3,122, 38,117,218, 58,246,211,217,245,179,131,195,139,203, 43, 81,248,238,183,190, 95,123,143,132, 41, -105,215,197, 59,247,223,188, 60,126, 10, 85,125,242,233,207,118,239,188,102,139,163,147,163,151,224, 42, 80, 81, 75,131,205,253, -166, 89, 17,121,102,215, 53,243,213,244,188,137,241,248,242, 98,185, 90, 94, 76,206,174,174,175, 13,144, 17, 23,171, 37,162,219, - 28,140,238,239,110,158, 76,174, 62,120,250, 98,217,118,193, 85,227,225, 40,132,138, 8, 85, 12, 10,150, 35, 99, 47, 80, 13,123, -253,126,143,221,172, 89,150,141,253, 58, 90,209,106, 36, 68,231,188,169,130,105, 8, 97, 80,247,154, 20, 3, 57,145,248, 47,126, -244,195,255,250,191,252,175,118,239,221, 1,128,166,109,103, 87,215,179,139,179,179,243,227,131,131,131,143,158, 61,253,224,147, -103,151,243,165,117,221,163, 33,239,143,199,227,205,241, 63,255,103,255,244,203,223,248,250,241,243,207,140,186,167, 79, 95,254, -205,127,252,137,105, 90,182, 93,119,189,218, 29,141,182,199, 67, 98, 84,179,140,177, 69, 4, 53,169,216, 27, 64,237,157,168,117, - 73, 17,136,179,105, 93, 37,143,109, 73,147, 38,115, 57,203, 77, 64,132, 14, 72,146, 34, 50, 33,181,154, 16,160,242, 14,153, 60, - 58, 51, 97,230, 20, 35, 19, 57,162, 54, 70, 65, 97,100, 34,146,164,209, 20, 1, 99, 74,222,185, 64, 20, 85,193,160,252,101,136, - 42,239,188,247,146, 84, 5,144, 64, 82,110,228, 32,212, 12, 81,209,236, 82, 70, 2, 98, 6, 34,239,188,243,204,196,177, 19, 42, -109,204,202,159,127,188, 64,200,236, 8, 16, 25,185,208, 78,144, 76,164,116,153,113,105,236,203,171,234, 20,163, 39, 6, 68, 83, -141, 41,121,231,139,139,142,137,153,204, 18, 24, 50,162, 34, 56,239,192, 76, 98, 4, 66,199,108,152,255,158,142, 28, 49,179, 98, -126,121, 3, 0, 56,226,204,163, 66, 77, 64, 36, 41, 33, 17, 57,236, 82, 71,132,206, 99,221,247,206,145, 34,169, 16,115, 64,118, -160, 22,219,102, 42, 54,190,251,112, 54,155,191,122,246, 98,190, 88,154, 8, 34,238,239,237,142,135,163,243,211,179,199,219, 27, -177, 93,184, 80, 63,184,127,187, 93,197, 36, 34,102, 41,165,249,124, 57, 26,244,183,183,183,142, 47, 39, 11,145, 10,201,179,137, -161,169, 32, 24,168,154,232,178,137,179,249,116,107, 60, 10, 33,212,189, 30, 50,117,177, 69, 67, 67, 65,228,124, 6,170, 10,136, - 73, 23, 59,137,181,115, 64,212,197, 46, 38,113, 4,222, 85, 49,137,170, 5,207,156, 91,225, 0,200, 49, 32, 39,233, 24, 9,217, -139, 38, 66, 12,228, 82, 18, 53, 13, 62, 83, 55, 65, 74,230, 3,145, 80,162, 48, 81, 39, 98,217,139, 99, 70,200, 49, 41,255,243, - 63,249, 35, 6, 34, 96, 68, 99,162,155,162,189,140,172,203, 8, 2,184, 97,138, 1, 98,190,114, 26,222,164,159,214,227,110,158, -254, 13, 11, 21, 11, 50,115, 55,165,117,231,224,154,136,152,235, 8,214, 69, 26,132,168, 85, 8,103,103,151,155,227,177, 22, 45, -209, 16,145,179,155,135,110, 58,208,243,170,198,110,216,144,249, 2, 65, 89, 17,208, 53,142, 6,141, 74, 60,137,224,134, 76,133, - 64,144,177,120, 25, 73, 10,217, 6,105, 6, 38,249, 34, 64,165, 46, 1, 48,255, 15,145, 28, 97, 64,116, 68,133,117, 69,235, 66, -141, 28,162, 31,142,247, 29,232,252,226,216, 87,131,193,198,246,243,207, 62,250,139,127,251, 31,255,179, 63,255,151,119,239,239, -205, 98, 88,172, 0, 0, 32, 0, 73, 68, 65, 84, 47,230, 11, 68,116,193,115, 8,136,180,123,239,193, 7, 63,253,251, 94, 47,120, - 31,170,208,243,190,154, 78, 39, 31,124,246,244,215,190,244,238,253, 7, 15, 22,179,105,221,235,173,102,243,170,170,205, 4,200, - 57,174, 10, 79,223, 82,174, 33, 52,203, 25, 96, 46,182,184,117, 25,113,185,126,163, 67,100,181,212, 31,111,135,170, 87,118,106, - 76, 42,136,150, 10,241,205,121,149, 36, 93,219, 77, 39, 92,247, 8,233,252,240,240,240,232,229,230,237,135,123,183,118, 7, 27, -163,103,207, 94,173,150, 75, 75,105, 57,187,178,212, 50,249, 16,168,242,166,170,231, 23, 23,175,142, 78, 38,179,153,115,252,250, -237, 59,210, 44,218,102, 41, 18,119,246,110,135, 42,204, 23, 43,135, 54,222,217,111,163,168, 68, 35,214,118,217, 31,110,134,254, -168,157, 95,184,224,130, 15,210, 78, 23,243,107, 32,247,234,228,248,197,233,241,189,253, 59, 49, 37,252,255,169,122,179, 95,207, -178,235,190,111, 77,123,159,243, 27,238, 88, 99,207,221,236, 73,164, 72, 74,156, 36,146,226, 40,106, 36, 69, 81,164,133,200, 38, - 69, 89,177,173, 40, 72,140, 12, 22,242, 18, 36,128, 31,243, 15,228, 37, 47, 9, 2, 35,128, 96,196,116,100, 11,176,104, 72,130, -172, 64,150,100,155, 18, 7,145,236,169,170,250,214,173,186,117,231,225, 55,157,179,247, 94,107,229, 97,159, 95,181,242,208,232, -135,174,170,174,170,251,187,231,236,189,214,247,251,249, 0,143, 71, 13, 56,148,220,237,110,110, 4,225,215,246,238,159, 94,206, - 54, 70,147,174,239,163, 52, 34,204,204,141, 52,227, 81, 59,157, 76,198,237,120, 58, 30, 3, 98, 74,217,204, 74, 78, 44, 64,196, - 41,149,255, 95, 17,195, 33,229,220, 84,130, 21, 96,133,164, 92,204,230,239,126,249,165,127,252,247,127,243, 11, 95,252,146,140, -167,174,186, 90, 46,206, 79,142,142, 31,238, 61, 60,120,112,240,232,224,141,123,111,191,181,247,176,235,243, 98, 49,127, 98, 36, -207,220,190,249,147, 31,251,248, 23,127,249, 11,227,201,232,228,248,225,157, 59,111,244,185, 80, 32, 96, 60,222, 63, 26, 17,223, -220,221,158,140, 90, 4,119, 32, 29,148, 44, 64, 66, 8, 82, 69, 60,125, 42, 82,117, 63, 8, 6,104,232, 21, 87, 57,140,254,134, -173, 87,253,104, 97, 42, 86,155,164,110,186, 78, 57,122, 12,226,230,165,104, 54,103,150,170, 2,110,131, 48,114,229, 7,120, 21, - 3, 3, 54, 77,163, 69,135,254,202, 99,119,177,176,102,117,175,231,130,225,177, 42, 33, 34, 34, 48,168, 22, 48,171,225, 97,102, - 65, 36,105, 4, 17, 89, 2,173,239,224,248, 88,164, 12,107,126,149,112,197, 82, 58, 32, 19,186, 85,221,241,112,254, 42, 53,167, - 11,100,106, 44, 28, 99,163,102, 41,103, 38, 22,145, 74,243, 27, 34, 48,110,176,222,184, 14,171, 87, 0, 14,209, 7, 4, 12, 35, - 50, 5,102, 34, 85,211,148,134,166, 19, 81,177, 12,224, 76,236, 80, 17,151, 68,132,102, 0, 70, 44, 82, 77,112,195, 2,187,102, -139,205,201, 52,169,198,235, 79, 36, 45,255,254,207,254,242,236,226,162, 62,224, 70,109,123,109,123,123, 62,159,189,231,230,206, -171, 79,221,158,182,237,124, 49, 59,159, 47, 1,105,123,115,179, 79,217,172,184,251,162,235,175,174,102,219, 27, 83, 9,225, 42, - 39,206,214, 54,244,216,117,137,196,103, 87,151,145,112,107,103, 27, 99, 44,197, 76, 11,147, 32,227, 64,122, 33, 66, 66, 85,175, -110,206, 97,107,232, 64, 72,177,137,106,158, 74,207, 67, 75, 0,234,181, 76, 72,220,220, 77, 9,217,220,221, 52, 72, 0,162, 98, - 90,185,158, 53,222, 10, 6, 84, 57, 23,238,110, 32, 66, 85,100, 10,195, 78, 17, 9, 49,231, 36, 67, 78, 30, 29,153,193, 42,106, -172,106, 66,209,134,175,159,213, 77,123,125,208,195,112,182,246,129,213,230,235,217,188, 15, 3, 24,243,250, 40,174,118, 2,164, - 58,106,124, 39, 0,227, 44,193, 74, 81,115, 80, 67,128,146,250,208, 52, 12,185, 20,175, 44, 22, 31,104,148, 0, 72,192, 84, 65, -151,235,201,248, 26, 3, 90,231, 61, 53,232, 60,212,184,134,177,188,175, 27,182,245, 20, 95, 7,239,180,190,240, 13, 47, 6,119, - 43,149,200,235,158,213,164, 86, 6,201,135, 0, 88,189, 46,212,209, 24, 65,197, 92,160, 0,152, 91,113,167,209,100,139,205, 86, -231, 51, 77,101,250,212,238,219,111,124,255, 95,253,254, 31,124,238,167,127,238,153,167,174,207, 47,206,157,163, 27, 74,219,186, -154,165,124,253,137, 91,207,191,244,202,163,253,187,109,211, 86, 56,246,187,223,253,234, 31,255,233,191,255,225, 91,119, 62,246, -145, 15,222,125,227,135, 28, 37,247,169,109,218,102,186, 37,238,230, 5,134,251, 18,107,202,142, 72, 40,110,197,144,201,171,194, -144,220,134, 78,150,123,189, 82, 84,246, 95, 52, 51,102,242,146,205, 24,209, 93, 21, 20, 93,168, 20,115, 0,203,125,152,108,131, -132,146,186,110, 49,219,185,245,220,104,114, 77, 75,118, 20,203, 89, 23,103,189, 5, 8,109, 16, 22,194, 16,140,136,186,213,106, -181, 90,229,146,213,124, 50,106,167,227,201,120,251,250,226,236, 97,206,105, 60,153, 94,158, 60,236,150,243,102,247,214, 98,118, - 24,227,102,215, 41, 97,140,163,105,211,198,229, 98, 49, 26, 79,143,246, 95,227,184,105,230, 39, 7,247, 54,118,111, 95, 45,150, - 87, 23,151,151, 87,151,211,209,196, 76, 17,253,198,134,176,141, 15, 79,207,132, 67, 46,118, 49,159,223,222,221,109, 66, 72,150, -117,149, 28, 64, 43,249,121,173,254,237,251, 52, 20, 18, 0, 75,182,150,163,183,126,181, 90,112, 93, 5,173,211,145,179,213,106, -107, 83,162,200,213, 98, 65,147,209,127,245,245, 95,255,210, 47,126,254,230,237, 39, 65,184,228,126, 49,155, 29,236,221, 57,120, -248,240,244,242,252,209,233,233,209,209,233,217,229,172,235,186, 92,244,222,254,193, 7, 63,245,209, 95,251,234,215, 54,183, 55, - 46,143, 15,112, 28, 15, 78, 30, 29, 28,159,110,117,249,209,201, 89, 89,118,215,183, 54, 70, 33, 84,241, 69, 37,212, 19,177, 91, - 70,224,218, 50,175, 59,163, 48, 64,179,171, 32,200,235, 73, 22,107,199,199, 21, 17, 8, 67,241,108,238,232, 16, 68,212, 10, 2, -155, 58, 50,176, 48, 58,228,172, 69, 75, 51, 10,214, 91, 49, 3, 98, 34, 82,128,100, 26,232,113, 53,207, 9, 61,229, 84, 11,227, -238,238, 8, 66, 66, 12,230,181,111,239,194,164,102, 76, 12,232,174,170, 86,132,184,250,179,193,234,123, 9, 88, 56,198,152,251, - 92, 45,119,196,132,230,170,142,132,181,139,224,213,235,188,254,158,170, 22, 53,192, 10, 6,198,154, 95, 20, 98, 43,198, 49,178, -144,169,247, 57, 17, 64, 8,204, 72, 54, 80, 2,217,235,239,155,200,193, 57, 68,183,108, 14,174, 42, 33,212, 56,204, 0,254, 54, - 40, 41, 91,213,235,212,233, 36, 99, 46,134,136, 34, 81,179, 18, 98, 77, 14,214, 56, 95,140,193, 17,204, 33,231,202, 45, 64, 4, - 3,119,114,239, 83,214,201,180,235,251,189,189,183, 23,203,101, 37,238, 78,154,230,125,239,121,207,183,190,247,253,103,166,252, -236, 19,183, 28,121,131,195,139, 28, 30, 28, 29, 95,186, 74,144, 40, 2, 30, 83,201,110,154, 82,153,205,151, 44,125, 19,227, 57, - 98,187,234, 67,136, 33,142, 0,113,177,234,180,207, 55,111,239, 18,135,250,148,174, 71, 79, 38, 10, 44,166,102, 86,123,139, 0, - 68,224,142, 84, 25, 60,188,234,123, 93, 46, 41,196,128,100, 94,135, 97, 22,145, 20,170, 77,139,214,154,101, 30,128, 97, 3, 39, - 22, 74, 46, 18,197,181, 84,146,137,187, 19, 56, 19,230, 58, 64,119, 39, 68, 85,245, 98,192, 96,174,252,213, 47,255,242, 32,242, - 92, 87,129,134,150, 81,253,209,180, 86,122, 12, 13,248, 53,255, 7, 0, 8,137, 42, 31,134, 9,201, 6,147,198,186,183,191, 6, -101, 84, 92,212, 48, 37,169,184, 12, 53,211, 58, 94, 7,170,217, 38,128,146, 58, 67,153,140, 6,107, 73,101,243, 12, 72,151, 33, - 75,255,120,234,179, 6,231,226, 59, 36,246,199,167,238,122,156,175, 16,204,250,113,169,131, 30,170, 0,189,202,134, 52,127,135, -113,178,254,165, 7,233, 88,117, 57, 97, 28, 4,129, 48,148,102, 1,129, 80, 16,205, 20,166, 27, 55, 24, 40,245, 43, 68, 30,111, - 95,187, 60, 63,249,103,191,251,141,159,248,216, 39, 63,244, 19, 63, 89,208,205,137, 36, 80, 16, 68,164, 70,170,219,122,107,123, -247,123,127,253,173, 70, 68, 98,195, 44, 77, 24,161,235,183,190,243, 55, 47, 63,247,244, 51, 47,190,116,126,118,250,234,143,254, -216,229,249, 9,197,136, 21, 12, 28, 27, 83,173, 23, 29,175, 87, 12, 17,215, 60, 72, 73,253, 29,219, 8, 12, 99,172, 0,128,161, -153, 52,227, 22,153,205,192,213,136, 5,212,172,100,168,141, 67, 71,237, 59,108, 26,239, 22,230, 14,163, 29,195,176,152, 93,222, -126,250,153,241, 56,220,121,243,110,202,154,138,177,132,102,178,129, 96,163,198, 0, 32,245,253,241,241,241,195,147,147,249,188, -187,182,181,253,204,205,155,227,182,237, 23, 87, 40,194,100, 94,250, 2,152, 87, 23, 44, 35,102, 58,121,120,247,246,115,175,140, - 39, 91,147,233, 54, 34, 93, 94,157, 8,142,227,120,210,140,118,118,111, 60,131, 49,236, 29, 29,134, 24,172, 88, 82,189,185,189, -177,184,186,124,251,240,248, 98,213,165,156, 75,201,211,209,228,240,244,100,217,247,163,209,200,244, 49,218, 31,235, 5,189,118, -171,115, 46, 67,209, 98,232, 92,123,211, 4, 84,232, 74,166,199, 54, 71, 34,112,116,211, 85,223,125,236,253,239,251, 31,255,219, -127,252,243, 63,255,139,163,141,205,130,182,154, 47,102,231, 71,123,119, 94,191,115,231,206,131,195, 71,119,246,238,239, 31, 28, - 93,204,102,169,148,251, 15, 15,217,225,127,250,173,175,255,231,191,254,181,210, 47,115, 90,190,241,250,107,111,190,241,214,201, -233,249,124,177,186, 60,189,156,176, 92,223,220,104,130,212,130, 89,109,182,153, 1, 2, 4, 18, 36,124,220, 55,102,228,172,190, -214,207,160,130, 34, 16,177, 56, 12, 90, 95, 43,197,135, 0, 24, 3, 14, 50,221, 97,148, 72, 84,121,169,160, 30, 99,112, 32, 29, -146,109, 94,141,154, 33, 72, 53, 25, 33,129,173,105,163,132, 84,143, 61, 49, 48, 85,152,181,163, 13, 91, 92, 24,224, 7,165, 16, - 9, 49,162,224, 99,143, 37, 97, 61,249,130,106,133, 83, 57,135, 88, 89,102,245,142,136,196, 52, 64, 65,180,178, 6, 96,221,172, -103, 98, 83, 87, 45,109, 8,200, 4, 72,109, 59,114,117, 55, 75, 37,183,109, 91,211,114, 89, 51,178, 4,150, 58,175,117, 85, 67, - 12, 44,170, 69,205,153,128, 88,144, 4,153, 56,202,160,127, 94,247, 18,131, 80,101,115, 87,254,196, 32,152, 68,174,231, 61, 7, - 36,146, 32,193,215,104, 20, 22,113,135, 46,171,171, 19,113, 94,117, 11, 76,211, 91,207,189,254,218,157,187,247,246,114,201,128, - 64, 72,227,201,228,240,236,124,108,171, 15,189,252,162,180, 99,174,127,113,204, 27,177, 97,164,179,213,106, 52, 26, 95,219,222, - 90,172, 58,213, 34,194,171,156,186, 85,218,217,156,160, 68, 72,186,187,179, 89,204, 1,125,149, 74, 32,223,190,118,173,126, 53, -107,182, 67,130, 32, 81, 81,203,185,135,161, 3, 92, 25, 6, 40, 66, 78,172, 93, 7,174,132, 94, 31,146, 73, 53,178, 0,135,100, - 89, 0,161, 2,150,171,110, 69,173, 88,169, 84,126, 98,118,119,225, 10, 54,112,172, 27, 11,115,119,232,115, 65, 0, 18, 68,164, -156, 50, 11,163,160,155,119,171,196, 95,253,202, 47, 33, 16, 62,214,150, 14,159, 50, 24,198,187,184,182,246,213,235, 72, 45, 25, - 80, 61, 54,250,208,181, 92, 87, 93, 97,157, 94, 30,118,153,176,198,152,250, 80,232,175,105, 21,120, 28,107, 91,139, 89,153, 80, - 68,174,150,253,246,100,188,206,177,172,191, 81,135,152,200, 99, 3, 83,125,250, 15,163, 42, 7, 95, 19, 66,135,148,207, 80,248, - 4, 95, 19, 5,106, 54,127,160,128,213, 23, 24, 13,107, 84, 90, 59, 99,235, 11,133, 43,215, 9,152, 5,227,154,170, 94, 79,141, -132, 72,128,138, 72, 77,179,217,112,236,230,179, 82, 74, 59,158,164,126,249,255,252,222,191,126,247,143,126,240, 83,159,250,169, -226, 70, 18,173,100, 22,137,177, 1,114,116, 50, 51,205,186,177,115,109, 53,155,221,187,119,103, 60,106, 70,147, 41, 19, 78,219, -184,183,255,112,182, 88,125,248,195, 31,154, 93,156,157, 93,156,175,150, 51, 65,146, 16, 88, 26,176, 74, 61, 32,215, 82, 52,161, - 87, 93,189, 59, 2, 75, 24, 30,238,235,202,216,250,143,137,227,237,157, 16,163,229,226,169,175, 19,124, 64,228,208,212,191,106, - 96,212,148,220,212,145, 39,215,175,165, 98, 15,246,246, 23, 93,255,228,211, 79,141,167,237,254,189,189,213,114, 46,177,105, 68, -132, 72, 70, 45, 67,114,203,169,239,247,246, 31,158, 92, 92,206,151,221,173,157,173, 23,158,124,242,242,226, 76,198, 27, 55,159, -122,151,132,105,234,242,120,115,231,209,222,107, 72, 4, 86,220,140,161, 28,239,191,198, 44,139,171, 83, 4,230, 16,151,171, 21, -120, 22, 9, 7,143, 30,254,224,238,155,165, 20, 4, 13, 80,250,148,226,104,251, 98,190,188,127,240, 48,245, 73,130,148,146, 82, - 46,171,174,103, 97, 33, 30,148, 47,131,181,203,137,107, 62, 4,194, 90,168, 91,207,234,102, 94,137,181, 69,181,126,209, 25, 81, - 85,183, 54, 54,127,235,239,253,103,255,243,239,252,147,119,253,200,123, 81,130, 89, 89, 94, 93,157, 60,218,191,251,214,235,175, -189,245,230,254,193,225,157, 7, 7, 71,167,231,102,142,200,155,211,205,207,124,248, 3,191,243, 15,190,246,145, 15,127,224,244, -228,224,193,222,189,195,227,163, 56, 29, 49,241,157,215,223,222,110,155, 39,119,119, 55,198, 35, 66,174,221,162,162,102,197,144, -134, 34,210,227, 79,117,213,200, 20, 53,124,140,187, 28,216, 25, 96, 94, 28,192, 75,241,162, 54,124,251,184,185,149,172, 8, 80, -215,199, 67,191, 20, 77,205,218, 81,163, 10,128, 16, 2, 13,191,130, 57, 11,187, 13,159,109, 53,231,138,185, 70,116,116,102, 68, -166,146,213,220,107, 89,191,254,176, 24,197,205,189,216,122,141, 4,228,228,106, 72, 36, 81,234,208,211,208, 16, 73, 98, 36, 71, - 45,250,248,236, 84,231,229,176, 46,108, 51,139,185,173, 7,166, 53, 78,140, 77,219, 20, 53, 98,174, 92, 63, 55,119,130, 38,180, -166,131,150, 7,106, 50,193,193,235,157,134,165,109, 26, 53,171,158,102, 22, 1,170,106, 42,172, 66,205, 97,172, 1, 96,174,106, -234,104, 65,196,205,112, 64, 51,129, 91, 65,198, 16,132, 68, 28,173, 6,189, 99, 96, 65,236, 75,113, 43,224,228,142, 90, 52,121, -226, 27, 79,158,159,207,246,246,246, 86,203,101,165,196, 63,255,204,147, 27, 27, 91,151,103,199, 63,245,242, 11,211,205, 45, 14, -177,150, 30, 57,132, 81,219,140, 66, 12,102,171,126,217,153,183, 77, 59, 26, 79, 22,139,149,106, 61,233,226,241,249, 69, 35,176, - 61,110, 36,136,179, 92, 94,206, 54, 55,198, 18, 35, 20, 67,162, 16,155,166,109, 81, 66,125, 10,161, 1, 2, 26, 58, 86,175,156, -176,170,163, 91,125,220,155,131,169,214,244, 68, 5,196, 10,135, 84, 50, 85,189, 44,113,189, 42, 17,179,149,130,213,101,205, 53, -165, 90, 31, 89,200, 64,106, 90,187, 14, 34, 84,241,241,196,100,128,150,173,126,255, 8, 62, 70, 36,226,160,133,115,180, 53,148, -119,200, 64, 85,212, 21,241, 90,178,240, 56,220, 50, 60, 97,235,188, 75, 0,173,244,206,193,104,168,153,193,223, 66,156, 59, 16, - 16,227,128,109, 31,182,172,232,104, 4,104,234,200,220,247,157, 34, 1,168, 91, 53,144,185,187, 85, 72,239, 0,151,135, 1, 11, - 92,205, 30,104,238,110, 3, 29,119, 29, 99,127, 44, 6, 25,134,254,248, 14, 59,198, 31, 31,245,215,128,204,225,210, 83,215, 8, -132, 14,164,142,100,238,172,180,206, 27, 13,252, 30,116, 53,156, 76,174,177,150,249,217,177, 34,143,167,155,162,171,255,251, 95, -254,139,205,157,103, 63,241,241, 15, 25, 11,228,190, 44,230,212, 78, 89,154,202,170, 55, 83, 77, 6, 72,121, 57,127,255,143,125, -232,173, 31,252,205, 98, 57,107,154,182, 29,111,180,155, 91,239,127,239,123,190,243,189,239,190,241,250, 27,239,250,145,247,252, -197,159,252,209,139,175,188,251,226,244,176,235, 3,135, 72, 52,169,209, 33, 32, 18,137,136, 84, 67,238,232,224,165, 32,177,150, - 12, 81, 88,194, 99, 47, 57, 2, 74,140, 86,119,203, 33, 32, 1, 40, 89,238, 60, 0, 9,155,106, 73,102,170,200, 50,190,190, 35, -147, 54,221, 63, 76,125, 65, 83,235, 23,200,215, 44,245, 78, 77, 32,147, 32,161,153, 94, 93, 29,181, 91,193, 12, 82, 74, 93,206, -102,166, 94,158,126,226, 73,230, 24,219,166, 29, 77, 66,104, 0,209,209, 78, 31,188,182,185,117, 19,226,244,234,226,112, 50,106, - 75, 49,119, 89,245, 93, 28,109,104,233, 79,246,222, 28,221,124, 22, 11,228,146,175,186,126, 99, 50,106,144,150,253,226,232,172, - 75, 57,191,248,236,238,243, 79, 63,125,121,117,121,103,127,127,149,243,246,116,115,115, 50, 45,170, 53,237, 81, 87, 12,230, 54, -112, 14,141,221, 13, 12,140,214,103,137, 53, 63,147, 16,182,101,178, 96, 89,229,164,165, 0,208,103, 63,246, 19,191,253,245,175, -127,240,131, 31, 65, 9,203,212,151, 46, 93,158, 29, 61,216,187,123,231,238,221, 7,199,199, 7,199, 39, 23, 87,243,148, 82, 42, -170,186,250,145,231,158,253,233,159,252,240, 39, 63,250,161,110, 62,123,248,112,111,101,229,181,253,253,221,205,233,236,242,252, -248,237,195,167,110,236, 78,218,198,220,192, 0,153, 7, 35, 11, 14,201, 23, 90, 31,128,234,216, 23, 0,114, 54, 3, 21, 98, 36, - 54,247,154, 56, 84, 85, 87,205,154,187,190,147, 16, 4,153,153,193, 16,136, 66, 16,115,115,115, 66, 44,166,136, 20, 67, 83,114, - 41,197,137,145,131,228,156,235,156,180,226,198, 66, 45,175,154,173,219,206,192,224,107, 86,158,185,154, 3, 82, 32,115, 21,137, - 68,172,170,128, 64,129,144,168, 58,108,128,128,155, 48, 96, 59, 24,153,217,235, 59, 82,139, 57, 18,145,155, 59,168,132, 0,102, -102, 3,168,207, 29,173,162,216,221,161, 86, 66, 8,177,128,155,135, 16,192, 93,221, 28, 48,198,160,238,165,104,125,249,161, 3, - 26, 20,215, 97, 29, 34,108, 6,165,228,122,144, 34, 51, 47, 86,125,126,224,195,131,165, 90,103,145,169, 54, 3,204,114,201, 42, - 36,101, 16, 60,212, 11, 60, 19,137,153,170,106, 12,132, 28,138,218,154, 74,199,106, 30,152, 86,221, 10,119,110, 34,143,126,240, -253,191, 58, 62, 57, 3, 84,102,154, 78, 39,161,137,103, 23,151, 63,241,226,243,219,215,174, 23, 71, 84,139,177, 81,118, 45,125, -178,130, 66, 79,222,184, 54,105,227,193,229,153, 55, 45,182,227,146,138,154, 78, 71,205, 43,175,190,252,253, 31,188,126,125,186, - 65,196,224,124,117,185,100,128,102, 52,114,117,103, 20,145,216, 54, 44, 65,221, 66,108,220,113, 57,191, 42,171, 21, 19, 18, 83, - 81,173, 10,110, 95,195, 96, 25,221,133,170,246,150, 3,149,140,110, 26, 66,228,122,151,130, 66, 65, 92, 13, 28, 80, 4,220,145, - 9,128,153, 84,179, 57, 86, 18,135,187, 59, 11,187, 91,238, 13,184, 26,191, 17,193,155, 40,142,132,185, 72,229,237,255, 45,207, -167, 85,234,244, 0,227, 27,234,191,104,245,177,190,206,198,215,201,204,227, 12, 31, 85,170, 58,160, 16,224,176,114,169,167,120, - 48, 85, 34, 2, 38, 7,112, 37,112,165,186, 42,170, 18,141,138,166, 67,136, 65, 2,148,229,114, 53,109,216,215,209,220, 1,235, - 72,130,128,192, 6, 74,102, 90, 61,140,195, 75,162,128,105, 25, 14, 27, 53,148, 54, 12, 33,125, 96,220,212, 9, 34, 83,157, 59, - 13,181, 91,170,236,174, 53, 22,109, 80,247,209,154,100,128, 80, 91,172,195, 59,108,232,146, 54,113,131, 85, 75,214,229,242,106, -186,125,115, 58,150,111,252,139,127,121,213,243, 87,126,246,179, 24, 56,119, 29, 5, 78, 93,215, 54, 6,104, 3, 27, 36,247, 86, -136, 2, 47, 46, 23,132,242,234,203,175,124,247,245,239, 52, 77,219,142, 38, 65,154,103,159,123,246,225,195,131,255,248,173,191, -186,182,187,225, 8,142, 20,219, 81, 55, 95, 76,198, 91,104,102,132, 76,193,209, 6,210,252,112, 10,136,166, 5, 76, 73, 2, 56, -186, 42, 18, 33,203,223,106, 39,187,101,163, 24,202,106,137,178, 86, 62, 6,174,185,104,100,105, 54, 38,161,141, 80,108,118,113, -110,104,197, 74,159,115, 96,170,165, 58,142,155, 64,174,101,181,188, 58,198,173, 91,134,158,179,246,169, 79, 69,221, 96,103, 60, - 97,193, 8,160, 90, 70,211,105, 8, 97, 49, 59,115,222,104, 55, 54,132,169,191,162,166,221,228, 24, 71, 27, 29, 35,148,180,236, - 23,139, 66,180, 53,217,188,186, 56,207,169, 39,239, 91, 76,251,199,151,177,105, 75, 49, 64,126,227,222,157,107,215,182,111,221, -186,177,247,224,193,124, 62,239, 82,154,182, 77, 16,169,196,149,154,175, 37,115,100,246, 90, 34,174, 83,104, 70,115, 0,179, 1, - 43, 97,102,136,196,184, 57, 26,245, 37,111,111,111,252,215, 95,251,141, 47,125,225,243,237,214,246, 42,103,235,186,126,181, 56, - 63, 62,216,123,251,238,157,189,135,123, 7, 7, 39,151, 23,245, 15, 4,230, 59,211,201,251, 95,124,246,107, 95,254,210,198,180, -189, 56, 63,125,253, 7,223,167,209,116,222, 47, 90,145,183,126,120,119, 20,227,179,215,119, 36,200,192,123, 33, 28, 8,183, 6, -204,140,110, 21, 56,103,232, 78, 40,136, 14,144,146, 18, 58,209,160,166, 51,213, 92,114, 5, 19,116,125, 90,165, 46,245,201,205, -146, 65,211,182,109, 24, 1, 40,162, 8,178,155,117, 90,154,216, 8,139,213,137, 12, 1,128,231,146, 75, 46,196, 2,224, 65, 16, -136,188,254,231,122,238,179, 97, 69, 85, 80,173, 74,242, 98, 61, 12,214,161, 7,173,147,246,106,197, 29,156, 43,226,128,165, 86, - 7, 88,168, 86, 90, 0,161, 20,117,243,208,114,213,125,148,129,201, 12, 0,200, 40,106,134, 3, 50,209,115,206, 18,132, 88, 16, - 32,196, 80, 65, 3,197, 84,136,153,165,170,125, 40,240,122,106,204,204,140,158, 57, 70, 4, 79,125, 34,102, 7,100, 22, 22, 46, - 10,128, 90,157, 16,182,190,139, 19, 98,173,132, 1, 20, 85, 69, 18,116, 42,110, 80,177,136, 49,212,239,243,162, 5,200,219,201, -200,114,201, 37, 49, 72,165,223, 32, 0, 35, 25, 88,118, 26, 53,227,171,139, 83, 36, 52, 87, 66, 26,143,218,247,190,242,242, 27, -247,238, 63,209,198, 39,110, 92,115, 17, 2,174, 29,162,218,132, 15,177,117,114, 43,190,181,179, 35, 28,206, 46, 47, 46, 82,122, -225,185,167,154,166, 77,169,191,255,240,112, 20,228,250,246, 38, 16,171,123,183, 92,238,236, 76,131,196,106,141, 6,247,146,146, -230, 82,227,236,220,182,204,132,109,212, 92,114, 86, 52, 53, 34, 2, 71, 22, 85, 35, 66, 3,118, 47, 66,148,139,101,243, 24, 69, - 45,104, 89, 57, 50, 49,184,163,103, 37, 30, 70,221, 69,139, 21,173, 97, 45,150,208,149, 2, 96,132,140,204,170,133, 0, 72,208, - 10, 40, 0, 49, 48,144,155,131,171, 8,136, 59,161, 2, 49, 33,113, 13,255, 57, 26, 13, 40,130,225, 25,237,234,143, 81,193,117, - 28, 99, 86, 97, 38,245, 31, 0,160,186,153,169, 8, 26, 92,247,135,234,110,215,209,234,161,160, 18,199,220, 84,144,212, 7,151, -164, 87,102,173,209,116, 50,154, 45, 87,155,227, 45, 85,179, 10,217,169,112,211,186,156,177,186,155, 1, 7,119, 43, 85,252,184, - 22, 40,213,209,167, 33,210,154, 68, 63,252, 91,213, 24,217,107, 73, 99,205, 45, 25,126,159,143, 35, 12, 85, 73,101, 62,212,119, - 7, 78,142, 15, 51, 74,174, 68,189,192,106,125, 74,221,106, 37,113, 60, 25,143,255,240,155,191,191,119,124,245,107, 95,252, 37, - 48, 77,243, 21, 8, 33,141, 43,231,171, 70,210,173, 87, 55,114, 77, 38, 77,201,189,165,171, 23, 95,124,229,181,183, 94, 95, 44, - 22,227,209,188, 29, 77, 67,104, 94,122,241,249,191,254,246,183,247,247,246, 62,252,209,207,222,187,251,218,205,219, 79, 28,237, -239,229,210, 17, 5,150, 88,107, 5,128, 58,100, 96,136,204,242,122, 19,129,192, 3, 79,217, 75, 6, 64,146, 0,170, 53, 16,236, -230, 90,172, 70,143,165,105,220, 13, 74, 1,179,176,185,209, 76,198,110, 94,186, 62,151,186,100,206, 23,167,103,169,175,211,110, - 18, 9, 18, 67,238,251,148, 11, 33,131,231,249,114,145,250, 84, 74, 14, 65, 38,227, 81,202,165,148,254,230,245,167,219,201,100, -121,121, 28,227,104, 50, 41, 77,172, 9, 64,118,192,249,217, 33, 69, 42, 89,103,151, 39,170, 62,221,184,121,121,188,215,229,252, -230,221,215,190,115,231,110, 46,152, 77,111,223,124,130, 89,206,175,174,174,174, 86,243,213, 66,152,183, 54,166, 41, 23, 34,208, -162, 86,245, 13, 18,107,159,179,184, 7, 51, 5, 21, 67, 71, 44,158, 45, 33,215,199,212,128,201,171,226, 58, 71,244, 95,249,220, -103,126,253, 87,127,237,213,151,127,164, 39, 47,238,125,183, 92, 94,156, 31, 30,236,191,117,247,238,219, 15, 15, 14, 78,207,102, -243,133,154,239,108,110, 45, 87,203, 27,155,155,191,250,243,159,249,192,123,222,125, 53,187,184,119,119,239,244,226, 10,218,136, -164,111,190,126,103,179,105,111,239,110,141,154, 88,177, 89,104,128,132,224,238,197,220,181,105,218, 92, 10, 19,187, 89,214, 82, - 93,195, 61, 25, 40, 80, 32, 51,171, 99, 76, 51, 16, 33,118, 66,242,148,148,168, 9, 82,140,108,185,236,199,109, 67,128, 69, 75, -140, 17, 1, 74, 81, 7, 13, 28,132, 67, 85, 46, 68, 10,238, 85,185,142, 18, 4,215,236,123,215,181,163, 30,208,204,106,244, 69, - 75, 38, 0,103, 10, 78,142, 48, 16,154,152, 48, 16, 20,231,234, 6,169,119,106,170, 3,210, 10,220, 24,246, 59, 89, 85,152, 1, -129,132,173,216,144,199, 29,146, 98,162, 94, 74,201,245, 36, 84, 91, 69, 77, 20, 67, 34, 38, 33, 84,179, 90,144, 10,196,245, 85, -235,136, 34,140,142, 6,250,184,122,198, 60, 42, 57,195, 16,110, 39, 34, 2,119,213,194,200, 5,106,116,194, 25, 49, 48,170, 87, -168, 25,230,148,221, 92,152, 76,209,209,136, 25, 12, 2, 49, 11,171,170,154, 13, 93, 63, 45,232, 32, 32,117,100,207, 8,195,240, -203,204, 68,250,212,191,253,246,253,179,243, 43, 66,220,218,216,140, 44,123, 7, 71,161,244,175,188,235,105, 71, 6,132, 24, 56, -247,150,114,102, 17, 36, 86,119, 48, 37, 36,142, 56,217,218, 22,230,166, 91, 30,157,156, 30,155, 19,248, 72,232,165,167,159,148, -166, 69,162,217,178, 39,178,182,109,153,217,138,186,170,162, 89, 6,119, 19, 38, 15,161, 17,105,218,201,226,234,162, 20, 69,116, -172,213, 4, 39, 43,134,132, 14,206,129, 3, 54, 93,215, 5, 97,137, 65,221, 64,141, 36,186, 25, 88, 1, 96, 98, 6,128, 82,195, -142, 32,224, 0,102,110,102,102, 1,121,176, 82,184, 9,177,154, 42, 32,178, 49,114,229, 61,168, 89, 27,101,101, 36,143,135,212, -181, 0,186,238,232, 15,238, 14,175,180,102, 38,175,158, 13, 36,175, 32, 98,172, 76, 33,171,108, 57,183, 92, 91, 72,235,222,235, -218,236,204, 72, 86, 43, 81, 53,240, 49,100, 10,234, 64,200, 20,136, 28, 1,212, 29, 77, 55, 38,211,139,195,115,189,190, 93, 47, -142,132,224, 90,136,155,245,148,220,135,130,175, 19, 24, 88, 93,185, 61, 14,168,243,250, 68, 94, 57,233,132,174,117,228,226,238, - 14,130,166, 3,224,125,160, 35,172,239,212,239, 44, 16,170, 2, 13, 13,108,192,117,213,189, 21, 48, 50,142,188, 75, 5,186, 92, -178,170,239,236,236,252,224,251,223,250,206,107,251,191,250,229,191,179,115,227,102,239, 22,132, 43,147,178,153,110, 9,163, 21, -173, 70, 25,226,224,170,168, 6, 78, 33,182,237,116,227, 39, 62,246,169,127,251, 7,223,152,140,167, 77, 51, 65,166, 91,183,159, -218,221,219,255,235,239,254,240,249,119,189,212, 45,103,247,223, 90,228, 82, 70,211,109,115, 35,181,122, 0,172,223,205, 36,164, - 90,189, 53,196,200,213,210, 98, 80, 96,141, 18,116, 10,196,162, 41, 33, 59, 6, 9,227,209,128,163, 69, 79,243,165,150, 66, 18, -218,233, 8,152,202, 34,153,186,170,166,110,133, 28,195,168, 45,221,146, 7,103, 8, 9,203, 74,123,213, 66,131,221,102,153,178, -246,185,180,136,172, 37,155,229,174,219,189,121,171,109, 71,139, 11,159,157, 63, 42, 38,171,217,101, 8,194, 84, 98,228, 44, 44, -196, 77,187,145, 82, 86, 45,103, 71,251,103,203,217,198,198,246,101, 15,219,187,183,231,243,249, 38,211,219, 15,238,103,179,105, - 51,122,230,246,237,139,197,188,194, 6, 83,201, 0,174, 90,183,106,145, 70, 52, 80,234, 80,235, 37,145, 8,234,100,184,168,153, - 2,178, 5,166, 32,193, 12, 76,211,211, 79, 61,249,235, 95,254,242,103, 62,253,105,105, 70, 9, 49,231, 62, 45, 23, 87,103,167, -175,191,245,198,219,247,247,247, 15, 31,157,207,230, 41,229, 85,215,109, 76,198,109,224,207,252,248, 79,254,220,167, 63, 38,140, - 23,243, 51, 31, 53,119, 14,143,199, 49,204, 22,139,123,119,247,119,154,209,141,157,141,122,253,119,116, 66,145,224, 94, 60,187, - 34,144, 41,230,162, 72, 4,228, 94, 12,136,128,217,220, 24,217,200,213, 44, 6,113,244, 90, 66, 2, 38, 47, 86,178, 1,120, 96, -182,208,244,220,197, 54,132,166, 97,146, 16, 34, 33, 22,247,241,184, 45,165,184,131,170, 18,184, 1,192,144,185,196,162, 22,185, -114, 4,177,118, 59, 29,188,198, 0, 0,200,221,192, 75, 93, 73, 50,210, 48,117,103,242,186,124, 52, 4,174,200,108, 18, 33, 83, - 3,100, 38, 89, 55, 7,135, 51, 12, 17, 12, 47, 74,162,122, 76, 91, 39,161,201,220,106,235, 69, 85,235, 5, 49,171, 3,152, 4, - 0, 85, 53,118,132, 32, 13, 98,118, 83,112,167,200,245,202, 93, 25, 81,128, 40, 33,184,230, 82, 50, 90,101,152,155, 19,128, 43, - 6,114,131, 90,126,212,162,210,196, 74, 91,146, 24, 75,214,110,153, 99, 32, 5, 55,171, 68, 20,148, 16,171, 15,175, 91,245, 33, - 10, 33,106, 81, 98, 67, 51, 36,130, 50, 12,103,171, 29,165,206, 34,114,215,117,243,197,116,178,241,210,139,163,135,251, 15,111, -223,184,118,181, 92, 92,158, 28,127,242,149, 23, 38, 27,211, 2,228,224,185, 79,238,208,180, 49, 23,173,154, 31,226,152, 75,238, - 83, 38,102, 25,181,215, 71,241,198,238,110, 46, 70, 0, 34,204, 49, 82,136, 57,229,229,124,177,179,181, 57,106, 70,197, 29,209, - 41, 70,183, 2,168, 68, 18,218, 81,108, 71,238,174,150, 42,174, 29,134,173,197, 48,119,168, 15, 44, 51, 3,200,213,142,146, 82, - 30, 2, 33,106,136,160, 78, 60,140,218,173,166,135, 74, 42, 80, 25,223,149, 42,106,230, 54,164, 74, 8, 17,178, 49, 97, 46,238, -217, 80,234, 18,168, 82,105, 77,192,135,142, 47, 12,156,220, 1, 75, 0, 96,213,191,142, 44,107, 98,251, 80,193,122,140, 8,131, -170,144,115, 28, 94, 9, 60,168,222,235,243,178,146, 29,157,192,179, 14,210,181,117,248,163,226, 23,144, 6,204,154, 32,130, 35, -183, 65,115, 63, 91,234, 70,227,107,188, 12, 13,152, 92,112,119, 67,174,143,107,131, 42, 21, 25, 80, 25, 21, 31,236, 68,232,117, - 74,234,149, 84, 49,208,174,169,142, 91,180,122, 98,214,211,163,129,128,135, 6,198, 64,190, 70, 27, 97,101,103, 98, 0, 55,167, - 2,142,168, 33,173,150, 28,152,136,115,191,216,218,222, 57, 59,124,251,223,254,201,159,127,230, 19,159,218,222,154,172,250, 62, -142, 39,200,193, 53,187, 16,212,149, 9, 58,106,189,114, 20, 71, 40, 93,146,192, 68, 32, 49, 60,122,116,255,141,187,251, 59, 59, -187, 49, 54,219, 91,215, 41,210, 11,239,122,225, 47,254,226, 47,127,248, 55,223,255,240, 71, 63,250,214, 27, 63,184,118,227,137, -110,185, 80, 45, 28,162,153, 3,162,153, 17,128, 91,109,150, 65, 29, 63,154,170,217, 0, 87, 48, 0, 64,148, 40, 68,128,227,145, -165,158,170,162, 70, 33,110,142,242,170, 7, 18, 9,194,236,253,229,220, 1,173, 36, 38,214,188,210, 82,186,110,145,251,194, 76, -237,120,178, 90,174,192, 59, 51, 57,123,180,103,150,133,185,244,101,177,234,178,230,101,223,191,240,244, 83, 49,240,108,118, 49, -221,190, 62,158,108,204, 79,246,207, 78, 46, 78, 30,237,143,183,111,140, 39,187,196,220,140, 54, 47, 79, 14,206, 47,142,110,220, -122, 78, 74, 6,157,117,243, 69, 15,240,244,205,231, 83,191,184,154,207, 67, 43,185, 36,132, 80,138,198, 16, 12,252,116,118,150, - 82,213, 8, 96, 81, 35, 38, 20, 4,243, 26,197,245,199, 7,133, 58,216, 54, 38,180,200,132,129,135,110, 62,194,178,239,167,227, -209, 47,124,242, 83,191,249,181,175,238,222,124,202, 8,220,105,181,184,184, 58, 59,121,112,127,239,173,189,123, 15, 15,143, 79, - 47,175,150,171,110,213,175,174,102,171,171,217,229,179,239,126,245,191,248,242, 47,189,252,202,139, 71,143, 30, 28, 29, 28,148, - 24, 94,123,243,205,205,233,248,219,127,243,198, 36,198,119, 93,219, 9,177,173,255,119, 66, 46,128,236, 14, 70, 6,202, 24,212, -148,132,204,138, 96,240,226,245, 80, 95, 5,246,202, 76,129, 34,214,132, 50, 32, 98, 32, 44, 14,170, 70,136, 10,104,166,168, 58, -105,154, 62,219, 56,140, 66, 19,205,205,179, 54, 81,106, 81, 5, 73,164,254,116, 24, 8,169,224, 36, 60, 40,235,170,118,192,220, - 29,161, 17, 46,234,174,185,250, 55,106,168,140,144,235, 15, 86,176,192,129, 0, 85, 21,137, 28, 61, 52,193,212, 88, 4, 76, 7, -243,193, 26, 11,197, 36, 92,255,134, 43,222, 0,176,142,160,212, 0, 77, 69,164,128,186,185,187, 34, 72, 41, 38, 96, 90, 74,223, -107, 8, 77,108,154, 24, 91, 51, 47,150, 9, 24,137, 77,171,101, 19, 12, 32, 50, 27,225,106, 53,199,250,132,113,213, 82,180, 88, -208, 34,177,209, 82,136,184, 20, 99, 36, 17, 94, 47,242,168, 66,105, 66,164,146, 11, 11,215, 68, 10, 2,150,212,171, 3, 33, 52, -161, 5,207,234, 74, 36,165,104,234,150,174,185,109, 70,128, 92,237,206, 44, 68, 8, 90,108,204,120, 49, 63, 47, 57,111,109,110, -149,155,215, 15,207, 46,230,179,171,143, 60,125,235,218,245,107,189,186,251, 96,238, 54,208,172,136, 68, 12,160, 86, 42,116,138, -152,221, 92,154, 16, 80,122,205, 65,144,135,192, 14, 90,238,115, 65, 66,107, 70,163,164,165, 34,241, 77, 11,184,199,208, 54,211, - 45, 67, 48, 85,203, 37,119,189,230, 28, 69,250,146,200, 29, 84, 49, 8, 50,187,154,185, 50,139, 57,184, 21, 0, 84, 53,130,117, -145,146, 17,204, 85, 75, 1, 23, 98, 94, 63,106,193,141,152,205,204, 74, 17, 17, 32, 50, 51, 45, 30, 3,135, 16,178,154,121, 34, -174,127,249,117,146, 81,247,171, 36, 0, 54, 48, 94,124,189, 17, 53, 87,116, 25,160,148,108,110, 72, 80, 11,244, 76, 88, 79,240, -195,124, 99,192, 20, 59,212, 83,239,176, 66,120, 28, 60,116,168,243,211,122,172, 6,115,130,250,108,214, 97,118, 92,167, 32,224, - 96,166,176,179, 57, 58,191,188,216,186,189, 85,116, 29,107, 89, 39,140, 96, 32, 78, 84, 67, 47,194, 26, 89, 89, 27,167,195,160, - 25,225,177, 70,160, 94, 54,222, 81, 84, 87,116,101,125,235,173,163, 97, 67,198,125,200, 83, 27, 0,131, 9, 84, 69, 12, 26, 50, - 51, 76,210,197, 37, 0, 32, 54, 73,211,120, 52, 57, 61,220,255,198, 55,191,249,190,247,127,228, 61,239,121,207,226,242,180,217, -190, 25,154,198,205, 92, 26, 52,101,110, 1, 81,213,172, 47, 68, 68,160,181, 31,200,194, 64,188,154,157,252,238,239,254,243,103, -158,124,151,230,254,236,226,108, 50,221,108, 66,123,237,198,141, 23,158,127,238,175,191,251,218,143,188,239,125, 55,111, 63,249, -246,189, 59,194, 50,153,110, 17,179,132,134,234,145,132, 35, 2, 33, 9,128,154,171,103,116,112, 80, 67, 66,172, 52, 18,128,166, - 29,213,125, 75,201,198,160,128, 4,104,121,149,172,152,230, 28,218,209,106,181,204,171, 20, 71, 17, 89, 16, 57,173,114, 46,190, - 90,174,136,177,153,140, 0, 60, 52, 13,184, 90,209,131,131,187,183,111,237,154, 89,214,210,247,189, 25,104,209,141,209,248,226, -242,188,235, 86, 79, 62,251, 74, 90,205,246,238,188, 49,155,151, 16,167, 86,188,150,193, 74,234, 32,196,182,221, 52, 45,103,167, -247, 79, 79, 31,149, 82,118,175, 61, 59, 26, 79,206,174, 78,219, 81, 60, 58, 62,153,205,230,203,110,233, 5, 10,104, 16,190,156, - 45,143, 79, 79,215,117,227,250,249, 1, 53,136, 1, 8, 80,135,237,200,240,181,145, 74,140,243, 58, 82, 3, 45,202,204,207, 61, -247,212,111,254,234,223,249,228,167, 62, 53,222,220, 77, 57, 89, 94,205, 78, 79, 15, 15,238,239,221,191,191,247,224,240,224,236, -236,114, 54, 75, 93,127,185, 92, 30, 62, 58,126,226,250,206, 63,250,242, 23,127,229, 23, 63,215, 16,252,240,175,254,242,178, 91, -197,173,173,126,181, 58, 61, 60, 23,245, 27,155,147,157,141, 49,137,172,235, 15, 72,132, 97, 24,163, 27, 19,153, 91, 20, 86, 55, - 83, 50,171,165, 16, 48, 55,102,170,178, 48, 2, 52,179,202, 10,210, 4,171,164, 64, 22, 66, 16,102,239, 58,175,160,177, 16,166, -173, 24, 66, 45, 22, 13, 40, 14,128, 38,180,106,252,146,225,176, 0, 0, 32, 0, 73, 68, 65, 84,158, 53, 51, 9,145, 56, 2, 40, - 72,144,156,251, 24, 98, 81, 69, 2,211,122,223, 38, 77,181,248, 74, 14, 4, 80, 87, 47, 52,200, 75,153, 2, 35, 49,129, 67, 77, - 39, 48, 73,197,168,187, 43, 50,231,108,178, 62,172,175,217,219,104,102,170,165, 54, 68,212, 1,220,152,196,177,168, 41,168,179, -176,170,151,100, 76, 80, 84,179,153, 91,113, 8,238, 94, 82,114, 0, 97, 1, 32, 97, 54, 83, 51, 39,177,200,146, 82,114,117, 38, - 82, 45,102, 3, 21,213,221, 84,213,146,139, 69, 25,161,163, 0,184, 48, 21, 4,205, 10,110, 20,184, 30, 47, 73,170, 39,212, 9, -161,100, 5, 52, 97,113,128,226, 61, 33, 85,203, 4,147,146,251, 42,173,144,164,105, 66, 19,131,106, 49, 85, 3, 8, 68,220, 8, - 26,197, 9, 30,158, 29,165,229,234,154,208, 7, 95,126,254,198,181,157, 12, 8, 14, 66,132, 0,185, 62,225,188, 30, 58,107, 98, - 30,188,202, 59, 92,221,160, 55, 69, 30,124,114, 69,157,220, 37,134,197,213,101, 19, 37,196, 86, 93,173, 30, 34,165,234,249, 68, - 75,114,162,220,117,253,106, 5,238, 6,198,136,129, 24,152, 28,138, 3,184,102, 36, 65,231, 10,193,198,202,120, 32, 31,100,156, - 76,238, 78,132,170, 24,132, 9,184,228, 92,165,160, 64,108,234,132, 24,154, 72, 76, 41, 43, 2, 4, 6, 0,212, 10,120,224,160, - 57,195, 80, 76,243, 46,169,101, 21,213, 36, 84, 87,221,160, 3, 36, 1, 28,235,123,184,254,177,203, 48,235,112, 39,226, 26, 76, - 30,228, 97,110,235, 96,228, 80, 76,114, 53,148,193,116, 55,148,146,234,113, 6,214,104, 96,171,117, 93,128, 74, 45,199,181, 75, - 3,192,212,118,182,119, 78,239, 61, 40, 55,166, 96, 14,196,143, 57,128, 96,117,204, 95, 5,215,235,192, 78,133, 92, 86, 93, 23, - 26, 60,238,216,214,219,134,173, 11,120, 84, 61, 43,213,208,138, 96, 21,163,129, 88,179,104,100, 69, 11, 99,160,250,138,144,136, -168,230, 25, 76, 17, 55,250, 69, 82,135,166,105,204, 60, 54,237,114,126,246,141,111,254,225,243, 79,191,244,209, 15,252,104,223, -247, 78, 33,142, 90,115,181,126, 37,147,109, 36,206, 89,145,168,116, 61,198, 8,168,158, 82, 78,169,221,218,206,125,183,125,243, -230,239,253,179,111,172,122,253,205,127,248, 15, 15, 30,188,249, 23,127,246,167, 27, 27, 27, 79,220,126,122,132,147,167,158,126, -250,252,242,226,175,255,211,183, 62,253,185,159,121,244, 96,111,178,177, 67, 68,125,183, 68, 36, 39,100, 36, 34, 20, 10,106,182, -166, 92, 22, 4, 2,169, 30, 53, 4, 55, 51,224,216, 34,139, 43, 16,162,107, 1, 66,119,243,236,142,104, 10,221, 98, 89, 82,223, - 76, 71, 66,156,115, 49,230, 46,173,144, 12,164,169,137,216,209,100, 67, 51,244,185, 47,253,226,244,232,225, 51, 79,220, 80,211, -197, 98, 57, 95, 46, 87, 57, 35,248,141,221,157,130, 49,182,178,123,243, 73,105,162, 67,136,145,101,218,230, 84,192,203,229,249, -213,120,178,201,165,191,188, 58, 62,159,157,108, 77,119,111,221,126, 87, 94, 45, 38,155,187,139,213,236,193,225,193,178, 91, 25, -192,230,198, 70, 53,220, 35,194,168,105,158,185,221,252,199,254, 59,167,231, 87, 34,188, 70, 4, 1,186,241, 90, 24, 96, 14, 12, - 94, 91, 68,117,176,199, 8, 24,100,185, 88,108, 79, 55,190,242,249,159,251,249,207,124,246,217, 23, 95,146,102,146, 53, 47,103, -231,103,199, 7,247,223,222,187,255,240,209,195,227,227,147,203,203,217,124,126,113, 57, 63, 59, 61,235,115,254,248,123, 95,253, -173, 95,251,149,151, 94,122,161,239,150, 39,179,203,189,171, 75, 75,221,237,221,205, 59,247,238,111,181,205, 4,145,167, 99, 98, - 25,180, 59, 72,130,104,234,131,102,167,138,161,173, 26, 10,208, 84,139, 21, 24, 42,150,213, 62, 10,197,114,160, 80,175,141,150, -221, 12, 66, 32,119, 70, 32, 3,227,138,231,173, 7,115, 0, 68, 18, 97, 2, 84,240,202,125, 50,119, 3,168,151, 54,215,130, 34, - 18, 2, 16,180,113, 82,180, 84, 51, 25, 35,170,209,208,160,182,193, 91, 54, 44,227,104,120, 23, 18,146, 27, 20, 51, 97, 10, 44, -245, 40, 77, 6, 34,141, 90,178, 82, 80,170,144, 6, 25,209,145,106, 12, 13, 1,137, 4,220,213, 21,141, 0, 64, 53,215,118,168, - 3, 3,225,120, 60,234,187, 85,234, 87,102, 30, 69, 48, 68, 48, 44, 37, 83, 64, 67,100,103, 34, 42,166,128, 86, 5, 79,125,159, -188,100,168,220, 75, 67,131,194, 72, 53, 5, 80,204, 25,205, 76, 83,223, 55,227,104,165,122,186, 60, 4,201, 89,135, 76,155,147, - 48,187, 23,213, 97, 46, 28,164,117,215, 84, 10,242, 58, 4, 1,128, 72, 97, 52, 6, 14, 77,219, 72, 8, 86, 20, 1, 73, 24,204, -235, 16,121, 50,218, 28,163,110,143, 11,154, 87,113,130, 26, 34, 20,230, 96, 96, 96, 70, 80,163,138,238, 57, 57, 50, 18, 49, 49, - 48,154,170, 33,171,101, 70, 6,228, 65,131, 71,200,129,251, 84,250,229,106,247,137, 27,192,102,201,173,228, 56, 26, 1, 99,206, -170,203, 21,199,236,230, 69,213,107,158,167, 88, 54, 88,219,176,234, 37,129, 29,177,218,138, 16,209,234, 87,113,120, 86,129, 59, -160, 35,115, 36, 42, 37,151,222, 58, 66, 66,175,113, 88,171, 15,203, 84, 74,196,166,105,154,190,207, 37, 39, 9,204,128,196, 97, -161, 74,140, 96,158,138,129,167,173,233,164,184, 72, 28, 95,203,185, 51, 45,197,138, 0, 56, 24, 18,219,192,211, 88,215,135,200, -234,126,214, 77, 7,207,115, 93,177, 86, 43,163, 15, 68, 97, 68, 66,169,111,130,193,133,138,160, 80,121, 4, 68, 21,100,134,131, - 94, 3, 89,234,149, 65,135,131,190, 1,128, 75, 19,219,136,203,101,158,182, 1,220, 1, 10, 32, 13,209,176, 26,214,161,199, 47, - 15,115, 68, 7, 5,171,149, 55, 34,192,186,200, 53,115,171, 63,143, 4, 65,181,164, 65, 9,100,128, 10, 6, 38,117, 16, 64, 85, - 56,238,238,184,254, 18, 24,120,239,128,110, 74, 97,203,150, 93, 94,204,154,141,169,196,145,151,100,253,252, 27,255,230,155, 55, -174, 61,241,185,207,124, 26, 16, 74,223,181, 27,155, 36,193, 1,156,196,212,172,155,243,104, 3, 12,220,156,106, 39,133,164,153, -142, 81,173,109,199,243,163, 7,255,250,247,191,249,115, 63,247,165, 39, 95,121, 17, 17,130,252,135,203,179,179,157,173,221,166, -153,236,236, 92,127,226,214,147,119,238,221,127,229,254, 61, 53,155, 93, 93,222,124,242,233,229,225,129, 48,135,102, 84, 19,175, -230,201, 17,221, 12, 17,205,180,162,254,134, 41, 87,157, 70, 17,154,154,155, 97, 32, 80,183,172,142, 72,181, 1, 1, 86,114,230, -216,162,185, 49, 2, 97,183, 92,246, 41,231,212, 7, 66,226, 16,218,134, 9, 83,191,100,145,211,195, 71, 87,203, 5, 71,118,183, - 62,245, 57,231,101,215,141, 2,111,143,154, 16,195,104,251,122,136, 45,179,180,211,173,229,201,241,168,221,237,211,101, 78, 75, - 2,184, 56,127,244, 96,255,174, 1,189,250,226,171,139,217, 5,115, 92,234,197,229,197,209,229, 98,126,116,117,121,117, 53, 27, -143,166,227, 24,164,105, 22,179,171,113,211, 44,251,148,250,238,230,245,221,203,217,252,111, 3,154,161, 30, 87,124, 88,148,215, - 24,100,237, 72, 48, 67, 54, 3, 43,239,125,233,197,255,242, 55,190,254,254, 31,251,128,180, 99, 35, 92, 92,157, 95,156, 30, 62, -124,176,127,244,232,224,238,131, 71,199,231,103,103,179,217,114,209, 29, 30,159,156, 92, 92,142, 99,248,239,191,250,229,191,251, -149, 47, 45,231, 23,119, 94,255, 33, 52,163,183, 31,238,175,102,151, 15, 30, 28,189,246,198,131, 27,211,201,181,141,105,211,214, -121, 11,129, 17, 81, 64, 50, 45, 85, 82, 71,200, 12, 96, 89,135,242,189, 4, 2, 48, 54, 41,238,197, 92,234, 67,208,140,128,177, -230, 38,209,139, 25, 19, 58, 99, 94,229,182,137, 21, 23, 40, 18,114,202,213,217,214, 4, 86, 39, 7, 68, 9,128,174,217,144,177, -194,133,113,176,209, 3, 7, 33, 34,213, 66, 68, 49, 72,202, 57,247, 67, 74, 10, 0,156,157, 64,176, 94,154,125,136, 30, 0,186, -106, 38,142, 68, 20, 56, 2,177,106, 38, 55, 32, 44,165, 39, 34, 98, 97,116, 25,176,142,193, 92, 21, 44,132,152, 83, 15,238, 64, -200, 30, 12,204,221, 41, 48, 34,105, 41,129, 89, 66,200,165, 16,113,136, 35, 7,179, 82,152, 9, 3,215, 33,175,212,163,132,149, - 16, 34, 18,151, 92,250, 62, 33, 16,178, 84, 91,102, 51, 10,232,113,213,119, 53,146,207, 90, 5, 62,128, 64,166,201,129,221, 13, -193,115,234,213,140,137,130,200, 48, 46,118, 16, 17, 17, 46, 57, 23, 77, 48, 72, 1, 43,210,222, 17,204, 0,154,166,149,192,228, -168, 73, 89, 4,192, 82, 94,185, 89,108,226,186,165, 73,227,113,235, 70,185,203, 14,206, 77,112,117,115, 99,102, 67,212,236, 37, - 23,171, 97, 87,207,228,129, 56,168,154, 23, 99, 34, 39, 6, 71, 80,165, 32,161,137, 41,165,190,207,151,179,101, 8, 40, 44, 86, - 76,152, 80, 70,197, 12,212,189,226,203,187,206, 28,115, 73,204,193, 75, 33, 38,172,234, 30, 98, 5, 80, 51, 68,104, 99,232,172, - 84, 69,109,237,173,145,144,166,140,204,245,102,165,131,194, 10, 35, 5,114, 79,166, 66, 28,162,228, 94, 11,104, 20,142, 49,164, - 84,152, 8,130, 56, 64,118, 37,208, 73,211,116, 61,231,180, 16, 52,146,102,217,155, 22,147,231, 95,124,113,213, 23, 45,101, 62, -187, 88, 46,103,218,175, 28, 75, 77,164, 0, 14,152, 69, 98,210,172, 53,164,239,174,117, 32, 52, 24,180,129,235, 50, 28,234,166, -181, 78,139,214,100,210,154,229, 55,132,186, 6,241,117,115,202, 43, 50,110,120,113, 25,214,203, 36,146,230,178, 53, 25,207,150, -221,246,102,155,212, 5,240, 29,204,247, 59,248,200,193,244,242, 88,250, 87,147, 52,107,132,116, 70, 39, 17, 80, 51,211,130,224, -174, 96, 76, 60, 52,131,148, 81,134,247,137,177, 62,246, 89, 15, 24, 32, 0, 52, 34,113,152,120,151, 87,203, 5, 7, 33, 14, 69, - 51,106,255, 7,127,252, 71, 18, 70,159,252,200, 7,139, 22,112, 36,142,205,100,170,197,136, 89, 29, 65,147, 47, 23, 32,173,165, -142,194, 8, 25,192, 12, 65, 17,212,220,199, 27,163,255,243,127,251, 63, 36,110,127,254, 23,126,102,254,232,209,120, 99,227,163, -159,249,236,191,251,195,127, 51, 95,204,154,241,120, 50,153,220,188,113,253,252,252,244,245,215, 95,251,201,143,253,212,241,233, -225,114, 49,107, 39,163,156, 87,136, 64, 34,110, 86,128, 68,216,113,253,184,171,232, 19, 68,174,244, 55,225, 32,177,228, 21, 34, - 51, 7, 69, 71, 0,116, 67,211,220,247,121,181,228,102, 20,219, 64, 96,234,234,102,134, 36,161, 49, 71,244, 34, 34, 24,184,148, - 12,224,171,211, 71,119, 95,255,214,213,106, 69,196,238,184, 92,172, 22,243, 69,234,250,157,201, 6,161,164,238,234,250,228,121, - 67, 58, 57,216,239,187, 69, 78,253,229,201,241,120, 50,238,187,171,249,229,241,170,215,219, 79, 60, 55, 34,186, 60, 61,238, 87, -151, 32,141, 57, 77, 39,211,243,171,217,124,177,100, 9,155,155, 91,253,106,126,122,124, 88,138, 7, 9, 76,120,112,114, 49, 91, - 46, 0,220, 75,241,181,246,220,220, 16, 98, 85, 83,212, 47, 43, 51, 86, 67, 99,113,187,177,187,243, 11,159,248,196,151,190,248, - 75,183,158,122,166,152,169,149,203, 71,135,103,167,135, 15, 30, 60,120,116,116,114,255,209,225,225,217,105,151,210,229,108,113, -112,112, 92, 74,249,236,135,222,247,143,190,252,133, 15,127,232,199, 30, 30, 62,220,187,243, 54,143, 71,221,233,241,253,183,239, - 7,230,136,116,125,103, 60,157, 76,107,236, 10, 3, 4, 17, 0, 50,215,146,157,185, 34, 34, 0,208,181, 40, 17,136, 80,234, 11, - 58, 8,198,130,133,208, 76, 43,117, 20, 17, 25, 9,138,107, 73, 26,155,216,196,198, 74, 54,199, 56,138,245, 59,161,137,148,178, -213, 55, 0,177,160, 48, 42, 16,139,230,172, 73,171,163, 25,208, 41, 10, 34,122,113, 34, 0,181,164,153, 49, 8,122, 81, 37, 68, - 9, 92, 39,230, 53, 92, 0, 72,214,103,115, 99, 25, 82, 3, 37, 43, 75,168,234, 66, 67, 7, 55, 14,195,169, 28, 76, 1, 88, 68, - 0, 93,181, 0,120,177,158, 88, 16,216,177, 98, 60,234,164,200, 16, 32,112,163, 86,192,189,105, 71, 57,103,207,217, 21, 88, 68, - 66,112, 51, 15,200, 92,185,193,131,217, 39, 21, 99,193,156,122,213, 34, 65,152, 8,144, 93, 43,219, 50,162,170,170,162,123,148, - 80,140, 21, 10, 66, 30,162,173,185, 32, 90,229,255,173, 85,112,100,168,160, 80,201,107,213, 63, 87,147, 35, 68,192, 66,224,104, -235,212, 93, 8, 77, 81, 5, 39, 3, 71,174, 71,132,194, 68, 20,215, 53,248, 32,232,144, 74,134, 82, 98,100, 67, 40, 57, 3, 48, - 56, 58,128, 38,128, 58, 87, 82, 83, 80, 68,113,128,156,147,136,112, 27,114,210, 58, 50,138,177,181, 84, 22,125,110,154,160,200, - 57,149,205,233, 24, 9,155,216,154,121, 78,197, 84,205,141, 43,170, 55,151,161, 78,236, 70, 18, 85, 11,104, 17,150, 82,114,173, -203,171,217,106,181, 34, 10, 86,117, 21,132,134,144,251,108,224, 1, 17, 29,180, 43, 6, 86, 37,167,154,147, 2, 10, 18, 32, 20, - 85,142, 28, 81, 82,209,249,124,222,180, 17, 89,172, 55, 43, 9,212, 73, 8,205, 2, 58, 52, 13,184,153,153, 16,178,144, 72, 19, -183,218,198,212, 38,147,166,239,182,186, 85, 74, 57,165,110, 89,114, 41,165,115, 75,174,133,220, 5,135,244, 60, 24, 32,131, 15, -151, 86, 3, 83, 24,240, 50,107,104,146, 33,184,129, 8, 18,185,155, 43, 12,253,183,245,116,129, 24,157, 6, 52, 76, 24, 18,175, - 12,204, 53, 15, 55,217,218, 56,217, 63, 1,218, 37, 45,128, 53, 77, 64, 96,117,148, 67,239, 68,115, 6,208, 8, 18, 13,115, 36, -112,215,172, 78, 96, 62,204,246,177,130,108, 4, 8, 12,148,129,173, 90, 84,215, 75, 2,245,170,137,164,161, 23,177,102,163, 9, -166, 82, 74, 14,161,149, 54, 0, 24,171,254,201,159,253,191,103, 75,248,229,159,249,220,168, 13,165,239,226,168,149,166,181,156, - 33,140, 16,204,186, 57, 52, 35,106,218,210,173, 76, 83, 19, 71,174, 78, 65,160,184,166,210,110,110,220,127,243,205, 63,254,163, - 63,253,234, 87,255,193,116, 68, 71, 39,179, 91,207, 63,245,190,167, 63,241,253,239,126,251,222,222,157,205,205, 45, 30, 79,119, -110,220,120, 98, 54,123,112,240,232,248,232,145,153, 94,156,156, 96,224,205,233,118, 69,228,168, 22,145,168,238,188,198, 96,186, - 27,186, 58, 80,113, 32, 66, 9,141, 99,109,110,114, 41, 25, 7,181, 57,150,164,150, 51,139, 72,224, 10,111,214,174, 51,181, 40, -178,185, 49, 61, 98, 2, 83, 4,240,156, 33,167,213,197,193,221, 55,223, 92, 44,231,197,107,156, 86,207, 46,206, 86, 41,247, 69, - 55, 2,247,221,108,177, 90, 60, 19,199,105, 57,219,127,243, 7, 38, 60,154,236,164,229,236,244,120,111,181,154, 79, 38,187, 79, -237,108, 16,203,233,241,253, 85,159, 56,180,139,171,147,233,116, 71, 0, 95,187,243, 58,145,108,111,108,174,186,197,197,229, 69, -219,140,219,157,241,229,249,185,131, 33,162,170,165,164, 64,142, 64,149,147,103,110,132, 85,173,172,170, 30, 2, 11,242,162,239, - 38,109,251,211,159,248,216, 23,126,246,103, 95,122,233, 85,105,219, 85,223, 45,175, 46,175, 46,206,142, 31, 29,220, 63,184,127, -111,255,232,248,236,116,217,247,139,229,234,225,241,233,225,225,201,143,191,244,236,111,255,218, 87, 62,254,161, 31, 5,243,195, -211,163, 71,151, 23, 15,207, 78, 95,216,125,225,193,189,115, 74,182,189, 53,106, 55,166,102,224, 64, 66,161, 42,140, 77,161, 62, -236,214,208,105,175,216, 0,145,250,104, 80, 38,246,186, 41, 2,240,226,196, 80,180, 16, 7,114,211, 92,140, 49, 80, 0,115, 67, -165, 90,169, 8,129, 8, 74, 86,115, 19, 17, 71,130,202,119,118, 68,169, 91,115,224, 38,120,113,226, 90,191, 24,108, 58,245, 84, -195, 64,117,238,175,165, 62,239, 24,137,132,177,232,112,164,193, 72, 88,181, 79,110,142, 40, 65, 72,106,186,188, 86, 32,171, 95, -222,200,201, 65,240, 49,147, 3,201,173, 84,186, 33,186, 89, 65,225,198, 64,235, 64,213,204,213, 50,146,184,165,220, 47,144,163, - 48, 43, 58, 5,172, 79,121, 48,116, 52, 70, 52,115,102, 38,172,164, 78, 67, 2,100, 54, 53, 12,145, 16,185,137,214,169,171, 86, -229,183,136,152, 85,217,147, 50, 5, 3,119,176, 24, 91, 45, 90,212,200,128, 67, 64,102, 53,181,172,132,140, 78,246,216, 52,164, -133,100,184,185, 32,177,153, 86,237,144,106,113,171,189, 94, 71, 71,179, 60, 80,164,181,150, 90, 48,167,140,134, 44, 68,109, 40, - 89, 93,149, 41,152, 91, 46, 69, 92, 6,106, 19,185,214,240, 66, 5,221, 19,185,131,169, 35, 65,219, 54, 41,245, 57,247, 34, 18, -131, 32, 81,191, 88,129,229,241,120,203,220, 82,223,129,163,169,215, 52,166,155,193, 58,164, 7, 68,142,164,170,107, 97,144,215, - 83,185,170,213, 39, 76, 93,136, 59, 64, 49,133, 42, 13, 71,169,153,171,122,231, 70, 68, 55,112, 99,243, 2,129,132,144,153,181, -184,154,213,113, 21, 56, 90,214, 16, 24, 60, 40,148,162,202, 66, 28, 24,157,180,148,234, 10, 83,115, 57, 58, 60,104, 66,100, 17, -145,208,142,198,163,241,168, 56,104,151, 82, 46, 41,245,170, 86, 82, 90,204, 47, 87,105, 5,152, 26, 33, 17,170,132,198,234,122, - 5,199, 90, 89,242,202,130,175,171, 23,118,172,251,226, 33, 71, 91,199, 57, 25, 24,134,190,182, 15,235, 12,167,225,197, 11,107, - 66,111, 12, 49,146,207,150,182,209, 82,221,178, 14, 45,164,119,192,195, 72, 14,250, 24, 31, 86,237,209,170,136,168, 96, 4, 52, -128,244, 28, 28,120,173,247,171, 76, 62, 99, 12, 64, 8, 86,188,168, 86,188,180,240, 16, 15, 37, 4, 87, 45, 13,245,139,162,160, -128,210,180, 44, 65, 74,247,231,255,225,207, 95,191,119,248,149, 47,124,126, 99,212, 40,176, 52,129,152, 72, 2,181,141,149, 82, - 82, 41,125, 47,106,208,180,106, 30,198, 91,200,161,238, 71,156, 5, 24, 68,211,239,255,171,223,123,249,213, 31,255,236,103, 63, -121,126,126,186,117,227, 26, 69, 1,132,159,254,252,151,255,175,255,253,127, 61, 57, 61,122,170, 25,141, 70,147, 27, 55,111, 92, - 94, 93,124,231,123,223,255,196, 39, 63,113,237,214,237,131,189,189,209,116,178, 92,204, 16,128,164,218,176,196,121, 80,109,153, -131,107, 97,146, 32,172, 96, 65, 34, 99,189, 78, 58, 16,121,201,174,166,165,168, 58, 97,160, 17, 51, 5, 96,204, 93, 15, 88, 59, - 83, 24, 3,107, 94,181,163, 73, 46,170, 10, 97, 52,221,191,191, 63,191, 56,198,208,228,172,174,144, 82,186,154,207, 85,213, 92, -183, 39, 45, 96,104,198, 59,196,113,185,152,115,179,113,113,252,118,145,229,229,249,201, 52,198,182, 29,141,198,211,227,163,251, - 55,110, 60, 61,157,108, 35, 44,155, 81, 83,186,132,166, 7, 7,123,251, 39,103,198,184, 13,147,212,247, 0, 18,132, 71,145,206, - 65, 83, 42, 91,155, 91,227,241,136,153, 79,207, 47,144,168,235,140, 8, 9, 89, 68,250,146,119,183,182,136,248,248,252,188,128, -189,251, 93,207,255,221, 47,125,241, 67, 31,252, 40, 55, 49,171,117, 87, 23,171,217,213,201,241,225,193,225,209,253, 71, 15,247, -246, 15, 46,151, 43, 45,229,228,226,226,222,254,195,174,235,127,227,103, 63,253, 59,191,253,117,102,126,112,239,173,249, 42,173, -162,180,232,199,143, 78, 78,142,207,130,195,141,233,198,120,220, 56, 0, 51, 17, 11, 49, 19,147,170, 57,174, 63,217,117,112,135, -200,196,117,171, 91, 95,255,131,235,124, 13, 45, 52, 32,112, 18,226, 98,134,140, 50,160,184,156, 25,129,152, 12,137,196,173,104, - 41, 33,182, 40,168,197, 8, 48, 8, 27,152,102,151, 6,205,152,145,156,234,228, 19, 37, 68, 64, 43,217, 2,147,185, 25,162, 16, - 50, 80, 68, 94,235,197, 40,149,204, 36, 14, 38, 34,185,174,218,209, 42,218, 17,144,214,201,245, 90, 63, 52,211, 66, 28, 76,173, -106,226, 17,171,142, 57,152,123,133,216,120, 8, 86,138,107,225,128, 94,220,192, 88,164,238,222, 58,119, 65, 33, 64, 64,113,235, -209,133,132,212,106, 49,149,107,239,208, 93,115, 41,230,200, 44, 14,238,168, 33, 52, 18,131,155,229,156,170, 97, 13,145, 28,140, -136,234, 82,215,212, 20,149, 0,138, 58,244,169, 38, 52, 80, 6, 7,180,153,214,219,131,170, 10, 17, 18,153,186,176, 96, 12,154, -178,154, 7, 54, 65, 82, 80, 55, 47,166,163,166, 45, 37,151, 98,109,228,162,230, 14,129,197,201, 52,151,213,170, 52, 77,144, 24, -115,206,154,147, 27, 32,146, 14,201,120,170,233, 15, 4,176, 65, 53, 66, 4, 88, 12,114, 82,192, 18, 2,187,147,106,182,226,230, -217, 1, 5, 65,213,151,139,229,214,198, 8,156, 52, 23, 36, 22, 38, 19, 72, 93, 66, 53, 96, 34, 14, 77, 12, 57, 23, 55, 21,116, -163, 10,135, 34, 85,243, 2, 44, 40,210,168, 23, 28,170,150, 53, 5, 11,128, 76, 12,106,106, 37,115, 16,181,108,138, 81, 0,132, -201, 76,176, 97, 2, 7,236, 86,125, 19, 67,237,189, 86, 64, 60, 18,170, 13,229, 36,150,144,115, 17, 17,225, 8,192,158, 83, 96, - 92, 37,146, 31,126,239,219, 49,198, 32,113, 50,158,182,227, 73,144,216,140,219,102, 60,106,163, 52,141,152,121,214, 50,154, 78, - 76, 75,223,117,243,217, 85,151, 87, 96,137, 4, 91,102, 0, 96,170,110,143, 1,244,226, 4, 40,176,214,157,214, 8, 98,125,126, - 35, 51,174,229, 54,107, 47, 45,130, 1,176,215,234,218, 99,128, 7,110, 78, 71, 39,231,231,155, 79, 93,131, 26,240,178, 65, 52, - 82,233,100, 0, 84,205,218,149, 83,225, 86,119,168,108,182, 78, 5, 1, 1,216,227,175,223, 99,124,241,192,115,247,170, 61, 32, -100,162, 65, 12,246, 78, 81,181,235, 51, 33, 59,104,104, 34,199, 16, 17,191,243,237,255,244,237,215,247,126,230,147,159,186,113, -227,218,106,213,177, 56, 57,177, 8, 9, 91, 41,174,238,134,210,180,220,140, 45, 37, 25,141, 66,140,174, 9,152,173, 95,166, 46, -109,238,108,188,249,189,239,126,251, 59, 63,252,239,254,155,127, 82,250, 5, 82, 24,109,142, 52, 21,239,250, 27,183,175,253,248, -135, 63,250,214,223,124,123,119,247,198,198,214,214,230,238,181,103,159, 46,135,143, 30, 28,236,221,123,249,189, 31, 32,134,187, -111,188,118,235,214, 45, 99, 23,144,129,200, 89,239,173,128, 90,138, 51, 86, 86, 26,168,135, 27, 83,131, 12, 94, 0, 25, 29,204, -177,164,100,200,192, 2,218,147,145, 68, 82, 83,237,123, 15,145,208,144, 27,105, 98,211, 52,163,102,210, 45, 19,197,112,126,124, - 48, 63, 63,221,104,219,211,211, 19,243, 18, 37,244,121,149,250, 84, 76, 65,125,123, 99,147,133,174,223,124,166,109,199,103,103, - 71,253,234, 98,190,156, 95,204,142, 95,121,233, 61,253,236,196,165,237, 86, 11, 82, 59,122,120,127,251,218, 45, 75,125,167, 61, - 88, 41,165, 28,157, 30,175, 82, 10,161, 57, 62, 57,157, 76, 39,227, 81, 59, 95, 45,247, 31, 30, 86,148, 91,183, 88, 92, 45,231, - 27,163, 81,234, 83, 42,165,132,128,160,132, 34, 8,207, 60,241,228,255,242, 79,255, 41, 34,253,187, 63,253, 19, 70,250,248,199, - 63,122,253,250,173,174,104,202,185, 95,206, 47, 46,206, 78,143,143, 14,142, 79,247,246, 31, 60, 60, 62, 94,172,186, 92,202,193, -163,227,135, 71, 71, 47, 60,121,227,127,248,234,175,254,252,103, 63,126,114,126,254,240,254,126,188,177,125,244,232,173,211,139, -171,201,100,154, 83,126,122,103,139,155, 80,233, 71, 36, 50, 60,116,144, 76,235,167,210,105,248,224,162,122, 33,148,172,213,148, - 86, 73, 91, 53, 66, 60, 84, 68, 36, 68,179,162,174, 37, 37, 10, 4,206,245, 8,171,238,208, 37,105, 71,196,156,115,207,204,237, -164, 85, 29, 38, 12, 65,130,106, 6, 64, 98, 72,201,130, 72,205, 41,115,144,122, 6,172,111, 29, 67, 70, 0, 65, 42,166,129, 5, -193,144, 72, 88,138, 41,112,112,115,100, 78,185, 84, 50, 30, 7, 25, 64,174, 0,129,217,145, 24, 73,213, 76, 21,137,221,172,138, -156, 53, 39,226, 32, 44,224, 84, 67,182, 8,232, 69,209, 9, 5, 29,144, 98,136,129, 61,151,148,179,187, 71,105,220, 61,151, 84, -212,154, 24,145,196,181,212, 17, 13, 0,177, 72, 46,201,212, 34,133,210, 84, 5,180, 35, 18, 5, 46,106,194, 92, 23, 41,255, 31, - 83,111,246,107, 89,118,223,247,253,166,181,246, 62,231,220,169,110, 77, 61,177,155,221,236,230,212, 77,113,104, 42,164, 38, 90, -180, 68, 74,138,230,200,178, 76,203, 3, 20, 36,182,131, 0,142,147,135,188,229,111, 9,144,135, 0, 14,144,135, 24,182, 3, 36, -134, 96, 41, 78,160, 64, 18, 41, 90,108,146,221,236,238,170,174,233,222,170, 59,223,123,134,189,215,250, 13,121, 88,251,182,242, -218,168, 70,221,170, 58,103,239,181,126,191,239,247,243, 1,110,144,203,230,138, 1, 85,133, 86,163,157, 2,215,200, 44, 77,168, - 93,116,100,144,220,117,102, 6,136,169, 25, 58, 17,219, 42,200,171, 18,147, 8,154,218, 52,133, 15,147,128, 82, 6, 34,234,115, - 54, 51, 34,110, 57, 18, 47,213,131,102, 93, 10, 34,211, 10,224,110,200, 73,220, 13, 98, 90, 63, 68,152, 8, 1, 66,232,100,123, -176, 86, 89, 64, 0, 98,117, 4,116, 32,102,134, 36, 19,243,121, 83,212, 67, 83,218,110,148, 56,181,106,206, 16,144, 36, 59, 70, -131, 0,184, 41,130, 7,130,186,183, 40,136, 90,101,100, 78,220, 34, 39, 76,220,166,209,230,138,128, 68,217,180, 52,202, 16, 96, - 14, 85,128, 72, 93, 50,167,208, 34,146, 34, 92,155,201, 64,114,120, 32, 57, 48, 1,132,186, 67, 0, 18,115, 22, 87,173, 86, 37, - 9,139, 68,160,186, 77,230,172, 0,249,227, 63,253,211,220,165,121,215,239,110,109,205,231,139,221,157,157,197,124,103,177,181, -181,187,183,151,250,174,235,251,148,186,220, 9, 68,154,207,231,187,123,123,170,182,217,172,202,184,185, 60, 63,119, 12, 65, 20, -114,225,137, 85,131, 8,200, 48, 73,236, 38, 98,134,181,192, 74,211,241, 97,180, 96,179, 95,199, 43, 39,194, 87,155,185, 32,130, -131,239,236,110, 31,221,123, 88,117, 95,174,213,221,173,165, 52, 61,160,145,221, 26, 68,144, 32, 16, 16,205,157,193,193, 1,101, -130, 40, 0, 52, 96,219, 4, 33,160, 22, 52,105,187, 96, 64, 68,129,246,241,155,124, 38,209, 36, 18,129,136,172, 17,115,238,178, - 71, 44,250,244,225,143,126,240,167,223,255,201, 47,126,227, 27,175,127,230,245,245,249, 41, 0, 2,231,112,167,180,232, 22,219, - 58, 86, 71, 87, 51, 76, 57,144,176,239, 72, 4,220, 16, 9,193,235,102,195,196, 57,117,255,246,143,255,228,173,183,190,242,250, -235,175,156, 28,157,236,188,112,215,172,145, 6, 56, 60,190,240,213,159,190,255,222, 15, 47,206, 79, 23,243,157,249,108,113,235, -185,231,182,118,247, 46,207, 15,206,142, 15,111,221,121,161,140,101,255,185, 23,158, 61,122,216,229, 57, 18,133, 25, 32,153, 22, - 69,100,186,134,104,182,111,117,202, 96, 14, 72,225, 30, 30,230,134, 41,147, 25,160, 3, 6, 49, 89, 45,238, 1,194, 72, 9, 37, -185, 57,215, 53,212, 97, 0,183,178, 44,195,248,189,255,231,143,143, 79, 14,111,239,236,212,112,115,168, 90, 54,155, 58,150,113, -185, 30,114,226, 78,242,106,179,254,196,238,237,203,203,163,251, 31,124,127,177,189,245,133,175,252,194,211, 39,143, 60,120,172, - 64, 56, 82,240,108,247,246,233,241,195,213,234,108,185, 60, 15,128, 50,172, 16,224,224,244, 36,229,156, 68,170,151,229,114,181, - 92,175,139, 87,173,182,189,232, 54, 1, 87,171, 43,139,168,102,179,174, 87, 95,247, 41,153, 51, 39, 6,226, 87, 94,124,254,181, -215, 94, 83, 74,191,247,220, 11, 16,174, 16,165,142, 90,199,113,181, 60, 59, 62,126,116,240,248,193,227, 71, 31, 61, 62,184, 92, -173,135, 50,158,158, 95, 62,122,122,220, 17,254,179,223,254,213,127,240, 59,191,182,191,179,120,122,126,118,178,186, 58, 60, 63, -255,196,173, 29,158,207, 55, 79,142,120,208,151,111,237, 49, 83, 56, 32, 79,208,217,196, 73,221,139, 25, 95,131,241,218, 6,169, - 69,109,189, 24,113,184,180,213,253,148,160,136,198, 31, 69, 12, 8, 98, 9, 7, 68,176, 50,157,230, 26, 38,189,169,227, 20, 92, - 36, 17,139,153,181, 10, 7, 6,170,105,195,168, 66,192, 44,243,212,150, 72, 20,246, 49,129, 15,194, 33, 80, 9, 9, 69,208, 52, -194, 9,201,213,135, 24, 51,165, 64,172, 97, 80,161, 49,178,167,188,183, 7, 80, 80, 96,173,230, 94, 83, 74,132, 52,161,193, 1, -217,193,205, 37,117,209,142,232,225,200, 28, 1, 85, 71,225, 52,209, 61,152, 89, 68,171, 66, 4,183, 13,167, 27, 34,166,148,219, -190,138, 16, 26,101,132,152, 60,160,106, 5, 15, 68,114, 68,230, 52, 89,152, 34,180, 26, 33, 57, 26, 11, 91,107,182, 52,154, 43, - 68,120,157,112, 82, 0, 0,193,146, 56, 9, 19,171,170,155, 39, 78,208,228,210,140,110,225,209,210, 55, 19,208,150,168, 29, 91, -167, 15, 57, 94, 79, 38,219,179, 65,195,152, 25, 0, 85, 43, 65, 8, 35, 18,123, 27, 60, 54, 18, 46, 88, 29,170,244, 25,128, 35, -130, 33, 12, 92,125, 2, 43,182,161, 47, 39,110, 89, 76,143,136, 0,134, 96, 33, 32,177,240,246, 67, 95, 93, 45,133, 33,245,194, - 34,166,129,129, 94, 3,165,249, 95,155, 61, 46, 16,136, 25,209, 1,194,204,130,136, 72, 50, 66,104, 53,145, 22,133, 3,135,118, - 74, 99, 8, 55, 31,153,165,169,172, 32, 90,148, 9,221,130,192,155,143,187,185,151, 27,173,195, 61, 4,145,157, 7, 51,140,198, - 59,112, 68,162,156,146, 66,120,152, 26,147,247, 93, 30,134, 49,204,153, 80,190,241,181,183, 15,158, 62,123,124,112,248,240,234, -106, 40, 37,194,183, 23, 91, 59, 91, 91,251, 55,246,119,118,182,183,183, 23,187,219,251,243,237,157,196,221,108, 49, 19, 17, 38, -217,222,218,229,221,253,155, 55,159, 87,171,155,245, 48, 12,235,112, 55, 27,173,110, 34,106, 22,206, 57,220,131, 88,108, 2,233, - 77, 63, 71, 59,134,160,249,100,226,152,248,235, 24, 17, 50,225,120,193, 44,114,146,197,188, 59, 95,110,110,109,119, 45, 42,211, -152,170,222, 34, 93,161, 19,174, 2, 0,194, 0,161,253,175, 40,132, 24,230, 6, 36, 13, 82, 54, 29, 17,136,166,142,171, 87,159, -136,193,136,212,204, 29,136,215, 28,133,198,155,103,162,178, 25,231,139, 57, 3, 60,249,240,189,127,253,239,255,195, 23,223,250, -242,155,111,188, 54, 14, 35,112, 6,173,156, 50,231, 25,162,131,187,106,177,198,233, 40,163,100, 67,112,100,118,171,121, 54,179, - 97, 8,194,157,189,189, 31,127,239, 47,223,123,255,209,127,255,223,252,238,197,233,113, 90,100, 97,118, 51, 64, 64, 22, 85,191, -177,183,247,234, 27,159,125,116,239, 39, 55,246,110,108,237,190, 34,204,171,229,197, 48,214, 39, 79, 30,237,111,223, 8,139, 82, -108,107,247,198, 48, 14, 61,205,166,198,237,100,248,248, 88, 91,229,193, 34,253, 44, 26,150, 69,192,134,145,136,221,172,253,249, - 41,119,220,229,178, 41,110,181,245,137, 67, 29,220,211,124,143,242,130, 37, 13,101, 20,162,207,126,225,205,245,213,217,241,249, -217,249,122, 68, 4,173,181,150,162,238, 85,117,167,203, 44,189,137,188,255,254, 15, 86,155, 53, 11,219,184,153,205,183,250,249, -206,197,197,249, 98,239,206,197,217,193,124,103,215, 93,239,220,121,249,226,236,116,123,107,103,121,117,190, 53,223, 94,174,175, -158, 93, 45,133,133, 17, 41,245,165,140, 59,123,187, 96,245,234,106,244,136,205,102, 77,132,243, 52,171,181, 50,182,203, 40, 49, -161,123,168, 90,223,117, 15, 63,250,112,239,185,151, 56, 37, 83,211, 97, 53,174, 87, 87,103,167,199,199,199, 15, 30, 62,124,239, -163,251, 71,199,231,155, 90, 86,171,213, 71, 7,135,231,231, 87,223,248,242,155,255,245,119,126,247, 75,159,251,244,179,227,167, -239,125,248,116,137,120,121,126,118,114,118,126,244, 23, 23, 87, 71,231,183,247,182,230,243, 57, 64, 32,178,136,144,144, 89, 8, -231, 70,160, 16, 33,119, 79,204,102,142, 2,104,100, 94,195,175,129,163,238,200, 60, 5,242, 90, 75,226,154, 90,205,130, 0, 92, -171,181, 70, 49, 32, 82, 22,112,212, 98, 8,145, 58, 2, 0, 83,205, 57,213, 90, 27,247,209,204,155, 97,192, 32,138,198, 52,107, -107, 55,220,198, 83,181,246, 48, 65, 34,113,173, 17, 17, 34,161,134,130, 9,154,164, 59,232,186, 23,208,178,145,224,222,222, 10, -230,110,102, 57,165,118,105,189,158,120,212, 0,228,196,225, 22, 24, 17, 46,204, 22,142, 36, 68, 30,136,166,165,203,125, 0, 14, -195, 64, 4, 93,215, 67, 64,173, 37,144, 72,200,205,163,181,226,117, 20, 22, 70,241,176, 90, 74, 98, 65, 22,191,118,204, 16,160, -185,171, 25, 34,160, 80,173,154,115, 70, 9,100,210,162,110, 74,200, 0,102,109,169,214, 94, 9,136,110, 97, 86, 91,241,202, 3, - 32,220,220, 91,104,169, 21,214,219,219,179, 77,204, 90,116,131, 82,246, 98,225,154, 19,155,135,155, 19, 51, 35, 27,184,155,183, -208, 85,139, 68, 91, 53, 17,140, 32, 15, 39,100,103,104, 14, 5, 73,169,140, 5,145,160, 65,180, 2,129,176,235, 58, 53,213,170, - 1, 24,104, 4, 20, 14, 97,209,132, 24, 64,176, 92,143,227, 48, 60,119,123,191,253, 35, 34, 9,154, 75, 38, 8, 68,230,128, 32, - 11,243,218, 42,176,147,110, 8, 67,195, 19, 10, 2, 19,215,214,155,111,114,105, 45,181, 29,103,113, 26,211, 7, 49, 17,182,196, -145,179, 96,173,209,152,145,140,172,174,211,214, 23, 16,131,138,141, 12, 0,196, 30,198,142,210,177, 70,123,109,182,137, 55, 89, - 85, 12, 37,102,168, 32,159,250,228,107,175,191,246,170, 59,184,235,249,201,201,195,167, 79,159, 62, 59, 58, 60, 61,125,114,120, - 16,128,179, 89,191,179,181,115,251,230,205,155,251,251, 55,118,183,187,110,214,247,243, 60, 91,116,253, 98, 54, 95,244,125,151, -115,183, 29,139, 90,107, 25,107, 45,117,216,172,199, 97,117,177, 92, 51, 70,223,185, 16, 16, 7, 34,135,217,180,180,106,201,198, -235, 23,111,131, 88,127,220,166, 67, 64, 2, 7,164, 27, 59,187, 7,103,151,183,182,238, 76, 15,247,233, 97,110, 72,220, 10, 77, - 31,123,138,193, 3,184, 97, 53,166,230, 18,134, 55, 93, 77,227,227, 35, 53, 58, 54,121, 24,182,226, 56, 33, 32, 24, 52,163,192, - 20,247, 81, 0,138, 32, 2,183, 1,189,223, 44, 47, 63,120,112,255,197, 23, 63,241,245,183,191, 52, 84,107,252, 27,234,250,234, -216,177, 72,202,170, 22,181,130,123,212, 66,136,161, 69,182,246, 8, 28,153, 77,199, 50,174,186,249,108,184,186,248, 31,255,229, -255,250,181,175,190,253,220,115,183, 86, 21,246,238,220,209, 82,154,211, 5, 8, 33, 40, 40,127,250,205, 47,126,248,222, 59,155, -113, 68,132, 15,222,251,209,159,255,249,159,125,238,115,111, 94,158, 94,222,217,191,253,242,235,175,255,228,135,239,188,240,242, -171,227,229, 89,238,187, 86, 82,192,107, 5, 78,219, 51,187, 27, 73, 74,204,238,225, 90,128,176,108,198,220,231, 90, 85,152, 48, - 76,114,111, 69, 91, 58, 35,188,134, 75,115, 53, 72, 2, 17,166,212,153, 7, 32,220,185,245,252,171, 47,125, 98,184,121,227,163, -255,248, 67,136, 40, 99, 57,191, 56, 91,173,134, 97, 24, 95,190,181,143, 48, 44, 55, 60, 95,236,222,153,221,126,237,115, 63,181, - 94, 45,215,171,165, 72, 42, 87,199, 35, 0, 5, 18,145,214,225,233,211,135, 1,120,121,118, 52,155,111, 11,225,241,229, 37, 80, -234,115,214, 90,189,214,113, 24, 74, 25,102, 89,152, 98, 51, 12,101, 24, 61, 2,197,144,168,134, 7,184, 71,168,250, 98,158,255, -224, 63,253,246, 47,253,252,127, 50,142,155,171,243,227,156, 23,230, 49, 46, 47, 46, 46,206, 30,220,255,240,199, 31,222,127,122, -124,116,118,121, 53, 12,227,229,114,117,239,225,193,238,188,255, 31,254,139, 63,252,253, 95,255, 22, 99,252,232,135,239,228,221, -157,243,205,234,236,244, 98,179, 25,234,106,179,221,245, 55, 95,184,131, 68,104,237, 9, 12,205,139,134, 52,149,239,153, 80,161, - 97,202, 32,194, 19, 74,227, 16, 4, 2, 72, 96,147,127,186,123, 32, 17, 16,139,155, 19,132,134, 19, 2, 26, 96, 96,151,164,213, -154,104,194,120, 80,238,179, 71,148,106, 57,101, 36,175, 85, 53, 66,152, 28,192,195,147,100, 10, 12,110,136, 61,143, 8,100,116, - 11, 4,111,167,228,246, 6,183, 80, 22, 46,155,226, 49, 18,161, 32,183,248, 5,241,244, 97, 71, 64, 34,244, 0,183, 0,108, 69, - 89,144, 36, 13, 62,211,190, 92, 17,192,194,224,224,225, 49,201,206, 80,221, 39, 53, 12, 34, 6,164,156,195,194,180,144, 16, 33, -170,150,169, 46,200, 72, 72,196,228,228,196,220, 10,178,181, 86, 68, 17,142,143, 59,130,215, 74, 5, 0, 64, 55, 99,230,176,224, - 22,151, 0, 52,117, 12, 32,150,240,112, 11,164,212,242,120,216,122, 3, 83,216,218,107, 0, 79,188,231,105, 30,141, 33, 30, 74, -237,204, 30,224, 14, 44, 2, 96, 90, 75, 83, 71,140,163,166,204, 73,216, 2,204, 44, 8,115,154, 97,128, 90, 49,115, 66,194, 28, - 17,110,213,145,201, 27,183, 22, 57,204,212,131,169,193,103, 3, 60, 82,151,155,171, 36, 34,104,241,204,182,221, 0, 0, 32, 0, - 73, 68, 65, 84, 50,202, 74, 0, 6, 53, 87, 39,180,142,230,122, 51,246,130,146,164,140, 85, 36, 1,121,146,172,166,222,184, 49, -196, 68,232, 70,101, 28, 89, 4,145,219, 76, 79,152, 48, 0,208,167,248, 3,128, 59,154, 41,114,107, 48,112,184, 1, 97, 18, 81, - 13, 36,144, 44,181,148, 90, 42, 2, 16, 11, 0,154, 43, 76, 91,229, 8,119, 12, 3, 10, 78,169,170, 11, 34, 50,213,162,237, 95, -146,129, 29,161, 12, 42, 12, 17,228, 90, 74, 45,178,218,172, 33,188,185,235,182,119,246,126,234,230, 62,253,212, 23,163,234,217, -217,233,211,211,211,199,135,135, 79, 14, 15,239, 63,184, 79,156,111,236,237,221,222,223,219,223,219,219,221,221, 89, 44,182,182, - 22,219,253,108,187, 95, 44,250,190,207,125,223,229,156, 89,230,243,153,199,141, 90,107, 29,198,106,101, 24,149, 3, 50,103, 7, -191, 90, 93,172, 86,103,183,110,110, 45,114, 2, 39,119,143, 9, 67,214,232,208, 0,225,237,236, 82,107,204,102, 51, 59, 60, 42, - 22, 66,134, 32, 83, 76, 61, 38,127, 35, 4,120,212,169,199,132,129,147,174, 30, 24,169,145,239,169,149,189,175,219, 85,237, 95, - 18, 38, 0, 65,160, 67, 27, 11, 54, 88,205,148,173, 12, 0,242,196,226, 29, 94,158, 60, 59, 89,157,127,237, 27, 63,127,121,124, -190, 90,173,250,173,109, 27,174, 80,122, 40,235,192, 12,179,222,172, 2,184,121, 73,121,134, 44, 40, 57,172,230,174,115, 47, 4, - 62,174, 75,191,216, 22,240,127,243,111,254,213,106, 83,127,253,151,126, 97, 53,140,219,119,158,107,177, 82, 1, 12, 96,176, 64, - 68, 29,134,231, 94,122,249,147,159,250,236,225,163,251,125,206,167, 39, 71,175,190,246,250, 11, 47,188,248,253,239,126, 23, 2, - 95,255,244,107,183,246,111, 61,254,232,253,221,189,155,195,114, 53,219,222,134,107,174,231,100,129, 96, 10,183,220,207,145,194, - 55, 3, 48,219,104,121,214,139, 80, 25, 43, 1,200,108,166, 99, 9, 0, 2, 48,102,208, 26,227, 50, 80, 48,247,110,224, 58, 98, - 90, 16, 98,189,186, 40,235, 43, 52, 93, 23,221,212,130,128, 87,155,205,217,197,229,114,189,254,196,173,173,189, 25, 31, 45, 55, - 47, 60,255,234,222,206,222,209,211, 7,227,234,234,226,248,201,106,244,126,107,111,121,113, 36,253,182, 90,192,169,162,235,234, -242,196, 41,111,198,138,172, 8,113,190, 41,243,126,190, 25, 87, 73,186,182, 46, 41,101,116,243,198,111,185,113, 99,239,252,242, - 50,179, 64, 66,211, 2, 41, 47,175, 46, 95,253,196,243,255,252,143,254,209,215,190,246,181, 82,198,213,114, 57,172,151,195,106, -163, 58,158,159,157,188,255,193,253,247,238,221, 59, 62, 61, 27,138,110, 54,155,103,199,103,151,203,171,191,253,149, 47,252,139, -255,252, 15, 95,125,249,133,163,195, 67, 89,116, 31, 28, 60,125,107,127,175,223,217, 58,254,224, 1,215,122,107,123,209,212, 53, - 0,172, 48,148,177, 70, 56, 51, 7, 36,145, 68, 64, 14, 17,141, 78,218, 54, 94,129, 86,219, 22,167,169,201, 24, 17,192,241,122, -181,195, 85,107, 76,189, 15,180, 8,110,162, 68, 70,210, 9, 32, 64,128, 66,220,102, 45,185,133, 28,213, 88,146, 32, 71,184, 8, - 19,144,123, 88,120, 67,156,183, 20,159,169,122, 68, 0, 36,225,118,215,100, 98, 10,115, 85,225, 22,107, 15, 11, 71, 34, 78,226, - 30,200, 83, 58,182, 61, 18, 27, 86,144,166,181, 39,180, 90,109,251, 54, 17, 50, 0,154, 42, 8,119,185,175,117, 8,136,102,193, - 70,194, 68,201,205, 90,126, 25, 25,132, 69, 75, 37,118,206,217,195, 39, 22, 43, 0, 51,139,176,121,140,181, 50,145,187, 18,147, - 90, 48, 33, 34, 52, 68, 76,132, 33,114,171,156, 71, 56,181, 26, 57, 54,207, 66,152, 59, 18, 74,202, 77, 87,216,208,179, 44,210, -218,172, 77,120, 20, 0, 64, 70,200, 83, 67, 31,140,144, 66, 13, 9, 2, 27, 60,189, 76,238, 53, 68, 64, 16, 33,102,174, 85, 3, -144,152,186,220, 69,120, 41, 21, 66, 33, 16,168,173, 25, 0,192, 32, 60,145, 20,213, 64,119,109,127,210,169, 28,139,220,142,207, - 94,171, 33, 50,146, 55, 34,200,212,165, 20,214,162, 44,162,170,195,102,216,153,117,222,238,207,141,254,125,173,163, 64,132,148, - 68,171,185,153, 52,248, 59, 70, 51,116,154,153,185, 77,135, 50, 38, 43, 26, 4,194,164, 13,232,105,149, 17, 17, 88,189,245, 34, - 98,162,237, 2,185,155,155, 18,101, 68,134, 48,132,168, 85,153,200, 60, 56, 0, 57,132,177, 97, 87, 26,236, 63,144,180, 26, 81, - 36, 97,117, 51,213,148, 36, 89, 11,171, 2, 6,132, 69,128,147, 85, 67,221, 32,242, 98,123,231,141,253,189,183,222,124, 75, 16, -206,175, 46,238,127,240,193, 59,247,238,221,123,248,224,199,239,127,152,178,108, 47,182,110,221,216,219,219,221,219,223,219, 91, - 44, 22, 59,187,123,243,249, 34,247,115,150,148,243,108,190,216,162,157,157, 6,134,209,234,204,108, 14,227,176,119,244,172, 59, - 95, 46,215, 52,166,140, 61,113,110, 34, 87, 8,100, 66,240,150, 64,167,134, 4,148,188,183,179,181, 30,203,222, 34,181, 71, 54, - 34,181,137,121,248,245,147, 61, 0, 88,176,145, 44,209,137,200, 52, 38,136, 24, 65, 99,239, 33,183,174, 76,155, 18, 5, 0,145, - 91, 75, 72, 48, 95, 19,222, 9, 49, 16,173,129, 14,160,212,205,179,203,243, 87, 63,251, 26, 83,108,223,222,218, 44, 99,181,220, -204,102, 11, 18, 65, 76, 20,144,183,119,221, 85, 40,113,154, 5, 9,184,135, 43,138,232,184, 34,196, 97,216, 80,238, 82,146,195, -251,239,255,249, 95,189,255,135,191,255,123, 73, 88,187,158,187,174, 53,159,213, 29, 96,104, 50,132, 70, 87,250,242, 79,255,252, -255,252,131,239, 59,124,184,152,205, 36,119,247,239,189,127,181,186,250,241,251, 87,175,125,234,213,215,222,124,171,190, 99,194, -178,186,186, 76,243,121,106,189,187,192,112,100, 22,112,143,136,212,205, 81, 18,118,238, 99, 69, 34,166, 40, 99, 97, 65,192,208, -128, 8, 64,150,192, 64,107,230, 68,129,136,136, 66,210,215,113, 73,146,162,223,215,113, 24,175, 78, 49,236,108,189,118, 11,143, - 56, 59, 59,119,179, 27, 91,189,107,253,127,127,252,224,230,206,246,247,222,253, 32,103,153,117,249,253,143, 14,175,134,243,187, -119, 95, 38, 76,243,188, 72, 44, 8,176, 41,117,119,177,131,116, 98,102,139,237,155,106,163, 41, 93,172,135,138,148,146,128,133, -106,233,103,179,186,172,151,203, 37, 0,119, 73,246,119,118,181,120, 68,237,115, 62, 60, 58,234,186,254,183,126,249,231,254,232, - 59,127,255,149,215,222,216, 12,197,124, 29, 4,195,122, 88,175, 86,231,151,103, 31,220,255,232,222,253, 71,151,235, 85, 25,245, -248,226,236,236,244,252,246,141,253,127,254,157,223,253,157,223,248,213,205,102,253,215,127,245,221,221, 87, 94, 56,121,252,232, -240,228,100,118,255,193,187,239,188,255,226,205,221,173,221, 45, 55,107, 46, 60, 34, 24, 6, 93,111, 54,128, 48,235,250,156, 8, - 81, 80, 40, 98,154,194, 38,193,234,138,212, 26,111,112,109, 31,117,107,192,151,107, 89, 82,120, 16, 49,139,104,169, 16, 54, 26, -176,200, 44, 39, 3, 43, 69, 73, 48, 0,204,157, 68, 72,216, 84, 93, 3, 39, 61,186,229,190,183,170, 45,254,208,224, 33, 72, 40, - 76,238, 14,146,217,194,194,105, 50,190,131,183,133, 47,147,106,101,226,246, 8, 69,154,202, 38, 31,179,191,219,248, 8,152, 24, -201, 49, 8, 39, 94,147, 89,109,154, 73,119, 13, 13,100,132,208, 82,134, 86,250,103, 34, 4,110,169,237,191,185, 14,186,215, 90, -136,145, 19,155, 90, 4, 52, 57, 52, 49,185,251,176, 41, 44, 41,137,120, 4, 3,163,112, 47,160, 90, 39, 21, 90, 4, 17, 88,173, -125,206, 85,107, 75,240, 34, 37,104, 69, 19,226, 0,224,102,113, 14, 84,215,198, 37, 38,136, 10,128,156, 90,153,133, 24,181, 90, - 43,153,146, 16, 19, 91, 13, 35,107,121, 49, 55, 37,102, 66,210,170,146,152, 57,212,124,220, 12, 73, 36, 18, 3,248,176,222, 64, -227,163, 7, 49, 77, 90,206, 8,146, 28, 30, 80,213, 68,196,194, 68,184, 93,130,167, 67,143,169, 85,101, 17,145,220,116, 19, 17, - 32, 44, 85,171,154, 99, 4, 17, 3,194,106, 61,100,225,189,253,189,166, 44,132,152, 10, 55,140,172,104, 17, 81, 74, 37,162, 60, -235, 74,209,128, 72,196, 1,160,166,100, 33, 89,134, 90, 5, 49,108, 2,252,154, 58,128,103, 17, 55,115, 87, 2,106, 23,148, 0, - 5,228,118,188,104,151, 69, 0,114, 85, 55, 35,196, 44, 98,225, 57, 33, 73, 87,107, 69, 55,238,103,161,218, 86, 70,156,176, 95, -204, 54,101,116, 45,140, 72,125,102, 78, 56, 20,153,134,207, 77,164, 29,147, 26,140,154,135,195,108,117,121,238, 68, 89,228,173, - 47,124,241,203,111,127,101,181, 92, 30, 28, 30, 62, 60, 60, 58, 60, 60, 56,120,246,244,254,163, 71, 0,188,187,181,189,191,191, -123,247,230,222,214,206,238,206,214, 78,215,207,231, 59, 59,219,243,109,201, 57,229, 60,155,205, 49, 9, 33,206,102, 93,151,187, - 97, 24, 46, 47, 46,134,178,190, 24,171,219, 72,110, 34,209, 51, 37, 1, 73,146,120,234,145,162,199,238,206,206,209,197,250,230, -206,204,220,176,125,108, 91,179,116,242,138,180,145,186, 57, 76,182, 23,188,118,180, 54,247, 0,182,185, 26,112,184, 33, 18,160, - 18,101, 0, 2, 97,208,128, 54, 55,107,159,109,181,233,178, 11, 16,225,121,158, 94,125,227,213, 46,241,184, 41,148,120,177,213, - 93,148,203,177, 32,149,113,247,198,110,120, 3, 84,160,150,209,170, 82,219,254,154, 5, 49, 98,251, 90, 66, 55,235,125,117,245, -151,223,253,222,167, 63,253,249,183, 62,243,201,139,243,203, 59, 47,188,236, 86,218,211, 2,136,133, 59,183, 64, 68, 33,172,181, -236,222,218,255,202,215,126,246, 79,254,221,255,190,181, 88,228,156,250,126,254,226, 11, 47, 60,125,250,236,254, 7, 31,204,102, -139,155,119, 95,248,241,247,255,226,185,187, 47,143,235, 43, 33,226, 44, 13,111,108,181, 54,235,227,100,122, 84,215,170,121, 62, - 99,166, 90,215,161,225,140, 48, 86, 98, 4,114,171, 26,213,180, 42,231,140,109,195, 28, 53,165, 29, 78,253,120,254, 76, 55, 27, - 34,114,247,195,211, 51,243,152,119,233,242,234,162,140,195,211,211,139,139,229,234,108, 57, 84, 15, 64, 94, 46, 47,199,113,204, -249,131, 62,119,221, 7,143, 5, 2, 48, 4,202,214,246,222,238,214,222,140,160, 79, 98, 97, 12, 39, 93, 39, 15,151,171, 71,207, - 78,247,111,221, 14,117, 6,154, 44,230,200,225,136, 8,203,245,230,206,205,189,157,237,217,217,121, 57, 57, 63,187,123,235,230, -111,127,251, 91,191,247,155,191, 57,223,217, 91, 13,155,208, 90,198, 90, 54,195,197,213,213,225,225,147,251,143, 14, 14,143, 79, -150,155,245,114,189,121,244,248,233,114,189,252,214,215,191,250, 79,254,224,119,222,120,253,211, 79, 30,126,180, 28, 47,159,156, - 28, 63,187,186, 24, 71, 37,247,227,123, 15, 95,123,110,191,235,187,112, 96, 78, 65,145, 36, 87,171,110,134, 64,136, 18, 64, 72, - 41, 0,107, 41,237,219,154,128, 75,177,182,196, 67,196,106,198,136,128,232, 62, 65,247, 2,177,152, 39, 64, 74,108, 26, 94, 11, - 11,187, 17, 35, 8,163,154, 33, 97,238, 82, 76,149,121,105,218,131, 8, 32,166,208, 42, 50, 11, 36,173, 10,238,128,236, 97, 77, - 11,134,209, 50,231,192, 14,197, 93, 36, 5, 24, 18, 69, 91, 80,121, 4, 4, 17, 86,171, 89, 50,226,199,122,163, 96, 36, 15,107, - 73, 52, 18, 1, 36, 66,200, 68, 49,153,206,130, 37, 69,184,107,109,174,204,128,104, 49, 33, 68, 76,194, 16,164,166, 97, 78,109, - 80,133,100,234,136,200,137,220,204,140,194,189,105,155,136,200,204,144,128, 83, 2,143, 0,247,176,156,102, 13,148,220,120, 31, -161,214,254,226, 28,172, 81, 39,195,220,209,136,164, 81, 41, 1,160,203, 57, 92, 77, 43, 0,112,227,106, 4,168,161,176, 4,161, - 59, 32, 57, 70,251,217, 0, 8,219, 16, 99,226, 25,168, 82, 91, 48,154, 65,162,156, 19, 49,169, 42, 34, 72, 74,128, 16, 85, 53, -130,137, 63,214,117, 70, 0,132, 83,151,201,195, 45,188, 22, 64, 48, 0, 17, 65,156,222,172, 16,232, 86, 16, 33, 9, 3, 35,128, -154,129,228,228,181,182,222, 90,179, 84, 71,168, 41, 12,235,205,206,206, 28,136,155,246,190,129,101,205,161,186, 97, 43,102,122, - 4, 56, 1, 9,139,187,186, 59, 18,117, 93,246,170, 85, 45,170, 66, 22,143, 64, 22, 36,119,119, 78,226,106,215, 22, 38,182, 82, - 72, 18, 64,154,196,209, 0, 72,216,198,170,109,154, 10,230,230, 83,255,174,150,129,137, 81, 18, 52,129,181,131,100, 6,193,106, - 74,216,186,244,198,141,232,145, 89, 32, 90,191,184, 97, 35, 39,149, 93, 0, 16, 55, 38, 41, 50,160,123, 12,155,245, 56, 34, 51, -191,244,194,139, 47,191,252,178,149, 58,214,122,185,188,122,252,228,240,222,131,199, 31,222,255,240,157,247,116,103,107,251,206, -237,155,183,247,110,108,109,111,221,216,219,221,221,221,159, 47,182, 23, 91,187,243,237,173,190,235,171,142, 14,150,102,249,134, -220, 80,157,107, 51, 23,140,101, 28,135, 85,173,161,234,235, 26,166,130,206, 76,139,153,206,146, 92, 93, 94,192, 75, 55,187,196, -222, 90,179,166,128,224,244,255,115,103, 67,203, 89, 57, 4, 5, 70,251, 72, 53, 97,103, 88, 0,122,152,145, 72, 75,212, 0, 50, -184,181, 69,111,139,243, 52,116, 42, 10,121,131,191, 19, 6, 64,206, 25, 49,180, 86,108,188, 10,211,221, 27, 59,231,103,231,203, -139,186,127,247, 57, 34, 78, 76,225, 96,166, 77, 65, 99,170,102, 99,238, 59, 70, 30,215,155, 60,159, 11,243,241,225,193,159,191, -243,254, 63,250,131,191,123,124,248,228,246,167,222,252,216, 87,235,227,128,130, 22, 53,204, 56, 11, 10,133,177,187,126,241,171, - 95,255,193,119,255,114,117,117,177,179,179,187,189,179,219,160,158,143,158, 60,189,115,243,254,141, 23, 63,201, 36,253,246,118, - 45,235,205,122,185,197, 55, 90,125,105,106, 2, 3,165,173,173,112,133, 90,242, 44,179,112, 45,163,135, 77,145, 85, 66, 36,114, - 51,175,213,106,109,178,152,230,220,212,170, 72,168,171, 11,168,107, 2,179,205,250,236, 98,121,190,222,188,180, 63,103,240,139, -171,101, 41,117, 40,234,238,235,205,122, 44,155,253,157,253,190,239,198, 90,170, 57,150,178, 30, 70, 11, 55, 83, 70,196,179, 21, -211,179, 81, 71,114,220,217,158,119,210,213,186, 73,156, 66,100,189, 90,237,236,237,113,224,184, 30, 55,101,221,229, 57,241,170, -140,163,131,175, 86,155,139,245, 82,178,124,243,203, 95,255,245, 95,253,246,167, 94,253, 84, 32,173,214,203,178, 89,175,150,203, -243,211,147,229,106,245,224,201,163, 15, 31, 60,185,184,186, 28, 85, 79,207,206, 31, 60, 57,248,220,203, 47,255,195,223,249,199, - 63,255,245,159, 6,175,167, 87,167, 31, 61,123,184,152,245,119, 95,121,233,199, 63,120,119, 60, 95,110,207,186,221, 69,215, 82, - 98, 41,229, 73, 64, 44,109,188, 77,205,232, 38,146,212,172,225, 94, 5, 81,205, 21,221,193, 1,200, 44, 48, 65,151, 72,181, 77, - 97,128, 36,143, 99, 33,114, 97,108, 53, 91, 33,242,128, 8,231, 46,145, 69, 45,222,205, 16, 35,128, 5, 29,136, 34,220, 34, 64, -114,106,246,177,212,119,166, 58,225,199,144,152, 24, 3, 61,204,219, 99, 17,128,136,172, 5, 35, 29, 16,209,109, 66, 86, 33,120, - 85, 35, 71, 17,153,212,193, 24,102, 14,132,238,134,136, 30, 17,224,140,210,192, 80,118,189,143,108,199,160, 54,196, 3, 68, 7, -100, 22, 64, 96, 78, 17,230,230, 30, 22, 1, 36,140, 17,136, 17, 4,196, 28, 22,174,214,224, 78,204,137,137, 17, 67,205, 89, 24, - 1, 61,188, 53,182,144,219,253, 47, 8, 17, 5,205, 60,245, 73,213, 16,177,239,250, 82,149,164,253,166,212,166, 31,196,130,142, - 90, 10,113, 16, 49, 64, 48,114, 49, 3, 0, 73,140, 66, 0,200,102, 22,232, 22,204,212,242, 69,209,214, 27,173, 69, 15,228, 17, - 44,220,254,230,171, 57,121,211,218,229,112,141,136, 36, 18,234,225,222, 72,136, 44, 66,136, 22, 14, 22,225,218, 36,165, 45,150, - 29, 17, 76, 4,130, 90, 21,192,152,164,173,208,107,177, 89,159,152,195,106,109,213,178, 78,196,205,212,205, 35,170, 6, 49,205, -231, 91,129,228, 90, 3, 81,136, 85, 77,213,136,200, 32, 56,204, 29, 4, 25,168,177,145, 49, 33, 50, 75, 85,115, 15,130,144, 46, - 71, 4,185,223,253,212, 11, 44,242,240,135,239, 34,112,238, 58,173, 58,234, 72,225,148, 90,118, 66,152,167, 32,141,183,215, 72, -147,208,133, 99, 98, 17,114,211, 8,109, 92, 68, 11, 71, 69,102, 82,139, 58, 22,172,200,125, 70, 72, 24, 5, 52,144, 73, 82, 39, -162, 2, 24, 0,196,137,221,212,194, 1, 26, 77,173, 13, 58, 40, 38,216, 98, 4, 33, 96, 20,173, 4, 8,166,132,152,152,111,238, -221,184,181,191,255,246,151,127,202, 34, 78, 14, 15,254,226,175,127,244,193,131, 71,239,254,228, 39,187,219,187,119,239,220,190, -125,243,230,173,253,253,155,251,183,182,182,182,155,116,116,179, 90,113,151,152, 18, 19,139,116,121, 54,227,109, 42,195,198, 27, - 10, 24, 92,213,203,184, 41,165,174, 52,134, 0,173,254,215,239, 61,125,233,185, 61,230,152,117, 73,136, 82, 78,213, 44,212,112, -194,151, 5,160,180, 91,103, 76,246, 85, 0,128,152,100,193, 48,177,114,218,246,164,148,134, 90, 68, 73,237,118,118,109,118, 37, - 98,135, 41, 47,143,109,141,127,253, 6,112, 8, 15,192,253,219,123,103,112, 57, 44, 87, 55,238, 62, 79, 93,167,181,216,122, 21, - 1,198, 2,225, 41,247, 2, 94, 86, 35, 64,128, 43,172, 87,255,199,127,248,179, 55, 94,251,244,110, 39,105,107, 39,207,231, 54, -142, 32, 30, 1,216, 24,123,213,165,203,212,117, 94,171,107, 9,151,188,216,250,185,111,254,242,191,253,223,254,101, 68, 44,102, - 51,130, 4, 30,199,199,103,207,142,207,186,174,191,115,231,238,102,121,190,127,247,197,243,103, 79,106, 29, 83,154, 11,161, 7, - 33, 88, 4,116, 41,187, 69,235, 5,149,205,224, 30, 1,132,196,174,163,164, 4, 16,182, 41,170,149,187,121, 68,227, 55,145, 87, - 29,139, 42, 0,155,233,234,170, 92,157, 46,175,174,142, 47, 47,239,238,228,203,205,112,112, 49, 46,178, 97,132,154, 69,200,214, -108,203, 93, 75,217,172,198, 13, 98,131,154, 49,162, 33,128,180, 96, 9,162,170, 9, 97,215, 45, 82,234, 0,184, 4,123, 4, 3, - 28, 28, 31,207, 22,243,234,113,113,177, 52,119, 89,208,238,214,214,145,214,176, 56,190,188,204, 2,255,229,223,251,206, 79,191, -253,211,105, 62, 27,198,106, 58,142,195,112,121,126,126,177,188,124,118,116,244,209,227,199,143, 15,159,142, 69, 55,227,240,228, -240,217,249,229,229,175,125,253,237,255,246,191,250, 39,139,197,236,248,209, 3,185,177,251,222, 79,126,116,254,244,216,144, 30, -221,127,188, 55,239,110,238, 47,192, 9,130, 57,152, 56, 85,179,148,216, 53,170,142, 0, 48,155,247,195,166, 8,167,174, 79,227, -168,140, 2,204, 69, 45, 34, 28, 12,129,137, 33, 12,192,124,163, 38,137, 19,209, 88,172,216, 64, 76,137,147,155, 87,173, 41,139, -185, 49,145, 16,153, 6, 32,228, 76, 86,148, 37, 97, 43,103,134, 91, 53,164,112,165, 6, 38, 27,139, 50,177,224,199,210, 75, 10, -159,218,249, 85, 61, 53,159, 42,130, 16,170,151,143,101,146,197,172, 99, 70, 48,206,220,112, 20,141, 61,197, 8, 78, 1, 6,238, - 70, 36, 30,212,102,192,230,129,196, 44,201,106,153,200, 99,209, 20,217, 72,211,225,130, 81, 48,106,212,170, 57,119, 36, 92, 75, -117,117,206,210, 4, 74,142, 68, 64, 0, 42,196, 22, 54,106, 21, 78, 57,101, 11,131,118,117, 8, 8, 64,213,202,228, 0,168,224, - 8,200, 34,106,174,170, 76, 12,204,185, 75,170, 10,140,140, 12,224,161,230, 17, 30,209,207,186, 82,107,132,181,242,203,117,180, - 55,216, 80,193,155,218, 2, 34,204,195,195, 24, 73, 48,134,106,194,212,245, 93, 84, 5, 64, 48,168,161, 0,192,220, 0,159, 56, -169,158, 60,180,170, 2, 8,177, 67, 16, 51, 18, 34,178, 87,115, 31, 1, 0,157, 89,196,205, 82,226, 82,109,226, 4, 64, 8, 73, -245, 54,167,165,156,121, 24, 43,181, 59, 60, 1, 64,168,121,123, 46, 64,232, 82,199, 44,132,194, 76, 20,220,149, 82, 55,227,144, - 82,146,196, 13,126, 40,189, 80,117, 11,143,106, 57,119,125,238,116,172,131, 22, 38,206, 89, 34,124,189, 30,137, 41, 16, 30,127, -120,191, 23,161,148,193,221, 33,136, 69,196,220, 3,129,131,130,165,249, 91, 2,194,152,196, 28,204,106, 74, 12,152,195, 21,193, -221, 13,153,194,216, 74, 77,137, 83,206, 36, 51,201,166,227, 8, 68, 86,181, 73,138, 56,103, 13,199, 90,221, 84,166,171, 74,139, -163, 52,101, 7, 6, 77,171, 18, 14,155, 52,122, 13, 77, 76, 56, 5,162,130, 28,173,249,226,193,139, 51,209,243,159,120,229,239, -127,254,243,155,171,213,193,193,225, 15,222,251,201,227, 39,135, 63,250,241,113, 55,155,221,190,181,127,235,198, 94,159,123, 17, - 6, 15,206,156, 57,167,156, 89, 40,167,190,239,186, 82, 6,102,201,179,190,203,189,164,110,214,237,152, 27, 6,167,174, 95, 36, -254,254, 59, 63,122,254,149,207, 93,156, 31,217,133, 74,194, 25,215, 89, 71,204,145, 48, 56, 17, 19, 35, 11,178,128,107, 27, 74, - 67, 56,254,141,147,121,170,191, 94, 11,229,155,153, 47, 32, 28, 12,131, 63, 94, 80,125, 44, 99,253, 88,219,212,224,150,141,125, -140, 8, 70,152,246,110,237,172, 46,175,250,113,191, 7, 53,117,236,102, 62, 86, 2,200,139, 45, 64, 40,171,149,169,230, 69, 15, -227,248,195, 15, 63,248,241, 71, 79,255,187,127,250, 71, 96,155,173,219,207, 1, 0,205, 22,161,170,227, 70,114,135,129,146,152, - 51,135, 86,175, 5,212, 33,131,151,241,179, 95,252,210, 79,126,252,131,251,239,191,187,183,187,183,115,163,159,197,226,230,173, -155, 63,250,240,209,243,207,221,186,251,210, 43, 63,121,247, 7, 22, 88,199, 77, 23, 36, 93,103,193, 77,208,202,185,199,196, 81, - 43,245,185, 86,211, 90, 19, 55,147, 67,112, 74,200,232, 6,152, 58, 2, 4,175, 36, 25,194,189,140,212, 39, 36, 28,151, 39,164, - 21,213,204,244,100,181, 58,175,155, 71, 39,203,117, 81, 2, 90,143,165, 29,211,170,171,134,118, 73, 54,227,102, 24,107,223,145, - 16, 71, 3,248, 55, 94, 76, 52, 37,189, 33, 73,128, 95, 46, 47,158,191,251,252,214,238,236,234,236, 18, 2,186, 46, 31, 62,125, -186,187,189,131,204, 89, 4, 0, 5, 35,137, 96,192, 87,223,252,220,239,255,246,111,126,250,211,159,221, 84,173, 69,135,245,229, -106,181,188,184,184,188,184,188,120,250,236,248,222,227,135, 71,167,103,165,214,179,243,203,131,163,227,151,239,220,250, 23,223, -249, 59,191,250,183,127,225,106,121,249,244,209,209,209,201,209,201, 7, 63, 57, 61, 57, 73, 57,157, 61, 61,251,228,237, 61, 78, - 2,208,160,193,164, 17, 96,202,196, 67,169, 18, 0, 44, 76, 36,192,214, 49, 33, 16,230,110,214,226, 28,181, 17,193,218,103,132, -130,140,176,186,139, 16, 35, 13,165,122, 88, 34, 1,162,106, 21, 9,165, 19, 51,203, 57,187,195,104,158, 83,134,104, 49, 92, 2, - 32, 68,114,112,195, 9, 54,233, 17,204, 20,128, 41,101, 68, 80,171, 44, 66,128,230,138,212,214,134, 72, 20,141, 92, 99,127, 19, - 18,107,107, 94, 0,119, 72,148,187,220,254, 3, 70, 0,147,155, 25,128, 0, 19, 33, 80,134,128, 68,162, 81, 16,185, 37,193,234, - 56,182, 23, 68, 76,104, 39, 4,112,102,102, 18, 96,172, 99, 37, 4, 97,246,176, 80, 64, 18, 20, 53, 83,240, 32, 97, 97, 70,162, - 48,240,112, 68, 74, 66,136,164,174,205,233, 12, 0,106,218, 46,132,225, 78, 44, 45,243,230, 54, 5, 46, 25, 73, 93,175, 19, 58, - 68,192, 36,162,234,222,132, 21,102, 56,121, 91,249,122,140,132, 0, 96, 97, 13, 14,234,224,129, 1, 26,125,238, 12,221,212,115, - 6, 8,172, 85,115, 74,165, 20, 85, 37,102, 17, 17, 34, 64,172,230,140, 1,196,109,219, 44, 14, 0,209, 94, 27,181, 84, 4,243, -176,246,107, 39, 12, 58, 73,173, 26,230,212, 40, 88,129,155,162, 2,152,103, 89,205,193,157, 24,193,129, 32, 2,168,170, 49,145, - 79,216, 1,216, 44, 55, 55,118, 23,204,172,234,102, 42, 36,193,141,108, 10,204, 40,194,141,230,201,211,211,194,181,186,154,138, - 16, 39, 52,117,119, 72, 45, 48, 30,193,129, 85,141, 19,154, 6,104, 32, 43,210,199,231,105,176, 97,240, 48, 96,102, 18,117, 35, -164,217,124, 94, 84, 33,148, 16, 16, 73,186,121,181,130,228,169,239, 70, 51, 93,111, 94,253,210, 27,251,207,223,253,238,255,249, - 39,104,158, 82,146,121, 86, 3,211, 74, 22,156,137,145,197,205,154, 34,163,197,173,166,181,245, 4, 48,177,214,161,104, 99, 65, - 64, 68, 20, 36,112, 85, 50,196, 32, 2, 35, 36, 70, 52,192,113, 24,199, 77, 33,194,231,158,127,241,165, 79,188, 88,198,114,114, -122,246,228,233,211,131,195,227, 15,239,223, 91, 94,173, 3,209,212,187, 62,101,233,182, 23,179,217,172,159,117,185,207,157,122, -205,185,155,117, 93,223,245, 41,231,197, 98,171,235,103, 41,165, 78,251,217,238,238,130,134,177,172,238, 62,119,171,150,106, 14, -238, 49, 88,213,162,168, 22,232, 68,214,201,152,197, 18, 55,236,160,119, 89, 8,208,153, 1, 40, 76,161, 21, 51,176,237, 92, 38, - 67,247, 20,218,105,101, 22, 71,196, 6,135,167,201, 57,213, 76,197,209,118, 85, 19, 92,222,221, 24,169,159,243,229,197,129,205, -110,246, 89,154, 13, 12,137, 16, 65,199, 82,135, 65, 50,187,169,149,242,239,255,236, 47,127,235, 91,191,216, 17,224,214, 45,206, -226,225, 28, 97, 22,156,178, 71, 32, 17,162, 51, 83,217, 12, 0,212,204, 39,110, 6,179,217, 55,190,249, 43, 7,143, 31,157,157, -156,230,174,239,230,243,253, 91,183,206, 79, 47,222,187,247,168,159,239, 60,247,194,107,227,250, 18,115,223, 37,169,195,166,159, -111,181,197, 95,238,103, 4,224,141,139, 82, 53,207,250,178, 92,153,123,202, 61, 37, 2,199,240,226,174,141, 35, 1, 86, 0,133, -187,158,136,234,234, 98,214,239,102, 44,207, 30,189,255, 31,255,234, 47, 78,158, 29,212,193,138,122, 22, 54,243, 82,170,105,117, -247,205,102, 19,225,170,176, 90,109,152, 37,161, 8,178,130, 93, 51,223, 8, 16, 24,201, 92,203, 88, 35,135, 87,187,188, 90,222, -220,221,229, 46,103,150,243,213, 57,114, 90,173,214, 59, 91, 11, 34, 4,132,243,139,139, 79,220,189,253,171,191,248,139, 63,247, - 51, 63,179,216,219, 91, 13,213,117, 28, 87,171,211,211,243,147,211,163,163,163,163, 71,135, 79, 15,158, 29, 45,203,102,121,181, - 57,124,118, 60, 79,244,143,127,227, 91,191,253,173,111, 62,119,247,206,106,220, 60, 62,124,188, 90,173,118,110,239,159,141,171, -139,139,203,253,173,173,231,111,237,153, 55,224, 31,179,164,218,194, 15, 76,132,204, 64, 44, 20, 4,110,128, 14, 73, 4, 9,153, -209,180, 9,104,168, 61,203, 8, 41,154,166,163,217,219, 61, 70,173, 0,144, 56,199, 52,183, 67, 83,167, 36, 76,185,157,236, 82, -146, 70,142, 35,230,182,229, 84, 53, 22,102,108,230, 58,108, 19,237,118,132, 6,130, 76,217,220, 45, 76,136, 13,128,147, 68, 56, - 5, 34,195, 68, 41, 17, 66,164, 90,148, 17,176,237, 75,173, 81,158, 16, 61,220,131,124,194, 44,169, 25, 3, 52,137,143,161, 17, - 9, 37, 10,245,136, 72,179,236, 30,109,211,192, 16, 0, 65,169, 39,183,106, 21, 42, 0,227,244, 46,158, 2,141, 14, 24, 66, 12, - 12, 48,181,187,201, 16,174,191, 21,220, 82, 12,204, 84,171,182, 71,124,219,115,181, 71,252,116, 36, 34, 36, 76,230, 90, 93, 17, -152, 5, 29,137, 17,181, 22,119,134,107,211,189, 55, 43, 20, 77,197,174,230, 75, 79, 36,214, 96,133, 62,153, 70,130,162,122,243, -170, 71,132, 55, 56,173,181,249,123,226,150, 43, 47,238,204,200, 44,225, 26, 30, 72,228, 30,204, 65,204,230,129,225, 34,132, 72, - 32, 93,216, 4, 67,199,160, 8, 35,188, 14, 81, 67, 16, 96, 43,231,171,218, 4,190, 13,115, 12, 11, 68,247,182,150, 99, 70, 0, - 58,187,220, 36,162,174,235,181,106,132, 39,102,107, 2,222, 52,213, 43,193, 45, 48, 35, 55,234, 57,185, 59, 51, 19,246,238, 21, - 12, 24, 9,201,205,129, 24,219, 93, 6, 17,189, 6, 17, 71,139,224,178, 56,152,150, 98,126,157,141, 5, 12,128, 78, 56, 64,204, -125, 98, 73,133, 99,132,129, 17,146, 19,142,170, 30,150, 83,122,246,225,253,147, 71, 7,204,137, 48,132,217,204,175,129,140, 81, -138, 85,171,210,106,205, 96,147, 37, 21,131, 3,204,189, 73,174, 48,194, 90, 83, 20,185,201,117, 35, 12,208,104,226, 97, 92,179, - 80, 16, 3, 40,181,183,229,122, 40,232, 6,164,219,187,219,111,238,111,127,254, 51,111, 12,155,245,147,195,103,239,221,187,255, -224,225,225, 48,212,141,175, 62,252,232, 98, 61,214, 89,215,245,179,217, 98,150,183,183,118,102, 93,154,167,196, 73,102, 57,179, -200,172,203,125,215,109,237,236, 16,203,131,119,255, 58, 94,126, 49, 73,215,205,103,125,206, 44, 11,230,228, 78, 85,199, 90,134, -106,174, 21,116,212, 50,174,136,160, 23, 22,162,190,163,204,152, 36,229, 89,110, 86, 39,243,104,167,120,192, 73,224,228,102,225, - 64,130, 72, 50, 65,239,133,145, 57, 84,167, 5, 45, 18,181,249, 76, 64, 0, 26, 4, 49, 39,176,229,234, 36, 98,191,159,205, 16, -212,172,184,226,230,236, 24,137,136, 18,154,191,247,193, 7, 55,111,221,253,220,171, 47, 14, 14, 55,118,118,128,201,203,104,170, -224,150,182,182,235,122,128, 0, 72,172,197, 0,197,235,200, 93, 10, 85,202, 89,199,113,190,187,255, 51,223,248,246,255,245,239, -254,245,238,122, 57,159,207,103,179,249,157, 59,183, 14,158, 28, 92, 92, 94,221,217,190,177,253,226, 75,239,191,243,215, 71, 79, - 55,251, 55,246,187,217, 28,145,180, 90,238,103,237, 66, 85,215, 99, 16, 67,128, 90,149,214, 19,170, 21,101, 22, 86,180, 42, 17, - 7,102, 4,197, 40, 72, 93, 0, 2,240,162,199,135,247,238, 95, 46, 55,159,124,229,141,123,239,126,240,222,211,243,170,214,119, -226,230,227,160, 0, 10,129,163, 21,115,219, 84,115,143,174, 99, 34,116,240, 54,144,253,216,110,232,104,238, 86, 74, 73,153, 34, -193,106,179,218,219,217,186,177,179,253,209,227,199,165,150, 27,219,249,114,189, 82,173, 93, 78, 26,240,183,190,250,149, 95,255, -149, 95,185,251,226,203,152,186, 81,171,151,241,242,226,228,217,211,195,139,243,139,123, 15, 31, 63, 60, 60,184, 92,175,199,205, -120,124,113,126,122,118,246, 51,111,126,230,159,254,189,191,243,250,235,159,124,250,248,241,179,243,227,167,199, 71, 79, 15,159, - 84,139, 15, 31, 63, 30,206, 47, 94,220,219, 19,193,106, 77,248,206, 0, 68,204,110,181,170, 39,136, 32,112,140,106, 53,129, 68, -132, 54,112,138, 75,245,170,225,137,184,250,164,225,109,219,251, 8, 48,247, 54,232, 22, 70,117, 84,183, 44,211, 5,128,169, 57, -150,188,201,225, 3,192, 28, 16,155,100,110,202,103, 77, 12, 3,139, 32, 38, 33, 55, 3, 8, 73,115,196,104,143, 72, 4,170,102, -109,215, 76, 68, 78, 17,134,102,202, 60, 53, 21, 25, 9, 66,193,129,137,107,107,101, 67,106,228, 27,245, 32,188, 14, 77,185, 59, - 64,187,219, 3, 66,115,206, 51,160,153,133,134, 36, 49, 15,102, 10,247,208, 82,219,232,156,201,195,195, 20, 49, 1, 98, 68, 37, -226,148,146,106,128,187,187, 19,146,187,182,200, 60,132, 53, 37,125, 68, 12,155,145,136,152,209, 17,213,131,176,229,183,128,112, -162,152,149, 82,163,245,210,133, 60, 90, 35,131,186,249,124,216, 12,224, 70, 41,133,163,187,195,228, 93,165,192,105,117,105,208, - 42,160, 22,166, 36, 82,170, 9, 11,145,149, 98, 45,224, 4, 68,165, 20,170, 53,119, 51, 51, 43,181, 50, 33, 96,104, 13, 78,216, - 18, 1, 34, 9,204, 93,139,214, 98, 0, 34, 12,225,192,142,206,204, 98, 94, 85, 75,151,122,132,164,132,101,181, 38, 7,234, 51, - 24, 88, 53,184,174, 9,198,181, 56, 98,146,133, 97, 3,253, 7, 37, 89,111, 54,115,145,246, 65, 87, 32,119,240,240,148,147,131, -123,141,128,202,146,137,160, 86, 15, 83,226,132,129, 97, 17,160,156,196,171,171,150,148, 83,206, 84,213,109,116, 64,151,148, 32, - 72, 18, 15, 67,105,153, 34, 51, 15, 3, 17,142,166, 42,236,147,105,140,234, 18, 35,176,180,224,110,235,233,168,106, 78, 2,196, - 18,225,142, 26,161,171, 85,167, 58,159,207,198, 90,212, 13,192, 17,217, 61, 26,124, 8, 34,164,189, 1, 39,215, 40,178,123,193, - 86,160,107,166,211, 9, 86,196,205,116, 2,222,198, 53, 96, 30, 19,103,191,185, 82,153, 3, 12,145, 29,140, 9,131, 32, 28,195, - 77, 29, 2, 48,119,253, 27,111,124,234,173,207,125, 54,220, 3, 57, 76,135, 58, 46, 47,175,142,143,143,190,247,195,247, 78,175, -150, 23, 39, 71, 79,170, 5, 98, 22,206, 41,111,117,253,108,158,179,164, 62,119, 66, 56,142,155,163,147,227,121,223,205,250,249, -246,246,214, 98, 62,159, 47,102,210,207,102,253, 98,222,207, 89,208,157,220,221,108,199,221,135, 97,181, 44,195,229,102, 84,117, -198, 16,194,157,237,217,172, 75,179,140,132, 70,200,222, 18,148,238, 83,234,217, 20, 1,130, 82, 32,176, 65, 52, 35,253,132, 44, -110, 41, 57, 71,247, 0, 22, 9, 67, 68,230, 14, 99,189, 60,170,101, 49,223,218,235,250,206, 76, 65,136,220, 49, 32,172,188,123, -239,241,219, 95,120,243,114,185,185,243,202, 93,226, 20,227,136,220,185, 22, 78,104,195, 8, 30,196,136, 68,225,238,101,131,146, - 17, 9, 4, 56,165,178, 94, 91,209,207,127,233,203,239,191,251,206,213,197,233,214,246,216,205,230,139,237, 45, 73,114,112,248, -108,190,152,229,249,203,187, 55,247, 22,139,237,237,221,221,243,147,227,189,253, 91, 64,212,205,183,136,185,140, 67, 25,171,100, -168,234,169,155, 33,167,105,156,105,106, 70, 34,105, 42, 10,184, 55,145, 91,148,186, 89,158,253,248,135,127,101, 21,119, 16, 25, -203,170,216, 70, 21, 32,220,161,186, 5, 86, 51, 47,174,153,114,241,113, 84,117, 12,166, 41,157,221,216, 62, 68,204,141,182, 31, - 24, 17,163,105, 42,214,247,157, 99,156,158,159,119, 41, 45,151,203,220,117, 0,112, 99,103, 71,181,222,220,223,255,173, 95,254, -230,207,253,220, 47,240,108,238, 0, 97,186, 57, 63, 59, 57, 61,122,250,228,201,211,227,147,135, 7, 7, 7,199, 39, 67, 45, 23, - 23,151,231,231,231, 59,139,197, 63,251,221,223,248,253,223,252,118, 32, 28, 30, 60, 57, 56, 61, 26, 30,172, 14,143, 78,210, 44, - 63,248,240,225,237,237,173,231,246,246,192,221,108,250, 54, 34, 16, 35, 19,165, 46, 49, 98,193,169,160,131, 0, 82, 91,253,199, -117, 44, 35, 56,244,253, 44,115,170,230,204, 18,211,194, 61, 40,144, 17, 71, 83,102, 38,160, 0, 76, 66,194,108, 26,216, 86, 67, - 13,161,139,220, 24, 16,173, 62,223,110, 0,146,164,117,112,154, 20, 87,178, 32,224, 88,106, 27, 37,184,106, 32,182,200,180, 70, - 13, 15, 72,132, 68,225,225,225, 16,134,132,192,152, 92, 12, 12, 99,106,194, 4, 64, 22,102,148, 82, 11,114,195,156, 1,130,121, - 40, 33, 7, 53,250, 6, 6,122,155,195,153,182, 80, 21,166, 44, 14,144,132,221,181, 29,140, 91,162,188,233, 67, 72, 90, 39,222, - 26,245, 37, 0, 73, 2, 49,225, 88,218,253,195, 60, 8, 0, 89, 88,146,169,181, 82, 28, 65,195,247, 33, 51,133, 53,247, 20, 96, -128, 7,148, 65, 69, 24,144, 17,130,136, 75, 25, 0,128, 40,141, 99, 1, 7, 32, 49,117, 66, 64, 32,202,130, 13,115, 73,140, 12, -161,225, 16, 2, 76,194, 14,174,102, 89,208, 35,188, 56, 2, 36,145,170,166,101,204, 57, 35,164,198, 16,224,166,232,113, 64, 66, -119, 13, 39, 73,201, 76,213,140, 34,152,137, 48,170, 27, 19, 51, 9, 18,152, 25, 6, 18,177,185,107, 85,194,232,186,206, 74, 13, -179, 6, 49, 33,132,182,137,109,150, 56, 15, 96, 12, 32, 8, 70, 14, 68,228,203,229,154,195,183,119, 23,215, 77,120, 16,102,180, -134,197, 53, 66, 68, 76,102,166,106, 72,148, 82, 86,179, 90, 53,119,137,185,115, 83, 34,234,251, 92,171,154, 83, 0,230, 46, 69, -132,171,135,107, 13, 77, 89,180,170,106, 77,157,184,116,227,102,157,147, 80, 78,110,193,196,104, 17, 68,156, 68,171,130,143,129, - 40,148, 33,193, 20,192,207,157, 14,163,160, 2, 50, 4, 14,227, 38, 39, 49,160, 82,107, 67,236,182,119,219, 84,234,111, 76,178, - 8,244, 80, 36,142,104, 81,241,143, 81,162,237, 78, 51,205,178,221,162, 21,219, 62, 38,179, 83,187,255, 56, 6, 6,181, 41, 7, -196,199, 35,240,118, 29, 44, 99, 25,198,145,129, 26, 79, 66,132,110,220,216,221,223,223,121,235,243,159, 65,176, 50,148,171, 97, -125,120,120,242,236,244,226,252,226,242,240,232,228,248,244, 92,181, 6,130,112,218,157,247,171,177,228,148, 37,165,124, 44,125, -150,148,187, 89,151,186,148,103, 93, 63,219, 90,204,230,219,253,172,203, 93,223,119,139,174,223,245,216, 13, 51, 85, 53, 11,143, - 40,238,151, 23, 25,107,255,230, 0, 0, 32, 0, 73, 68, 65, 84,235,112,152,207,122, 17, 12, 43,137,128, 25, 82,226, 94, 88,184, - 25,198, 61,130, 28,167, 22,212,181, 70, 22,154, 6,204,189, 48,160,218,132, 7, 0,198, 52,163,113,189, 33,148,212,221,112,213, -148, 82, 0,131,218,189,143,238, 45,230,253,173,189,197,246,173, 59,105, 62, 7, 17,164,100,165, 82, 74,144,210,184, 90,167,220, - 97, 74,156,164, 14, 35,114, 70, 98,136, 32,194,178, 25,188, 70,203, 77,127,237,231,255,214,191,250, 95,254,167,229,229,130, 18, -111,237,236,221,189,243,220,193,179,131, 23, 63,241,252,234,244,164,172,203,122,189,186,121,247, 5, 61, 57, 25, 55,107, 11, 42, - 67, 89,159,157,215,106, 34,220,184,193, 4, 16, 90, 36, 37,141,208,205,134, 82, 15, 94,194, 13,133, 49,205,114,215, 93,158, 28, - 63,185,255,254,179,167,143, 23,243,125,177,234,101, 73,220, 35,120, 81, 15, 12,136,112,179,240, 64,104, 14, 69,116,135, 22, 28, -238,114, 98,100, 96, 50,171,146,154, 65, 11,168,197,177, 1, 8,112, 24, 71,102, 22,128,171,186,188, 66,156,205,230, 0,241,236, -236,236,115,159,122,237,237, 47,124,245,151,190,241, 11,159,124,237,117,163,100, 54,134,198,197,217,179,131,199, 15, 31, 61, 58, - 56, 56, 58,122,122,124,114,122,121,185, 92,175,199, 81,109, 44,223,254,218,219,223,249,173, 95,121,241,249,187,195, 88, 87,117, -248,224,131,247,247,238,222,174,225,167,239,157, 47,150,242,202,205,125,105,232, 11,194, 86,192, 17, 74, 13, 60,224, 26, 10, 78, - 36, 64,228, 96, 24, 24,220, 18,216, 82,134,181, 22, 3, 68,143, 48, 8, 17, 70, 4, 15, 16,100, 70,182, 90,129,154,103,206,221, - 61,101, 97, 68, 53, 39, 33, 12,244,107,254, 9, 51, 58,128, 32,153,155, 27, 50,147, 19,170, 71,206,185, 33, 98,137,185,105, 13, -114,146,201, 72, 5,209, 52,210,214, 72,176,109, 72, 82,221, 39, 85,142,184,153, 86, 99, 97,112, 36,226,214,137, 71, 32,140, 48, -240,233, 75,216, 16, 49, 64,197,134, 32, 98,100, 87,179, 80, 73, 66, 76,165, 42, 5, 83, 66,132, 4,224,109,230, 12, 96, 8,196, - 76,238,142,209, 54,120,237,156,142,204, 18,209, 98, 21, 20, 17,166,138,137,200,128, 16,145,153,137,204,162, 12, 35, 49, 79, 46, -157, 22,222,185,110, 94,129, 59, 16, 14,181,164,212,181,153, 27, 33, 90,173, 67, 93,155, 42, 33, 72,158, 17, 51, 37,193, 70, 0, - 48, 11, 50,175, 13, 84,147, 34, 44,156, 60,188, 75, 98, 6, 97, 78, 72, 22,211,228,146,178,160,123, 41,198,137,115, 98, 0,244, -170, 8, 78,204,208,134, 57, 56, 89,223, 48,192, 26,141,139,217,145,106, 45,204,156, 57, 33,161,153,114, 16,139, 0,128, 14, 21, - 40, 48,156, 89,212,204, 28,220,140,153,132, 57,166, 5, 0, 2,146,144, 24,155,155,182,106, 59, 16, 68,120, 41, 99, 47,210,117, - 61, 64,152, 7, 58, 88, 11,110, 16, 10,139,187,181, 31, 0,129, 48,160, 1, 22, 82, 74, 17, 24,224,196,130, 68,117,179,113, 83, - 78, 89,114, 66,226,113, 24,204,172,205, 0,173, 40, 97,112,226,118,214,236,114,215,208, 81,215,198, 62, 2,198,112, 39, 2, 15, -209, 90,131, 11, 79,241, 43,116, 15, 97, 54,173,136,129,170,156, 68,181,213,196, 82,139, 78, 85,173, 29, 65, 97, 17,130,214, 22, -139,169,218,241,177, 30,152, 40,188,101,196,195,213,154, 86,187,221,194, 38,156,192, 4, 13, 8, 98,104,191,112, 98, 53, 18, 48, - 50, 4,123, 40, 2,187, 7,128, 35, 49, 3, 64, 40, 32, 66,123,128,128,121,216, 48, 20, 66, 19,162, 89,158,189,241,234, 43,159, -249,116, 91,236, 66, 25,235,249,249,229,197,102, 56, 60,124,246,224,241,225,227,167, 71,167,151,151,106,216, 47,250,237,126,107, -123, 62,159,207,114,159, 59,102,234,152,152,168, 95,244,125,223,117,121,182,189,216,158,109,109,207,231, 91,125,223,247,179,185, - 16,115, 18,139, 40,163,166, 46, 53,102,225,122, 53,152,149,171,227,115, 45,101, 62, 75, 59,139,188,191,183,221, 37, 16, 70,141, - 9,125,128, 72, 16,166, 78, 28, 17,132, 16, 35, 42, 32, 39,104, 58, 70, 70,236, 97,121,117, 76,132, 93,151,114,191, 85,174,206, - 93,228,207,190,247,238, 55,127,246,103,182,111,220,204, 59,123, 33, 25,128,192,194,202,166,223,222, 25, 55, 3, 69,147,220,170, - 22,119,175, 24,228, 85, 49,139, 90,104, 81, 18, 36,194,178, 90,191,240,234,167,190,240,246,207,254,224, 47,254,239,249,246, 86, - 63,203,251,183,111, 62, 59,125,118,255,222,163, 47,191,181,181,152,111,237,222,188,245,244,224,209,214,238,246,242,236,100,231, -206, 75, 59, 55,111,214,161, 48, 1, 37,177,162, 0, 10,200,224,170,197, 28,136, 68,194, 43, 54,208,156,136, 16,124,244,238, 59, -199,135,135,175,125,234, 21, 27,223, 56,125,252,120, 24,150, 17,136,117,125,181,190, 42,102,215, 61,130, 9, 22,225,230, 99, 25, -138, 86, 51,219,154,207, 61, 28, 16,178, 99,107,140, 35, 11, 16, 16,178,215, 86, 24, 68,119, 28,107,205,243, 89,146,100,102, 24, - 80,212,190,240,153, 55,254,225,127,246, 59,111,126,254,243,221, 98, 39,136,107, 29,202,106,117,118,116,120,255,193,131,135, 7, - 79, 30, 29, 62,187, 88,174, 86,195,176, 90, 46, 33,240,237,207,124,250,215,126,246, 75,111,190,249,198,250,106,121,116,114,178, - 1,248,240,189,247, 46, 78, 47,142, 87,171,147, 39, 79,159,219,223,235,152, 93,109, 26,255,122, 0, 50,139, 96, 80, 68, 20,173, - 8,211,135, 19, 3,204,156, 25, 93, 1, 16,205,180,207,125,207,169,132, 11, 50, 49,183, 19, 75, 47, 93,209,106,181, 0, 17, 19, -186,169, 19,145,135, 85,167, 68, 41,139,153, 55, 17,176,135, 17, 73, 0, 36, 73,110, 86,218, 7,153, 48,209,245, 97,188,121, 7, - 33, 2,167,232,222, 20, 24, 7,132,112, 36,208, 58,108,134, 53, 32, 39, 73,125,215,183,205,143,153, 49,161, 3, 20, 45, 13,249, -141, 68, 24,206, 68,197, 10,179, 16, 32,162, 48,179,106,117, 12,225,222,221, 61, 52,218,232,223,221, 16,174,141,135, 17, 97, 22, - 78, 72, 24, 40,210, 77, 88,120, 0, 11,119, 45,192,200,148, 60, 90, 73, 10, 32,162,150, 66,140,204,226,110,204,200, 13,172, 8, -160, 94,219,142,248,250,141,213,106, 84, 65,128,238,109, 0,129, 34, 76,224, 36, 18, 13, 53,156,187,132,208,204,124, 94,134,174, -155, 55,140,160,176, 20, 51,215,104,114,146, 54,249, 71,114, 68, 28,203,200,212,161, 48,168,165,196, 8, 8, 44,101,179,105,164, - 7,143, 64, 11,119, 5,224,214,164,101, 36,157, 90, 2,109,156,239, 22,152, 88, 0,145, 8, 82,223,115, 99, 58, 22, 3, 38, 7, -135, 90, 1, 98, 54,159,215, 98, 21,198, 90, 70, 32,102, 65,102,177,234,109,129, 57, 73,158, 49, 28, 44, 44, 16,154, 19, 20,192, - 99, 61,234,122,179,190,181,187, 75,132, 30, 33, 34,166, 30, 97,225, 33,196,197,172,154,181,183, 91,120, 56, 26,139, 16,203,132, - 52,116, 7, 2, 83,165,196,146,179,169,130,105, 4,166,255,143,170, 55,255,181, 44,187,238,251,214,180,247, 57,119,120, 99, 77, - 93,213, 3, 41, 81,205,110,146,205,169, 57,180,154,106,142,110,139,164, 24,138,162, 69, 89,142,100, 39,113,130, 68, 63, 40,113, -126,136, 99, 56,131,127,200, 96,196,128,129, 0,137,101,196, 64,128, 32,137, 17, 40, 30,228,196,146,160, 72,150,100, 18,154, 76, - 89, 18, 69, 50,221,108,246, 80, 93,115,215,171,122, 85,111,126,247,222,179,247, 94,107,229,135,117, 94,219,249, 3,216,120,172, -123,239, 57,123,175,245,253,126, 62,194,166, 90, 90, 21, 32, 32, 8, 96,142, 48, 35, 33, 16,120, 81,100,130,200,158,162, 67,188, -199, 87, 6, 6,113, 5,215,112,144, 19, 64, 60,150, 60,105,107,128, 6,225,195, 66,196,120, 20,163, 39, 34, 51, 0, 48, 9,147, - 55,180,184,118,225,191,226,169, 5, 15, 14, 12,254,127, 6, 37, 15,115,208,217,219,124,236,149, 2,134,249,136, 1,162,241,131, -225, 1,137,179, 63, 33, 1, 26, 56,146,147,163,185, 2, 8,128, 3, 1, 33, 25, 0,155, 59,184,214,230, 96,170,234, 17,113,218, -216,218,184,244,200,197,247,188,243,209, 82,219,213,155,119,207,111,175,239, 29,157, 92,191,126,251,218,221,221,197, 98,121,253, -214,253,162,154, 88,166,253,164,159,116, 91,107,107,147,190, 35,132,212, 73, 79,185,235,186,181,249,188,159, 77,166,147,217,124, -190,158, 39,179,174,159, 32, 1,186,117,179,217,124,115,189, 13,101, 62,155, 13,165, 28, 29, 31,237,236, 45,239,236, 28,228,204, -147, 73,119,110,107, 99, 54,235,251,190, 19, 38,173, 48,118,161,221, 49, 22, 78,166,136, 0,144,209, 61, 9,205, 55,242,242,100, -191,235,174,180, 97, 69, 76,223,250,246,119, 46,109,109, 94,185,116, 94,102,107, 36,226,117, 5,210,183, 82,211,108,189, 86,211, -170,156,132, 69, 76,155,131, 33,101, 45,141,177, 1, 37, 91, 54,102, 38, 73, 72,238,230,110,237, 3, 31,123,254,213,151,190,125, -124,112,192, 34,169,235, 47, 63,114,229,149,239,189,114,249,210,249, 71, 46, 93, 56,220,123,184,191,187,243,240, 1,111,109,172, - 49,118, 96, 70, 96,121,214, 53, 29, 69,149, 64,236, 14, 90, 10,166, 14,221,180, 22,230,212, 79,167,135,251,123,111,126,255,165, -245,245,205,143,188,240, 35, 66,244,230,119,191,107,117,104,234, 93,194,197,241,233,235,119,239,171, 54, 51,180, 81,164,110,102, -190, 26,202,106, 85,106, 83,119, 95,174,150,165, 12,224, 16,177, 16, 10,193, 11, 35, 1, 10,162, 32, 16,132, 75,202, 76, 93, 50, -129,195,164,151,175,190,240,103,126,226, 75, 63,118,238,226, 21, 96, 2,135, 97,181, 60, 57,220,187,115,251,198,205,155,183,111, -222,189,119,127,119,239,164,172, 22,167,203,217,100, 58,221,220,254,204, 7,158,254,228,199,159,153,230,124,255,206,109,158, 77, -111,188,126,253,218, 91,119,183,182,230,187, 15,247, 54, 82,126,116,251, 28,162,183,102, 77, 1,200, 73, 17,153, 3, 51,224,228, -166,134, 70,213, 53, 51,194, 88,224, 96,112,112,215, 56,130, 50, 18,100,153,130, 83, 52, 65,221, 25, 65,173, 33, 66,234,178,187, - 87, 53,225,204, 8,213,155, 16, 1, 82,107,134, 68, 68, 20, 47, 18, 32, 4,128,161,212,216, 70,154, 89,150,164,230, 68, 28, 33, -196,240, 81, 26,152,106, 5, 7, 2, 28,161, 88, 0,109, 53,236,237,239, 29, 30, 29,112,146,205,249,166,155, 75, 74,238,200,204, - 81, 49, 9,112, 63,140,232, 93, 90, 13,203,145,133,194, 9, 76,155, 85, 36, 38, 22,213,192,103, 9, 50,153, 26, 17,158,105, 26, - 33, 64, 84,102, 74,132,113, 33, 7,112,140,105, 48, 56,146, 72, 22,109,154, 82, 98, 34, 53, 53, 87,116,118, 3, 11,126, 16, 66, -124,236,142,144, 57,153,123,109,202,177, 31, 52, 83,176, 78,146, 54, 37, 4, 68, 49, 11,213,137,251, 24,144,119,107, 26, 42,183, -148, 72, 68,128,130,201,131,230,202, 73, 24,140,145,171,170, 42, 48,177,122, 3, 71,194,108, 86,145,144,152,221,176, 14,133, 1, -251,174, 3,162,214,170,171, 34, 51,163,212,166,224,141, 57,185, 67,206, 25,208,203,170, 33, 69, 78, 9,205, 12, 16,115,151,193, -160,150, 98,110,209, 34,142, 89, 58, 98, 10,165,198, 89,118,159,227, 90, 15,166,196, 34,136,198, 60, 70, 7, 35,242,139,160,106, -230,206,137,155,214,140,216,245,189, 3,130,147,170,154, 42, 0, 40,128,131, 17, 65,135,169,212,230,222,194,147,110,106,140, 28, - 19,149,214,138, 72, 74, 41,171,186,106,213,166, 0,110,205, 67, 86,193, 72,230, 78,214,186,190, 3, 76,102, 86,107, 99, 9,130, -177,131, 57, 36,108,101,160,209,103, 74, 73, 80, 1, 93, 91, 22, 9, 46, 38,168, 50,138, 90,137, 39,116, 91, 46,101,210,135, 7, -201, 20,136, 0,192,153,153, 83, 22, 34,242,160, 29,163, 35, 51,170,198,198,213, 35, 69,237,128,168, 64, 50, 22,227,206,200, 96, - 48, 30,230,199,123,227,216,199, 27, 69, 77,241, 21, 36, 11, 22,218,232,228, 8,225, 0, 2,208,216, 42, 32, 12, 98,234, 56,236, - 30,255,231, 32, 60,110,234,205,252,244,116, 1, 20,232,127,153,206,230,231,206,111,191,251, 93,239,100,112, 55, 59, 56, 58, 60, - 58, 89,220,187,247,112,103,239,224,214,237,123,111,222,190, 89,171,185,225,108,222,111,172,205,215, 38,147,245,181, 89,223, 77, -250, 36, 34,210,245, 93, 63,233,167,179,233,180, 95,155,172,173,117,169,115, 67, 73,210,175,245,243,217,180, 22, 29, 86,171,213, -106,177, 88,158,222,184,125,191,212,150,132,214,215,103,211, 73,222, 88,155,110,206,103, 41, 11,130,213,230,102,102,230, 64,198, -136,134, 32,156,104, 29,142,142, 31,144,118, 94, 15,110,223,123,248,165,207,127, 33, 77, 59, 36, 68, 98, 36, 86,179,148, 19, 90, - 27,142, 23,148, 24,220,218,234, 20,243,148,130, 23, 39, 6, 78,173,168,153, 75, 2, 4, 67, 36,100,172,165,204,187,244,220, 11, -159,251,253,175,255,250,108,125,141, 37,159, 59,127,241,209,199, 79, 94,122,229,141,173,205,121, 34,124,230,195,207,189,117,235, -218,124,115, 3,115, 79,148,112,194,206,226,195,106,100,102,129, 89, 27,212, 93, 28,181,150,190,235,140,233,245, 87, 94, 62,218, -219,127,231,147,239,121,228,137, 71,221,218,226,225, 94, 18, 89,173, 86, 34, 80,181,253,157, 95,252,165,251,199, 5, 24, 24,209, -212, 44,236,192,128,165,148,128,219, 33, 97, 83,115, 71,139,111, 80,236, 19, 7, 11, 67,227,116, 50, 69, 8, 34, 7, 10,225,106, - 88, 54,211,231,223,255,204,159,251,210, 23, 62,252,236, 71,165,159,173, 86, 75, 47,165, 12,139,253, 7,247,110,223,185,113,253, -246,221,183,238, 61,120,112,112,176, 26,202,173,157,123,173,212, 47,191,240,195,159,255,196, 71, 30,187,114,190,154,183,201,228, -245,151, 95,185,252,196, 99,179, 11, 27,245,214,237,195,221,195,139,235,243, 89,238, 74,107, 49, 17, 74,137, 2, 22,237, 16,182, -123,119, 51, 12,244, 16,158, 25,101, 8,131, 10, 22, 0, 81, 66, 34,134, 36,100, 65,170,162, 32,164, 55,119,103,230, 56,152,114, -148, 47,145, 50, 71, 55, 44,222, 16,104, 6,103,222,106, 55,211, 40, 41, 81, 98, 34, 42,181,129, 3,139,140,218, 68,192,128, 4, -128, 99,107, 5, 36,157,253, 88,188, 53,109,173,170,106, 51, 45,221,144,211, 36,119,152,114, 23, 55, 89, 36, 64, 34, 53, 71, 4, - 34,104,106,204,201, 77,193,173, 89, 37,116,226,140,136,161,229,100, 17,143,205,109,151, 64,221,205,115,151,205,204,220,137, 37, - 26,144,102, 22, 56,171,118,134, 71,117, 87, 80, 22, 22,119,211, 22,169,161,200, 70,251, 40,111, 8,150, 60, 24,130, 0, 26, 34, -178, 48, 33, 40, 24, 9, 38, 75,181, 42,143, 16, 63,103, 10,175,111,212, 10, 13,194,139,102,102, 78, 41,139,131,131, 91,107, 45, -229,140,132, 34,226,106,173,169,176,152,183,166, 70,148,204,154, 65,115,243, 72,101, 0, 96,158,116,209,237, 10, 63, 42, 34,134, - 67,131,152,227,126, 70, 72,181,148,136, 0, 57,248, 80,171, 16, 83,234, 29,188, 14, 21,162,247, 14,216,170,177, 0,230, 4, 77, -233,172,211, 18,182, 6,109, 26,215, 35, 96, 6,128, 80,119, 4, 6, 44,242,223,102, 45, 9, 17,145,154,150,229,114, 58,235, 89, -216,205, 67,102, 2, 64,102,158, 8, 99,202,135, 0, 41,177, 54, 52,109, 68, 76, 73,136,176,172, 6,247,248, 52,205,107, 9,240, -178,170, 15,181, 50, 0,247,217, 28, 93,149,153,209, 59,109, 0,164,238, 38,140,241, 64,100, 2, 39,215, 58, 52,181, 68,202,210, - 25,170,170,215, 82, 90, 27, 8,129,132,137, 83,120, 12,137,169, 54, 32,114, 76, 98, 77, 41, 17, 34,145, 68, 7,148,132, 19,172, - 6, 1,183, 49,180,228,132, 49, 71,165,248,152, 71,131, 42, 96,192,213,129,128, 69, 80,163, 26, 23,141, 58, 2, 3,103, 24,169, -151,204, 60,190, 4,198,166,112, 32,218,163,135, 19,208, 71, 87, 83, 30, 55,214, 35, 63, 3,204,162,198, 6, 35,191,205, 70, 85, - 19, 56, 75, 8,233,124, 62,225, 59,247, 15,223,245,248,185, 85, 89,130, 49, 48,228,190,123,100,182,126,249,145,199, 19, 27, 82, - 50, 45,187, 15, 31,222,124,235,254,205, 59,119,223,184,113,247,198,254,254, 98, 40, 93,206,235,243,217,246,250,198,108,210, 79, -102,211,105,151,251,148,167,147, 73,223,247,156,178, 48,179,164,174,235,165,207, 89,186,205,173,237,173,237,109, 53,179,214, 86, -101, 53, 44,151, 15,247,135,221,189, 5,217,253, 60, 73, 91, 27,179,141,121, 63,153,246, 73, 72, 18, 7, 30,193,195,216,144,109, -117,116,240,245,223,254,103, 63,240,228,135,250,217,156, 38, 76,169, 71,132,214,162,115, 66,203,163, 19, 96, 6, 20, 74,226,173, - 17,130,214,130,238, 40,201,204,135,163, 83, 74,220,229, 9,130, 91,173,209,221,104,194, 63,244,222,103,190,251,167,127,120,114, -116, 36,210,167,190,123,199, 19,239,120,233,240,232,206,221, 7,143, 92, 60, 95,155, 78, 55,214, 94,250,147,111,127,225,167,159, -235, 38,221,176, 60,181,161, 98, 96, 78, 28,117,168, 14,204,140,128,214,207,215,134,197,241,247,254,229,183, 46, 62,242,216, 15, - 60,251,108,158,207,189, 14,203,147, 99,109,214,154,102,134,181,249,250,175,252,139,127,249,242,141, 59, 79, 60,122, 89, 91, 3, - 0,181, 8, 70, 26, 48, 13,173, 2, 1, 58,145,141,233,236, 17,160, 31,253,183, 56, 39, 32,168,105,202, 68,131, 35, 81, 45,117, - 50,153,254, 59, 95,251,234, 79,126,249,203,179,205,115,138,120,186, 60,174,167, 39,171,213,234,225,253,157,171, 55,110,236,236, - 61,188,243,214,206,201,106,208,170,222,252,177,173,237,159,122,241,147,159,253,212,115,171,197,201,193,254,225,236,202,229,235, - 55,175, 31,157,156, 76,143, 14, 95,126,233,181, 9,248,185,205,181,102, 94, 77,205,128, 24, 66, 81,231,128,103,186,220,198,146, - 1,200, 13, 83,162,177,222, 22,235, 20, 36, 68, 87, 12, 38, 52,154,123, 51,199,128, 82, 56,153,171, 3, 72, 98, 51, 96, 70,247, -132,160, 1,135, 97, 4,143,116,202,232,228,117, 68,212, 90, 57, 37, 32, 70,138,125,103,114, 80, 73, 9, 41,214,240, 99,169,154, - 4,181,170, 27,164,156,206, 26, 73, 88,213,152,243,108,186, 86, 84, 9,160,235,166,253,164, 75,194,181, 54, 38, 4, 4, 27, 61, -192,228,136,110,192,212, 1,249,217,108,215,132, 59,117, 55, 87,162,248,255,174, 72, 12,232,222, 60,136, 43,109, 85, 93, 66, 64, - 78,237,108,176,222, 52,196, 68, 8,132, 96, 40,125, 87,106, 97, 66, 48,114,180,224, 48, 39, 17,208,166,102,168, 74, 73, 96, 68, - 52,128,121,192,238, 25,208, 5,160,105, 64,146,209,212, 9,129, 25, 91, 36,135,145, 1, 34, 2,223,226, 23, 79, 28, 21, 76, 69, -196, 52,153,184,155,185,106, 81,114, 68,161,229,106,133,128, 34,108,160, 72,152,132, 1,104, 88, 45,152, 57,247,189, 54, 39, 39, -109,197, 77, 71,183, 50, 17,162,171, 91,159,250,170,165,148, 34, 57,141,239, 17,181,148,123,116, 55,173, 35, 6, 89,155, 1,144, - 99, 74,210,180, 98, 11,192, 74, 33, 78, 76,217,124, 64, 71, 39,231, 68,140,210,180,180, 86,193,137,153,132,196, 92,107, 45,137, -163, 31,131, 72,128,218,178, 12,155,155,235,134, 74, 32,238,160, 77, 17,144, 16, 76, 21,144,165, 35, 4, 82,115,111, 5,187,100, - 13,134, 85, 99, 42,204, 44, 34, 26,210,190,166,196,236, 85,173, 85,102, 36, 98, 52,239, 36,169,228, 86, 86,197, 42,131, 51,118, -136,228,234, 44, 40, 93,183, 42, 67, 27, 6, 83, 39, 70, 3,196,214, 16,201,220,203,176, 88,158,158,128,123,238,187,126, 50, 99, - 17,119, 2,132,148,196,180, 81, 44, 74, 1, 8,153,153,221, 91,109, 37,122, 75, 18,113,215,120, 88, 7, 11,142, 24,157, 8, 27, -156,165,134, 16,220,115,162,110, 58, 61, 61, 62, 30,213,214,228, 4,136,128, 76,232,128, 4, 20,135,165,209,160,231, 99, 60, 37, -242, 98, 54,154,204,221,205, 9,206, 22,179, 14, 24, 49,106,198,127,109,158, 63, 2,199,162,158,230,142,110, 70, 8,155, 91,179, -221,235, 59, 85, 55,227,246,106,224,110, 28,109,221,214, 16,176, 34,224,133, 11,231, 31,191,114,233, 83,207,125,144,136, 15,246, -247,175,222,216,185,181,115,255,214,221,157,131,163,163,123,187, 59, 32,105, 58,157,110,205, 55,182,214,214,182,182, 54,250,201, - 36, 51, 45, 23, 75,107, 85,178,116,125,215,119,211,233,116,214,245, 83, 78,156,115,154,244, 19, 66, 17,161,170, 54, 44, 23,251, - 71,195,131,131, 67,240,189,233,164,223,218,152,245,157,244, 93,234,251, 9, 19,229,137, 16,251,185,199,158, 56,127,241,146,100, -161,156, 57,119,109,185,212,102,148,104,185, 90, 58, 11,153,106, 83,150, 44, 41,155,186, 53, 39, 84, 2,209,161, 17,115, 55,153, -131, 89, 43,195,120,136, 19, 6,135,212,201,135, 63,254,252,111,252,211,127, 50,157,205, 69, 68, 68, 30,123,236,202,245,155,183, - 47,157,219, 60,217,125, 43,109,108,108, 94,122, 7,164,201,106, 88,182, 97, 9,200, 86, 6,140,189, 89, 4,135, 17, 8,224,214, -235,175, 30, 28, 60,248,193,167,158,218,218,190, 80, 85, 17, 90,169,173,156, 46, 93,161,149,161,149,225,143,190,127,247,229, 27, -111, 85,109, 26,247, 82,112, 83, 7,104,194,180, 28, 90,173,138, 12, 35,241, 97,180, 69,140,176,114,240, 51,150,133, 25, 10,161, - 99, 83, 16,241,231, 63,252,193,127,239,103,254,205, 31,126,238,249, 69,177, 6, 90, 22, 39,101,113,124,184,191,127,227,230,141, -155,119,238, 60,216, 63,120,112,176,127,116,116,122,120,124,122,229,194,249,143,124,224,125, 95,252,145,143, 93,188,112,254,254, -238,189,226,237,254,254,254,193,173, 91,230,118,116,114,186,251,205,239,172,175, 77,214,103, 83,240, 72, 99, 97,202,236,110,136, -146, 56,133, 19, 46,114,134, 77,125,116,189,128, 35, 98, 45,205,208, 0, 52,113,199, 66,224,130, 8, 54,198,120,199,237,130,161, - 7,113, 62, 60, 68, 4,232,166,156,196, 32,236,146,156, 18,155,131, 16,132,241,199,205, 41,231,127,229,249, 34, 6, 48, 66, 6, - 36, 51, 5,116, 53, 27, 83, 47,230,132,100, 50,186,137, 0,212,192, 17,129,133,166,147,105,160, 50, 88, 18,145, 52,141,169,246, - 8, 3, 38,234, 28, 60, 16, 2,148, 81,171,145, 48,152, 58,177,122, 13,163, 42, 18, 86,213,152, 25, 18, 32,101, 70,247,216, 51, -115,188,246, 70,139,165, 3,130,224,232, 63, 96, 34, 39,175,173, 34,160,153,113,156,230,163,214,175,205,205,152, 81,129, 16, 41, -244, 56,102,122,102,179,119, 85,109,174, 0,136,200, 66, 9,208,173,182,130,158, 68,192, 76,132,195,244,132, 0, 1,253, 54,135, - 86, 12, 25,213, 20,136,180, 42,128,147,176,187,235, 80, 25, 17, 44, 38,233,200, 12, 67, 93, 17, 8,177, 36, 97, 53,179, 82, 29, - 60, 64,239,168,200, 34,197,170, 8,245,221, 68,181,161, 97,234,186, 56,153,146, 36,103,141,135, 76,211,202, 46,177,144,100, 71, - 36, 72, 28,167, 74, 5,100,146,108,170, 8,149,128, 60,147,171,106,209, 56,110, 50, 82,136,144,170, 85, 66,202,153, 32,232, 5, - 72,136,176, 88,156,204,122, 94,155,225,233,210,154,133, 81,138, 16,216,188,169, 91, 78,236, 81, 33,102,204,211,110,117,122,210, -212, 37,101,194,228,126,198,126,211, 6, 72, 10, 72, 4,146,164,169,106, 45, 40,153, 58, 92, 21,117,163, 36, 41,130, 95,110, 38, -157,132,220, 10, 29, 82,223,107,105,102, 13, 17,147, 36, 53, 91, 44, 78, 79, 79,143, 48,212, 33,204,181, 22, 67, 35, 52, 18, 97, -201, 8,140,104, 35,198,192, 21,128,154,186,171, 33, 39, 66,149,145,199,131, 4, 6, 68,236, 64,174, 10,122, 70,246, 4, 32,119, - 16,234, 38,211,217,218,108,185, 56, 1,139,214,231,120,157, 3, 0,115,156, 76,251, 97,185, 10, 31,222,153, 24, 47,102,246,113, -101, 54, 24, 51, 1,163,173, 35,104, 44,128, 9, 92, 71, 86,198,248,114,128,241,209, 63,142,236, 45,234, 16,169,159,111, 77,243, -253,189,211,203, 23,230,165,104,208,150,163,137,132, 36,129, 0, 93, 13,195, 48, 0,130, 35, 17,167,238,253,239,125,250,131,239, -127,175,185,105,171, 71, 39,139,195,147,211,123,119,119,111,236,220,187,255,224,222, 75,175,191,118,124,114,178,182,177,177,181, -182,190,181, 54,235,187,110, 34,137, 19, 11, 83, 18,158,118, 29,167,110,210, 79,242,116, 50,153,204,186,233,108,109,125,190,185, -185,133, 76,230, 84,219,176, 92,174, 78,150, 85,219,130,232, 48, 9,118, 89, 54, 55,214, 62,242,161,247,156, 44, 38,146,166,221, - 36, 55,179, 90,171,132, 67, 61,117,218,138,187,179,144,123,171, 13, 71,134,172, 72, 89,174, 90,211,220,119,148, 72,135, 37,134, -235,119,236,255,145,214,250,212,211,207,252,241,239,125,227,250,141, 27, 79, 63,245, 30,230,110, 99, 99,107,247,254,189,171,111, - 94,223,219,219,127,249,234,181,233,252,252,198,229,119,191,235,201, 31,172,165, 94, 56,183, 49,212,226,214,180,106,151,179,164, -124,243,205,239,223,191,119,255,210,229, 43,207, 60,251, 28, 17,181,214, 82,159,235,114,185, 90,172, 0, 9, 81, 91, 93,221,122, -112,248,205,215,222, 64,130,205,110, 46,204,203,214, 98,223, 18,239,152,197, 80, 34, 26, 17, 79, 13, 51, 80,119, 85,165,209, 49, - 18,134, 44, 32, 22,107,122, 90,135,119, 60,114,241, 47,126,237,167,126,236,243, 95,152,174,175, 45,154,169,105, 25, 78, 78, 15, -246,110,223,186,126,237,230,157,157,221,221,135, 7,135,167,203,101,109,109,247,224,248,221,151, 47,253,236, 87,190,240,190,167, -127, 8,193, 23,104,247, 15,247,115,162,249,249,205, 55,111,221, 57, 61, 60, 93,155,229,243,143,156, 3, 6,107,163,215,136, 48, - 33, 96,236,232,154,106,228,152, 28, 40,212,121,116,198,148,245,136,159, 58, 54, 67,179, 6,212,197,227, 23, 28, 29, 61,186, 44, - 57,115,216, 67, 1,199,113, 3,128, 81,162,184,159,119, 19, 50, 7, 68, 74, 76,200, 90, 87,104,234,200, 68, 16, 40, 65, 84, 51, -198,145,209, 4,103, 64,175,178, 90,229,156, 21, 32,179, 40, 24, 33, 19,131,169, 1, 2, 81, 76,120, 29, 56, 77, 83, 98, 97, 83, -139,127,180, 51,163, 48, 34,119, 72, 44,194,140,162,174,102, 78, 66, 64,232, 21, 17,209,106, 65,192,232,181,114, 16,201, 1,153, -121, 40,133,131,188, 37, 12,224, 77, 91,202,177, 72,139, 70, 36, 0, 17, 11,130, 81,179,134, 72,156,168, 22, 5, 30,237,196,218, - 26,159,161,208, 88, 36,244,131,163, 86, 97, 20, 39, 5, 96, 62, 62,101, 2, 48, 36,228, 46, 51,104, 48, 44, 75,169,110, 74, 34, -110,202, 34,238,192,128, 78, 65, 8,193, 82, 10,115, 96,188, 44,160,222,142, 8,236, 72,172,218,172, 25,167, 28, 66,241,166,138, -102, 40,224,134,173, 57, 19, 26, 3, 49,101, 76,110,214,106, 97, 22,236, 71,200,226,200, 29, 81,211,152,188,145, 68, 93, 17,153, -200, 16,153,212,148,136,172, 89, 51,117, 51, 48,131,204,200,130,110, 13, 20, 16,128,188, 35, 6,199,218,204,205,195,104, 25, 16, - 91,102,116,160,214,154, 53,159,172,245,173,177,123, 13,114,148,171, 58, 0,139, 16,197,120,149, 49,161,150,106,214, 36,103, 54, - 80, 53, 63,219,205,226,184, 6, 13,235,179,145,116,153, 8, 92, 90,243, 90, 91, 39,236,193, 77, 99,116,112, 73, 25, 8, 3,254, -195, 57,187,181,234,192, 68, 40, 98,160, 69,109, 40,203, 82, 74, 98,234, 58,145,156, 23,203, 33,105,157,206,230, 41, 37, 0,170, -222,220,160,105, 75,196, 46,238,102,140,132, 44, 97,165, 22, 68, 1, 82, 71,244, 24, 46, 71,138, 43, 9, 33,154, 86,228, 4,140, - 8,184, 88,148, 97,177, 7, 30,171, 84, 5,181,240,226,170, 3, 19,174,134,234, 58,102,191, 40, 82,107,163,125, 53,234,193, 52, -142,235,201,193, 29,205,220,160,129, 69,161, 23, 0,132,185, 53,115, 15, 40, 82,188, 17, 66, 75,229, 8,108,106, 85,253,194,133, -139,215,239, 62,192,243, 27, 4, 58,194,186, 29,152, 71,204, 5,134,188,119, 76,172,187,169, 46, 87, 3,132, 22, 23, 96, 54,159, -205,215,230,143, 95,126,228, 57,249, 0, 0, 29,236,237, 95,189,181,243,224,225,238,119,190,119,245, 79,111,221, 44,165,178,240, -246,198,230,214,218,124,218, 79,215,167, 57, 73, 98,166,148,100, 58,153,244,253,100,109, 99,109,109,190,206, 93, 55,159,173,167, -212,245,155,219,156,216,155,173, 86,131,106, 89,213,246,242,171, 55,239,237,220,234, 39,243,227, 97,241,216, 59,223,113,110,125, -163,159,174,201,180,211, 85,117,111,117,112, 64,178,218,188, 14, 60,153, 17, 50,161,182,218,106,107,125,159, 64,213,155, 2, 80, -216,107, 80, 4, 1, 93,141,146, 32,167, 47,253,244,191,245, 11,255,221,127,125,111, 99,231,145, 43,143,106,171,231,207, 95,250, -214,159,252,201, 75,111, 92,253,192,251,159,249,185,255,248, 63,185,112,249,202,239,255,243,223,253,129,119,189, 11,193, 2, 58, - 56,155,111,221,191,250,242,157,187,119, 78,134,250,161,231, 63, 51,159,166, 86,205,234, 42,247, 25,137,202,114,112, 85,153, 76, - 97,113,122,120,120,240,141,151, 94, 62, 90,149, 73,215,169,107,107, 45,238, 85, 90,171,170,166, 68,171, 97,137, 20, 40, 84, 55, -213,224, 2, 78, 82,118, 38, 45,213,220,208, 17, 8, 74, 27, 78, 22,237,171, 47,126,238,175,252, 7, 63,119,225,242,163,142, 84, -170,170,182,197,233,254,253,219,183, 95,187,250,250,206,253, 7, 15, 15,142,246,142,142,150,139,229,222,193,201, 99, 23,207,253, -165,207,127,250,199, 62,247,105, 68,223,127,176,211,111,159,123,235,230,237, 55,174, 94,155,206,103, 59, 59,187,182, 42,235,179, -126,109,218,185,186, 91,188,200, 89, 36,129,162,186,183, 22, 56,147,176,115,140,241, 85, 28, 7, 49, 35,202,159, 25,205, 49, 33, - 49,163, 42,184,215,156,187,166,214,134, 65,152, 35,159,138,170,204, 12,230,234,144,187, 68,228,165,150,174, 75, 76,194,136,181, - 52, 64, 87,111, 58,152, 48,169,121,202, 25,204,134,170,194,112,118,142,182,196,156,114, 82,179, 97, 49, 16,115, 68, 1,155, 91, -240, 99,181, 86, 31,139, 22,134, 0,146, 18,104, 19, 22, 0, 0, 50,116,103,230,162, 3,199,190,146,196, 16,137, 18,160,187, 26, - 18, 18, 50, 57, 22,112,116, 39,230, 90, 86, 41,247,241, 98,117, 6, 68,170,173,138,196,157,197,209, 28, 29, 82,226, 81,113, 31, -234,231,174,115, 48,173, 5,137, 25,129,132,155, 90, 74, 28,100, 74, 68, 7,240, 26, 33,200,152,187,135,210, 90, 88, 56,181, 86, -188, 2, 36, 32,100, 38,116,115,112,103, 78, 22,156, 94, 68, 51, 55, 53, 22, 1, 98, 74, 2,138, 72, 56, 22, 1, 1, 91,211, 46, -165,230,102,174,196,236,166, 90,149, 4,136,201,213, 77, 27, 50, 3, 50,186, 2,139, 53, 99, 66, 55, 53,117, 74,146, 18,155,123, - 78, 73, 91, 99,161, 86, 29,221,193, 9, 28,180,173, 56,245,110,170,171, 37, 10,251,184,126,137,153, 27,155,154, 26, 96,116, 47, - 99,118, 26, 57,109, 38, 64,114, 87, 0, 39, 36,224, 88, 19, 32, 17,147, 66,133,198, 64, 34,194, 66, 60,162,215,218,233,178,168, -185,203,124, 40,238, 32, 85,141, 28, 19,179,145,180, 97, 32, 38,146,100,181, 13,117, 72,146,136,201,195, 65, 1,166,173, 57,144, -129, 50, 37, 18, 30, 86, 3, 35,246, 93,178,248,231,118, 32,198,196,164, 0,166, 99,147, 78,139, 57, 52,182, 72,126, 65,171, 74, - 96,147, 46, 87,179, 90, 86,246,118, 69, 30, 97, 24,134, 44, 66,203, 1,117,112, 22, 85,245, 86,193,128, 73, 80,220, 11, 84,109, - 80,129,187, 30, 28,117, 85, 41,172,118,191,249,139,255,171, 35,170,106,102,118,115, 39, 39, 71, 71, 64, 16, 34,118,104,128, 24, - 66, 91, 15, 64,157,123,124,150,164, 70,153, 90, 5,146, 24, 90, 33,132,148,114, 76,215,140,190,108, 98, 4,247,192,208,131,133, -107,194, 29,209,212,152, 24,172,153,219,217,151, 35, 16,123, 62, 26, 10,198,136, 78,180, 11, 65, 82,186,241,230,205,203,143, 94, -202, 57,169, 57,162,132, 22, 18, 65, 21,128,125,164,211, 1, 80, 48,210, 16,137, 48,161,152,171,199, 43, 23, 98,178,136,152, 19, -231,220,117,169, 35,161,186, 90, 92,191,121,247,234,157,183,190,243,242,107, 55,118,238,149,161,138,228,105,238,230,243,217, 36, -119,211,105, 38,196, 73,215,173, 79,167,147, 73, 55,153,205, 38,179,181,249,108,109, 58, 91,239,215,215, 36, 37,109,102,205,172, - 44,142,142, 15, 79, 22,167,181,180,220,205,114,223, 9,138, 48,206,231, 27,231,206, 95,220,220,156,243,100,221,173,229, 44,152, -178, 59,154,105,107,134, 4, 9, 49,158, 44,196,130,204,174, 10,232, 78, 89, 24, 0, 73,151,203,254,226,185,223,254,199,255,232, -219,127,242,205,167,158,124,170,159, 76, 63,241, 99, 95,157,110,204, 22,135,139,189, 7,251, 77,235, 31,252,243,223,126,226,137, -199, 63,250,225,247, 45,150, 38, 93, 71,166,191,251,245, 95,255,198,215,127,235, 43, 63,249, 51, 31,251,228,103,107, 25,180, 22, - 64,146,156, 80,171,154,105, 49,201,108,165,157,236, 92,255,235,127,227,191,248,250,119, 95, 91,159,247,171, 85,185,176,189, 61, - 95, 95,107,181, 58,192,233,201,105, 25,134,156,242,155,119,110, 85,211,241, 74, 6,160,166,147,156,215,231,211, 81,111,120,118, -244,157,246,179,191,244,181,175,124,245,199,191,234,146,145, 64,213,150,203,197,225,222,238,141,171,175,191,121,253,198,221,189, -253,227,147,195,131,163,197,241,241,241,201,201,242,241, 11,231,127,254,167,127,226,233,103,158,122,240,224,126, 63,159, 93,191, -118,237,230,181,155,156,165,169, 29,220,223,223, 92,155,117, 57,169, 41, 34,100, 74,205,106,184,208,152, 50, 33, 17, 66, 51, 85, - 48, 4,113,104, 24, 75,124,164, 62,231,210, 42, 40,168, 67,206,201, 92, 1, 33, 97, 42,173, 56, 2, 35, 97,132,237, 28,136,168, -153,117,185, 35,166, 40, 44, 73,102, 20,114, 3,166, 60,142,160,162,204,161,102,106,221, 36,183,218, 28, 12,153, 92, 99, 9, 9, - 0,214,212, 18, 39, 34,140,158,140, 48,169,105, 45, 45,165,132,128, 44,212,212, 36, 10,177,222,152,115,220, 90, 57,119,110,134, -236, 54,168, 67,132, 59, 33,102, 50, 36, 60, 18,143,220, 89,216, 92,181, 90,144,100,204,180,149,128,185, 75, 84,140, 0, 92,205, -152,200,221,136, 81,213,187, 46,155,121,211, 26, 0, 22, 87,151,204, 86,199, 61,153,186, 11,179,153,137,100, 67, 43,171, 33, 98, - 45, 34,130, 76,160,142, 72,214, 10,178, 8,161,157,153,118,106, 81, 97,228, 8,137,107, 35, 0, 3,226, 36, 86, 20,120,172, 53, -138,144, 3,122, 53,236, 16,116,124, 78,128,162,129,169, 90,213, 38,241,147, 52,148,212,153,183,248, 7,180, 86,136, 82, 68, 30, -213, 52,231,220,106,139,217,138, 1, 36, 73,109, 40,193,181, 66, 78,241, 49,213, 86,115, 18, 97, 81, 83,213, 22, 57, 14,100, 82, - 53, 68,116, 51, 71,167, 32,156, 19, 35,176,121,209,214,132, 5, 83,182,166,110, 70,204, 66,169, 89,117,111, 48,178,197,209,221, - 76,109,212,113,184, 73, 74, 93,146,102,229,193,238, 81, 78,105,190, 62, 51, 53, 87,211,214, 80,178, 1, 32,112, 4,147, 84,213, - 21, 56, 37,247, 22,139, 68,173, 42,194,165,148, 96, 53, 51,147, 33,130, 97,196, 76,136, 16,153, 25, 83,105, 37,246, 67, 41, 39, -109, 86, 90,109, 85,153, 17, 25,153, 5, 1, 68,146, 1,212,161,104, 85, 39, 99,115,103, 57, 61, 62, 57, 56,220,213,106,228,202, -146,114,151, 56,117, 93,215,207,230, 51,160,212, 90,107,173,153,214,176,212,129, 53, 78, 9, 40,161,213,227,211, 83, 9,162,101, - 98,113, 4, 96,136,156, 0, 66,112, 87,206,166,232,128, 99, 67,214, 61, 86, 85,128,238,220,242,108,195, 79, 86,136, 98,104,241, - 56, 31, 47,189,222, 0, 4, 8,204,192, 85, 67, 68, 22,183,182,248, 56, 28,140, 16,205,234,219, 34, 81, 24, 3,244, 4,110,206, - 0, 78, 35, 33, 44,226,164, 14, 77,219,214,230,252,240,116,121, 33, 39,112, 5, 68, 69, 96, 15,222,182, 65, 88, 59, 28,145,129, -129,131,157,160,222,176,161,140,243, 36, 36, 24, 95, 29,181, 89,105,203, 19, 28, 64, 85, 36, 63,241,206, 31,120,242,201,167,254, -204, 11, 47, 44,151, 39,187, 15, 30,220,218,185,127,237,246,206,193,193,225,238,238,222, 91,247, 7, 0,156, 78,251,249,116,182, - 49,155,174,207,103, 93,218,237,167,253,164,155, 76, 38,211,201,124,190,182,177, 53,153,206,211,108,118,121,253, 28,103,138, 48, -130,170,214,218,134,178, 58, 62, 60,122,120,184,159,136, 82,238,103,107,179,237,243, 23,250,217,250,250,214, 22,115,102, 49, 34, -106, 67, 73,185, 39, 17, 52, 67, 22, 48, 51, 67,233, 19,130,107, 41,216,117,122,186,124,238, 83,159,125,229,165,151,174, 95,123, -243, 51, 95,252, 10, 49,237,223,123,240,173,111,126,235,209,199, 30, 61, 93, 13,247,118,238,105, 93,125,236,249,231,147, 14, 90, -234, 31,254,193,215,255,240, 15,255,197, 39, 63,251,197, 15, 61,251,177,197,209, 33, 16, 70,116, 15, 84, 77,213, 29, 73,196, 12, -185,156,252,223,255,215, 63,248,227, 55,110,204, 38,147,253,195,147,147,211,147, 39,174, 92,209, 86,205, 29,204, 91,107,128,206, -153, 89,164,174,148, 9,213,177,169,102,225,217,100, 50,212,154,122,139,241,191, 0, 0, 32, 0, 73, 68, 65, 84, 83,239,174,165, -212, 62,167, 23, 62,250,236,207,126,237,167, 62,240,161,103, 7,117,115, 31, 86,203,131,135,187, 15,238,223,185,115,231,206,141, -219,119,119,118,119,143, 78, 22,123,199, 7,123, 15,143, 47,110,172,125,237, 43, 95,252,209, 79, 62, 55,153, 79, 87,106, 39,195, -242,224,232,144,147,116,235,179,183,174,223,157,247,249,202,133, 13,150,168,105, 48, 1, 54, 48, 74, 29,104,224,193, 71,103, 21, -144,147, 7,221, 19,153, 9,153, 16,176,214, 10, 8,196,161, 53, 5, 70, 1,211, 10,141, 3, 38, 14,224, 14,147,148, 28, 80,205, -123,201,136, 8,142, 93,159, 91,107,106, 78,234, 68,161,232, 4, 68,114,213,234,134,230,200, 88,107, 67, 64, 55, 48,247,240, 64, -185,107,104,139,221, 13,124,124, 22,150,166,222,140,153,144, 66,130,234, 8, 10, 40,170, 42,210, 57, 56, 10, 49, 8,184, 7, 7, - 76, 35, 96,204,227,148, 50,100, 64, 0, 46, 40, 10,170,205, 17,145,162,137,175, 78, 44, 41,199,240,210, 70,167, 93,120,137,220, -193,192,208,145,176,214,130, 0,174, 6, 72,204, 68,146,212, 26, 50,185, 67, 12, 43, 34,174,101,214, 76, 35,242,200, 20, 56,162, -218, 40, 74,190, 36, 97, 98, 50,136,133, 0,231,142, 1,220, 85, 41,101, 12,151,133,153,213, 6,132,241,182, 32,137,176, 22, 96, - 66, 43, 54,154, 60, 34, 75,202, 4, 97,109,115, 71,116,238,216,180,142,139, 27,115, 34,118,247,160, 50, 0,146,154, 98,228,249, - 72, 0, 76, 91,117,215,113,101, 13, 0,236, 8, 36, 30,224,176, 2, 4, 68,201,221,192, 60,224, 97,170,230, 22,116,172,145,172, - 3,129,158, 39, 22, 98, 71, 4, 17,116, 2,104,234,133, 16, 29, 82,107, 85,173, 16, 1, 5, 12, 85, 13,201,153,199, 37,170,106, - 33, 29,214,182,102, 4,160, 35,202,132, 1, 33, 81, 38,164,170,101,252,212,100,236,241, 68, 73,141,216, 75,109,173, 20,201, 93, -160,104, 69,216,208,173, 69,160, 21, 24,201,208, 68, 24,212,171,155,170, 82,232, 41, 18, 18,160,187, 11,146,129,215,214, 70,216, - 25,114,171,166,238,160, 53,231,180,182,182, 57, 12, 75,109, 67,162,113,101,201,132,197, 12,181, 32,160,176, 24,146, 89, 3,183, - 88, 42, 16,141,221, 85, 65, 70,108, 22, 3,243,209, 76, 10, 13,244,108,171, 22, 86, 97, 26, 11,157, 68, 28, 50, 63,179,234,142, -203,227, 83, 68,110,222, 24, 16,200,131, 75,224, 4,132,226,224, 96,228,214,136,200,180, 97,236, 77,105, 12,235, 98,244,173,131, - 80,133, 48,210,175,144,220, 1, 41,131,215,179,225,126,244, 15,130,255,226,221,116,118,176,187, 15, 91,219, 68, 8,152,196,213, -225, 12,255,129,233, 44,208,102, 48, 82,159,244,140,221, 64,113, 77,139,215,210,153, 81,203, 1,128, 68,204,218,201,233,242, 20, - 86,196,104, 38, 23,206, 93,186,124,233,137,231,158, 69,132,225,244,116,117,120,124,178,179,187,247,242, 43,175,124,239,234,173, -171, 55,110, 0,203,133,115,155,143,158,191, 52,155,118,243,126, 34,249,158,112,238, 3,149,214, 79,214, 55,183, 38,179,141, 60, -233,147,116,146, 83,234, 36,119,201,212,221,188,169, 45, 78,151, 39,199,215,154, 42, 17, 11,243,185,139, 23, 47, 92,188,188,126, -110,179,239, 58, 16,104,139,193, 1,234, 80, 60, 36,246,165, 98,206, 36,162,110, 93,234, 62,253,226,231,167, 91,219, 23, 46, 63, -114,188,127,112,227,218,213,255,231,215,127,121,123,125,253,116,181,120,235,173,183,160, 13,159,248,212,103,182,103,253, 31,252, -238,239,189,227, 7,223,245, 31,254,149,255,172,155, 77, 26,146, 14, 39, 44, 9, 39, 93,215, 73, 43,197,128, 16,204,134,147,181, -245,173, 95,251,213,223,248,123,255,240,159, 54,231, 46,165,213,170, 72,151,193,124,181, 42,169, 75, 85,171,106, 99, 64, 70,122, -199,229,203,175,188,121,141, 0, 28, 44, 11,111,172, 77,205,218,149,243, 23,111,220,186,181,181,189,245,254, 39,159,250,241, 63, -251,153,103,159,253,232,198,246,249,211,229,178,169,158,158,156, 60,184,119,103,111,247,254,237,187,247,110,220,185,181,127,112, -124,188, 92,221,122,235,238,131,135,123,127,241,139, 47,254,133,159,248,242,230,230,218,209,225, 94,230,245,195,197,225, 27, 87, -223,156, 77, 38,119,238,237, 14,135, 39,231,214,231,157, 8,114,118,119, 98, 98, 65, 87, 7,115, 38, 4,150, 86, 74,100,106,137, -192, 26, 10,241, 96,141,129, 34,234,225,238, 72, 28,224,163, 40, 2, 53,109,128,156, 9, 85,181,180,138,196,147, 46, 7, 32, 32, - 84, 68,136, 40,157, 52,211,230, 70, 14,230, 77, 9, 18, 39,117, 48, 71,118,144, 16, 62, 32,161, 91,173, 3,177, 16, 51, 2,186, - 89,151, 83,171, 88,181,141,152, 25, 36,179,168,141, 40, 16, 15,181,246,210,145, 36,139, 9,162,161, 27,142,110, 85, 30,105,230, - 74,128, 18, 66,154, 56,243,184,129,163,121,150, 28, 56, 93, 70,100,196,218,204,201, 89, 82, 60, 79,155, 22, 83,175,171,146,166, -125, 0, 59,205,148, 19, 3,140,214, 58,107,149,115,206, 93,174,181,130,105,100,189,135,213,138, 89, 8, 64,221, 9, 0, 17, 73, -216, 76,205, 3, 88,233,238,161,230, 0,102,106, 85, 35,199,207,156,145,208,208,208,145,186,190,149, 26, 91,229, 32,218, 56,128, -153,194,219,245,245,216,174, 26, 32, 19,178,181,210, 2,157, 6, 68, 72,212,165, 60,156,174,154, 55, 8, 47,145, 96,173,134, 26, - 60, 63, 7,183, 62,167,218, 84, 56, 57, 90,213, 33,246, 14,105, 50, 37,240, 50, 20, 24, 7,176,128, 34,214,106, 60,245,180, 86, - 18, 38,193,214, 20,153, 18,147,162, 32, 48,160,141,232,140,179,185,176,154, 74, 55, 65, 34,107,197, 20,192,226,212,103, 41, 51, - 52, 0,176,170,154,133,153,129,144, 99,202,207,146,247, 15, 86,230, 46,140,156, 97, 48,215,218,186,190,119,133,230,170,214,136, -208,145,209, 81,181, 16, 64,238,115, 43,173,148,194,130, 72,232,200,129,149, 87, 83,108,196,146, 40,187,185,129,129,153,165,156, -213,131,165,140,225, 17, 7, 8, 40,144, 34, 83,169, 21,207,230, 32, 73,242, 74, 85, 75, 33,135,196,201,184,204,102,179,196,188, - 26, 18,185, 49, 11, 39, 81, 85,172, 13, 69,130,122, 31, 17,222,218, 74, 40,121,153,141,144,145, 18,254,214, 63,250,223, 81, 3, - 37,143,142, 72, 97,233, 36, 32, 16, 68, 84,173,196,130,196, 62,194,152, 76,213, 1,128,199,118,250,216,117,197,177,240,228,110, - 30,199, 40, 7,116, 71,183,134,163, 50,209,112,212, 33, 34, 88,177,177, 86, 30, 75,218, 51,167, 40,134,183, 80, 66,140, 0, 17, - 4, 8,138, 25, 56,162,129,195,157,187,187,143, 95,185,140,228, 72, 35,182, 31,198, 83,191, 3, 56, 50,187, 2,131, 7, 7, 33, -226, 94, 28,190,196,208, 13,135, 77,155,198, 20, 4, 17,131,185, 71,238,201, 57, 78,123,132,104,224, 50, 66, 78, 65,132,226, 70, -127,227,250,237,215,174,223,122,253,234,213,215,110,236,172,134,210,117,253,198,218,250,230,124, 50,157, 79,103,169, 67,132,220, -165,217,108,125,115,243,220,124, 99, 61,119, 29, 26, 32, 72,158,244,192,136, 33,218, 32, 81,109,106,208,180,173, 78,142,202, 48, - 8,229,205,139,231,182, 46, 93,186,116,241, 98,234, 58, 45, 53, 77, 38,222, 84, 85,223, 22, 66,155, 99,191,190,166,165,252,242, - 63,248, 63,167,235,219,151, 46, 93,248,111,255,230,127,243, 96,239, 97,173, 69,107,121,238, 67,207,188,227,209,119, 60,253,228, -147,239,251,224,199, 55,183, 55, 92,146,183,149,244, 19, 91, 13, 36, 93, 63,159,212, 58,232, 80,129, 56,165, 68, 90,255,248,119, -191,241,215,255,214,223,218,217, 63, 74,204, 71, 39, 71,203, 85, 57,183,185,121, 97,107,163,168,166,156,202,106,213,180, 17,139, -160,212, 90,110,188,181,147, 50, 45,150,101, 99,109,106,102, 63,255,239,255,220, 95,253, 79,255,203,255,233, 23,126,225,246,245, -239,127,233,197, 79, 95,184,116,217, 37, 32,124,245,112,111,239,240,240,225,209,225,209, 27,215,222,188,113,251,222,201,106,113, -178, 88, 93,187,125,103,150,250,191,246,151,255,252,103, 62,241,252,225,241, 97, 3, 95,213,114,237,213, 87,239,237,237,247,125, -191,251,214,206, 52,229,249,218,148,137, 8, 57,165,148, 88, 64,216, 93,107, 53,109,205,220, 0,136, 4,201,177, 13, 13,133,221, - 77, 18,187,122,164, 9,205, 28, 49, 34, 35,132,100, 90, 21,153,209, 44,119, 73,213, 90, 85,102, 96, 22, 98, 65, 36, 73,125,179, - 6, 54,158, 39, 28, 16, 5,234,170,177, 48, 51, 69, 82, 62, 5,108, 46, 78, 0, 6,200, 4,224, 72, 96,106, 6,200, 8,165, 21, - 10,218, 96,180,100, 71,220,134,155, 1, 48,103,166,166,205,220, 25, 36,229,206, 32,138,154, 73, 0, 86,101, 32,162,156, 39, 10, -141, 16,204,193,170, 49,147, 33,196, 57,212, 44, 74,211,232,224,230, 42,148, 56,145, 27, 48, 51,168, 22,109,163,212, 9,128,156, - 33, 33, 51,214,170, 76,140,230,128,209,139,134,166, 53,165,142, 56, 46, 57, 70,200, 66, 92,181,164,148, 84, 13, 97, 28,122,187, -197,129, 14,212, 42,115, 30,203, 64,200,136, 14,174, 36,217, 17, 25, 89,181, 34, 81,213,198, 64,196,236, 26,210,133, 56, 50, 33, -145,152, 85,119,167,196,164,212, 90, 5, 48,109, 78, 76,136, 40,146, 1,176,105, 49, 68, 10,142,184, 26,198,250, 97,116, 41,123, -109, 6, 4,125,215, 33, 51,152,155,150, 88, 43, 70,126,159, 49,155,215,106, 85,136, 3, 20, 21, 19, 39, 18,102,150,161, 12, 96, - 72, 76,136, 4,110,102,166,224,224,144,187,132,196,146,179,154, 81, 56, 78,227, 73, 16,128,179, 48,172, 3,149, 58,140,148, 45, - 0,199, 81,148,201,140,203,197,240,224,193,131, 43,151,182,103,235,179,166,238,148, 90,195, 54, 12, 77,149, 40, 26, 81,132,228, -173, 24, 49, 16,208,170, 12,113, 16, 80,211, 82,180,147,132,194,109, 85, 57, 49, 16, 73, 74,230, 22, 93, 13, 12,155, 28, 82, 45, -131,153,137, 72, 98, 49,194, 86,139,154,215,170, 1,110, 19, 18, 98, 82,117,176, 2,156, 90, 43, 76, 76,136, 0,212,172, 90,169, -218,154,121, 35, 76,224,158,102, 19, 68, 9, 46,152, 19, 15,171,149,151,210,101,246, 36,194,201, 12,142,142,143, 5,226,210,139, -238, 62,246, 32, 72, 40,104, 51, 14, 72,156, 67, 92, 26, 45, 56, 64,231, 24,158,140, 73,209, 8,207,135,227, 20,198, 12,175,171, -159, 81, 92, 98,220,130, 72, 96, 28, 75, 8, 31, 95,174, 52, 86, 63,224,236,151,130,255,154,150,247,140, 91,230,103, 76,122, 8, - 22, 41,225,172, 79,123, 39,203, 75,155,107,234, 68,140,102, 21,130,142, 29,215, 13,139,253, 84,132,123, 70, 72, 69,224,115,240, -172,124, 11, 35, 53, 14,192,195,166, 23,147,121, 25,239,119,174,227, 92,151,221,213,155,123,107,182, 92, 41, 34,156,191,116,241, -241,119, 60,254,133,207,125,250,116, 88,220,187,123,239,234,181, 91, 55,222,186,127,239,222,189,187,247,238,153, 67,215, 79, 55, -231,179,205,173,197,225,241,193,185,147,205,148, 38,136,140, 72, 57,167,110, 50,235, 39,211,148, 59,201, 89,152,145,121, 50,233, - 39,147,206, 1,218, 80, 86,171,229,245,239,125,239,205,239,189,220,165,126,227,252,185,141,237,237, 78,120,190,182, 62,217, 88, - 67,119,107, 14,224,175,253,191, 47,253,218, 47,255,147, 95,254,181, 95,249, 11,127,254,103,103,125,102, 65,119, 72,146,250,156, - 24,253,254,253,187,239,126,250,153,199, 30,127,108,255,224,225, 72,141, 82,227,110, 2,224,101,185, 52, 85,100, 33,145,148,228, -205,215, 94,249, 59,127,255,239, 31, 45,135, 89,151, 22,203,213,114, 53,116,185,203,185,171,181, 57,122, 83, 87,181,120,116,161, -224,241,201, 98,213,170, 2,159,219,220,120,228,194, 57, 97,126,228,210,133,110,123,246, 31,253,181,191,250, 43,255,219,255,178, -182,190,161, 78,229,224,240,224, 96,239,193,222,195,131,195,195,163,197,201,181, 27,119,238,237,239,181,170, 59,187, 15,143,142, - 15,191,252,194, 39,254,221,159,252,242,250,250,116,247,225,253,188, 54,191,246,242, 75,107,219,155, 23,223,249,248,155,119,238, - 30,237,238, 95,218,222,144, 94,220,162, 10,203,136,136, 66, 6,232,192, 22, 40,110,197, 68,216,212,205, 28, 37,152, 30, 52,246, -175,193, 28,199,149,125, 92,203,173, 58, 68, 75,159, 88,155, 3,250,116,218,199,210, 39,172,108,234, 45,101,118,247, 50, 52,140, -163,119,179,156, 5, 9,195, 59, 71,132,106,200,228, 76, 76, 76,224,168,214,162,162, 41,210, 51, 98, 45,171, 94,164,152, 67, 76, - 23, 61,146, 18,136, 72,146,208,155, 85,173, 8,200,146, 98,221,202, 68, 0, 1,186,178,148,251,248, 37,162, 97,244, 67, 40,129, -169, 18, 37, 53, 51, 51, 80,144, 94,226,105,149,164, 35, 64, 83, 67,162,214,154,170,137,176, 7,103,214, 77, 58, 50,115,109, 22, -220, 0, 36, 34, 2, 7, 55,107, 57,231, 51, 26, 16, 18, 49,130, 27, 40, 33,181,214,224,172,175,128, 8,192, 36,145, 86,198, 56, -183, 49,113,236,207,200,157,130,149,214,188, 49,139, 1,164, 80,184, 0, 32,135,234, 18,152,132, 24,181, 22,143, 31,111, 51, 27, - 75,235, 68,108, 72,152, 82, 87, 91, 9,224, 54, 19,187,153,199, 1,255,109,193,125,160,208, 18, 49,227,104,223,140,249,155,141, - 42, 54,201,161,100,242, 4, 20, 55, 6, 34, 66, 65, 65, 86,183, 86, 75, 76,219,209, 99, 83,129, 72,152, 69, 90,109,170, 74,128, -173, 41,186,183, 90, 85, 27,117,226, 26, 99, 94,119, 36, 85, 19,242, 46,245,170,205, 65,221,156,144,141,213,155,213, 65, 79,150, - 53, 75,146,212,155, 34, 16,187,130,171, 34,209, 36,137,154, 87, 53,134, 38, 44, 68,160,106,205, 90, 98, 30,170,170, 25,177,228, -204,181, 26, 65, 3, 33,117, 19, 96, 53,139, 52,151,187, 91, 45,200,137,132,130,238, 25,208, 8,112,137,225, 3, 19,130, 27, 35, - 59,154, 59, 50, 99, 3, 38,240, 46,247,173, 53, 0, 26,139,120, 29, 34,145, 14,232,136,210,119,128,196,132, 70,104, 13, 93,107, - 74,130, 76, 90,155, 15,197,217, 88, 36, 5,130,135,136,226,141, 58,206, 97,194,255,130, 4,166,129,164, 80, 3, 24,225,233, 49, - 93, 33,143, 85, 43,208,104, 45,141, 53,202,219, 61, 56, 64,115,115,112,142, 15,193, 60, 94, 0,177,186,137,174, 99, 72,209,213, -235,219, 61, 41,124,219, 75, 69,177, 7,141,247,205, 8, 42, 3, 2,100,154,207,231,119, 31,158, 92,220,218,208, 90, 73,198, 63, -199,209, 9,221,205, 1, 10, 1, 3,158,233,156, 70,240,231, 56,150,123, 59,129, 57, 70,191,208, 1, 89, 77, 3,135,141, 68,238, - 22, 29,244, 51, 3, 20,158, 93, 29, 16, 1,106, 25, 74, 51,192, 37,170,157, 59,119,225,145, 43,143,125,174,239,202,176, 60, 61, - 89,188,241,250, 27,111,222,185,247,198,155,215,175, 94,219,239,186,254,253, 79,231,205,237,201,209,193,126, 81,155, 72,234,102, -199,194,204,148,178, 72,215, 79,152,243,100,210,167,110, 42, 29,231, 44, 93, 39,179,201, 84,209,172,217,201,201,209,225,222,195, - 58, 44,221,177,235,251,233,124,109,251,220,165,217,108,242,218, 75,223,113,228, 23, 95,252,209,247,190,247,153,215, 95,253,254, -201, 98,245, 35, 31,250,224,131,135,247,111,221,191,247,218,141, 91, 63,250,252, 39, 94,254,206, 31,125,240,233, 31,218,122,228, - 49, 19, 70, 78,192,224, 90,221, 73,235,138, 40,113,198, 46,165,211,211,147,255,241,239,253,221, 27,111,221, 21,162,218, 60,247, - 19, 60, 62, 78, 57,137,160,162,215, 82,169,217,216,196, 3,108,170, 9,248, 61,239,124,226,226,214,230,250,250, 26, 16,150,213, - 10, 12,202,241,162, 52, 61,172,181, 93,191,122,241,252,197, 7,247,119, 30, 60,124,120,119,111,255,238,253,135,187, 7,135, 67, -109,139,197,170,149,242,228,163,151,126,230, 39,254,242,179,239,123,207,238,189,157,219,183, 30,174, 63,246,232,245,155,215,110, -237,220, 91, 27, 86,175,127,239,181,173,233,108,227,194, 6,145,100, 72, 21, 65,152, 57, 37, 4,112, 16,119, 37, 36,102,170,138, - 8,174,224,102, 77, 56,155, 55, 38,142, 37, 60, 50, 50, 73, 80, 28,123,145, 56, 75,164, 46, 17, 99,107,174, 45, 96, 15, 98,238, -146,115,120,236,204, 20, 9,107,105,204,148, 19,107, 43,205, 92,128,152, 72,221,204, 32,117,130,103,180,114, 55, 3, 26,205,157, - 66,132,152, 76, 27,142,188, 16, 68, 55, 34, 34, 34, 1, 84,142,122, 43, 17,130, 10,140,167, 19, 38, 34,114, 64, 38,142, 41, 1, - 49, 19,176,155, 26, 52,226, 12,140, 86, 11, 34,114,226, 82, 42, 40, 72, 39,230,170,181, 32,114,128, 7, 36,103, 48, 0, 0,117, - 23, 30,153,125, 72, 72, 32,173, 54, 64,140,189, 8,191,109, 27,117, 96, 78,110, 54, 50, 67, 16,163,106, 27,129,180,241, 16,213, - 20,136,136, 9,137, 77, 13,140,192, 13,192,145, 29, 99,126,196, 36,196,181, 44,199,157, 23,202, 8,140, 68,134,179,177,170,187, -186,183, 58, 40, 19, 35,177, 89,137,210, 53,170,155,121, 74,172, 6, 67, 89, 17, 51,185, 1, 35,186, 6,156, 42,254, 3,194, 88, - 20, 50, 11, 0,154,214,102, 65, 56, 32, 66,114, 4,100, 71, 38,107,110,213,144, 72, 56,215,225, 20,226, 21, 70,193,131,138, 83, -188, 3,185, 27, 34, 26, 1, 75,151,192,177, 12, 43, 17,110,238,225, 96, 28, 86,131,107, 67, 66,111,109,124,225,177,152,154, 91, -197, 52, 69, 97, 66,215, 85,165, 88,107,135,113, 17,125, 88,173,214, 38, 61,112, 82,195,214, 76, 85, 83,202, 68,104,102, 96,218, - 39,169,138, 10, 4,222,136,176, 26,186, 26,161,115,159,181, 85, 48, 99, 17, 36, 0,192, 24,130, 49, 32, 82,114, 85,111, 13, 56, -210, 60,142, 64,194,236,214, 98, 47, 11, 68,232,134,128,106, 13,200, 4, 18,133, 61,180, 66,112,161, 17, 49,246, 28,174, 81,163, - 21,228, 36,137,220,206,158,219,241,208, 66,138,105,134, 70,254,197, 93, 68, 0, 7, 25,171, 69,163,150, 41,200,145,163, 35, 42, - 82, 98, 8, 60,202, 60, 1,221,226,102, 38, 86,219, 40, 58,138,212, 83, 92, 30, 99,139, 13, 64,196, 58, 62,211,149, 70, 58, 54, -142,185,218,168,135,185,219, 72,230, 20,243, 10, 56, 78, 89, 96, 20, 37, 70,252,214,222,174, 5,198,159,232,230,253,116,218,238, -222, 63, 89, 14,179, 94,220, 13, 34,179,115,246, 30, 64,148,241,171,233,196,142, 16,234,153, 72, 42, 32,142, 23,195,120, 85, 32, -193,152,130, 38,160,248, 47, 84,164, 4, 1, 24,194, 0, 39, 16,140,151, 8, 15,168,207,217, 35, 0,154,153, 46,151, 67, 41,128, -222, 77,250,103, 63,254,209,231,152,172,233,238,253,123, 47,125,255,141,189,131,213,206,157,157, 63,125,229,123,203, 82, 38, 93, -119,126,107,123, 99,125,125, 99,125,115, 62,237, 19,103,206,196, 44, 73, 40,231, 46,231,174,239,167,169,159,244,253, 84, 82,154, -116, 61,174, 37, 71, 91,158, 46, 87,203,227,221,187,183,110,190,249,170,186, 79,187,201, 39, 62,254,195, 31,250,145, 79, 28,236, -239,253,238,215,127,243,167, 62,255,217,225,244,120,177, 56, 80,131,195,163,197, 75,175,191,254,161,103,158,249,214,119,190,253, -226, 99,239,244,178,114, 4,104, 8, 77, 49, 37, 51, 96,132, 76, 12,173,254, 15,127,251,111,254,206, 31,253,233,198,218, 70, 35, -211, 86,115,215,109,111,108,181,218, 8,200, 84,193,161,105,139,177, 44, 1,182, 90, 63,252,222,167,250,190, 83, 53, 51,155, 77, -103, 31,123,254,249,207,124,230,179, 77,109, 50,157,130,211, 43,175,190, 6, 79,182, 27,183,111, 95,187,181,115,231,193,131,213, - 48, 20,243,182, 24, 38, 57,255,248,103, 95,248,202, 23, 62,173,170,119,239,220, 74,235,235,215,191,255,242,195,239,125,127, 99, - 99,122,120,120,124,176,179,119,121, 99,115, 50,205,194,162,205, 21,130, 28, 50,126, 1,205,212,192, 28, 76, 56, 81,130, 85,171, -238,142,156, 16, 49,167, 14, 33, 58,132,241, 56, 69, 74, 57,139,171, 25,186, 75, 78, 35,146,158, 32,247,221,104, 24,163, 68,200, -241, 5,213, 82, 78,151, 67,206,194, 35,154, 70, 82,192,143,220, 83, 74, 62, 42,188,226,235,193,103,103, 43, 72,146,136,197, 74, - 68,205, 8, 37,155,233, 72,123,113,116, 4, 38, 2,228,177,177, 77, 33, 81, 26,241,134,169, 79,181, 52, 0, 15, 69,158,105, 35, -102, 2, 80, 43,194, 25, 88,172,213,161, 86, 2, 28,159,252,224,136,236,232,216,140, 18,213,178, 66,226,156, 82,220,141,221, 44, -158,251,241, 61,119,119, 55,100,145,104, 3, 17, 16, 75, 48, 97, 4,193,213, 12, 34,216, 35,210,180, 98,152,233, 41,150,194,224, -110,228, 20, 41,173,152,210,140,226, 87, 96, 80,111, 90,137, 50,184,134,129, 62,236, 36, 65, 7,118, 51, 66, 84,115,145, 17,194, -133,128, 68, 29, 34,168, 58, 75, 66,211,214, 20, 0,162, 95, 0,163,201,131,153, 32, 80,248, 6, 96,136,221, 36,153,186,171,130, - 27, 3, 26,161,187, 27, 24, 2, 83,226,128, 18, 59,162,105,149,212,163,164,148,194,158, 75, 96, 45,126,199, 36, 34,147,201,112, -114, 72, 44,128,160,173, 34, 80,234, 18, 18,101,183,178, 90,106, 27,136,197, 69, 76, 21, 49, 17,153,153, 86,213,142,147, 18,154, - 57,212,202, 34,158,114,171,133,200, 72,164, 1,158,158, 12, 76, 48,153,117,165, 53, 64,100,164,212,101, 83, 31, 81,107,224,222, - 84,107, 35,169,204, 29, 34,116,137,107,169,230,208,106, 37,128, 81,237, 11,160, 69,153, 9, 0, 76, 13,160,178, 8,117, 83,211, -218,154,163, 41,165,222, 90,117, 48,171,134, 4, 73,146,161,184, 14,102,114,198,103,140, 60, 36, 26,186, 48, 18,231,214, 66,179, -213,136, 48,117, 29, 1,105,112, 72,226,123,135,224,148,180,148,152, 67,165, 44,110,222, 90,105,165,184,187,140, 97,198, 49,142, -248,175,218, 73,129,138,119,120,155, 83,112, 54,163, 7,208,218, 16,129, 41,153, 85,243, 58, 22,220, 34,170, 96,128, 0,110,141, - 32, 74,171, 24, 61, 67, 3, 37, 20, 4,114,215, 8,179,140,201,106, 56,203,157,141,117,168,241, 1,122,134, 47, 59, 59,128, 0, -132,180,151, 0,207,109,174, 63, 60, 56, 90,127,244, 66,169,198, 36,128, 42, 68,218, 52,226, 51,145,135, 69,112, 36, 68, 54,107, -209,207, 54,116,114,114,194,241,234, 48,162, 17, 4,128,200,220, 9, 35,102, 27, 16,232,120,228,171,187,142,140,228,241,236, 31, -255, 38, 20,241,128,120, 93,185,171,170, 46, 22,139, 88,225,174,111,109,253,200, 15, 63,251, 91,223,248,227,223,251,163,111,189, -118,227,230,167,158,123,126,123,107,253,254,238,222,235, 87,223, 60, 58, 57,238,251,188,177,190,121,254,252,185, 11, 91,219,211, -105, 63,157,206, 24,129, 25, 9, 40,229,110, 54,157, 38,233,186,233, 44,165, 46,229,220, 79,182,231,235,235, 90, 74, 25,202,201, -233,241, 80,135, 86,245,245,111,127,235, 93,143, 93, 42,101,200,235,155,107,243,181,217,164, 59, 58, 89,188,114,237,198,149,139, -151, 76,245,232,224,112, 99,115, 99,121,184, 39,147, 57, 79,167,186, 28,242,100,138,222, 82, 74,127,247,191,255,219,255,248,215, -127,147, 57, 61,220,223, 27, 90, 69,132,182, 82, 97,110,173,196, 20, 34,170,192,113, 57, 51,183,196, 60,233,242,233, 98,129, 72, - 79,189,235, 7,127,248, 35, 31,221, 62,183,209,245, 51, 18,249,157,127,246, 27,111,188,246,202,213,107,111, 14,195,112,253,238, - 91, 15, 15, 78,139,181,229,170,144,234, 11, 31,124,207,159,251,210,231,207,111,111, 62,184,127,127,178,185,189,191, 58, 93, 60, -188,255,206,119,255,192,206, 31,125,231,251,223,125,109,123, 99,109,243,220,102,238,114,164, 44, 42,214,113, 81,147,200,154, 69, -199, 26,212, 73, 88,171, 41,120,230,228, 96, 34,226, 26,114, 92,200, 97, 66, 7,204, 57, 1,178,187,147, 41, 50, 35,146, 89, 35, -238, 56,200,130,238,204,145,192,179,156,186,161, 22,100,154, 79, 59,179,120, 36, 9,178,171,170, 57, 8,163,131, 51,137,189, 13, -209,139,128, 61, 64,238,123, 83, 4,109, 30,140, 64,119, 98, 38, 32, 0, 30,133,238,161, 37,116, 35, 97, 7, 32,162, 40,136, 34, - 65,128, 33,213, 92,152,192, 65, 56, 53, 80, 34, 86, 45,110,209,218, 35, 68,200,146, 3, 56, 5, 30,127, 10, 2,120,234,165, 21, -165,208, 73,171,143, 50, 2, 64, 48,123, 27, 44, 67, 8, 14,134, 30,146, 63,118, 3, 51,141,241,135,129,159,145,100, 80,181,153, -130,116, 56,158,240,131, 75,235,216,154, 33,115, 52, 91, 17,188, 25, 1,145, 89,163, 51,253,171, 42,196,110,211,154, 5, 1,198, - 65, 9,216, 84, 57,146,215,142,200,140,146, 64, 27, 33, 37,162,166,213,194, 75, 5, 96, 77,213,148,137,133,146, 6, 6,153,101, - 44, 17, 57, 88,173, 65,169, 66,201, 96,142,110,220,101,107, 10,224, 90, 27, 9,121,115, 4, 71,150,216,177,155,153,170,145, 90, -164,143, 42, 53, 34, 6,215, 60,157,107,173,174,141,137,157, 40,165, 84, 22, 75, 71,101,230, 48,235,157,229, 44, 44, 88, 20,140, -160,110, 99, 86,149,178, 5, 80,137, 25, 60, 91, 45,204,172,181,102, 97, 7,226,177,125,137, 94, 13,163, 66,135,224,109, 60,251, -198, 56, 0,137,173,233, 56,244, 33,140, 0,110,107, 21, 73,146, 72,109,213, 90,147, 62,129, 59,139,184, 91,171,154, 66, 45, 87, -203,216,245,100,112,211,102,205, 96, 28,214,199,215, 47, 32, 2,156,152, 99,101, 24,145, 93, 51, 34,102, 18,107, 96,228,241, 91, - 65, 96, 7,109,102,208,138,197, 44,197, 89,209,136, 29, 60, 1, 33, 34,242,191,253,181,159, 12,202, 3,112, 60,116,199,146, 66, - 60,112,221,194,199, 21,138, 38, 0, 87, 10, 90, 19,130,155,186,213,113, 55,233,103, 22,148,113,186, 98, 99,155, 96, 28,144,194, -216, 31,119, 3, 60, 83, 3, 4,154, 17, 99,154,159,130,124,233,160, 65,173, 4, 66,114, 15,108, 11,140, 41,158,200,194,251,124, - 62,219,221,125,176,182, 54,163,120,153, 32, 56,208, 56, 96, 57,219,242,198,145, 16,157, 16, 1,213,198,162, 35, 33,134,112, 19, -199, 85, 65, 24,122,199, 63, 35,238, 10, 20,175, 42,139, 42, 4, 24,160, 5,146,231,237, 59, 8,156,129, 19, 60, 36, 49,132, 62, -242, 23,180,153, 3, 18, 19,148, 87,223,120,227, 51, 47,252,232,127,254, 55,254,171, 23, 62,249,185, 63,251,226,143,126,225,203, - 95,254,212, 71, 63,241,200,246,214,106,177,188,117,251,238,203,175,190,122,245,250,245, 59, 59,247, 79, 78, 22,195, 80, 12,125, - 24,134,227,211,211,227,227,163,227,227,189,163,163,253,211,163,189,211,197,137,213, 1,220, 89, 48, 75,126,223,199,159,187,119, -251,214,111,255,234, 47,205,166,179,115,151, 46,182,213,106,103,119,247,244,116,209,106, 61, 93, 13,139, 97,121, 97,123,163,148, -242,222,119,191,211, 83,143,146,235,233, 41, 96, 75,179,201,172,159,252,234, 47,253,195,255,249, 23,255,143,190,235,114,234, 87, -101, 89,181,182, 86, 75, 45, 67, 41,196, 24, 54,203,197,106,209,106,115, 83, 97, 34,226,156,152,192, 54, 54,230, 47,126,234,133, -143,124,240, 3,243,245,245,214,170,145,124,243,247,127,175, 44,235,239,125,243, 27,183,238,188,117,188, 92,238, 29, 31, 13,181, - 45, 78, 86, 87,182, 55,126,254,103,190,242,111,124,241, 69, 93,157, 62,184,123,239,202,211, 79,237,157, 30,190,244,167,223,157, - 76, 38,191,243, 7,127,114,124,111,239,252,230,124,146, 66, 53,133, 89,114, 48,172, 19,243, 25,132, 20,171, 58,161,199, 32,158, -153,137, 8,193, 83, 74, 76, 76, 36, 99, 43,221, 29,156, 82, 78, 49,206,205, 93,242,209,134,225,153,196, 65, 91,177, 46,167,216, -159, 3, 33, 18,215, 86,137, 8, 25,181,153, 48,139,196,176,193, 51, 11, 50,185, 65,102,113,143,239,102, 20,203, 13,153, 88, 68, -139, 34,141,171,203,176,253,197,208, 63, 10,218, 24, 95, 83,138,167, 58,138,164,216,178, 1, 70,205,149,180, 68, 61, 53, 0, 30, -227,212,146, 3, 32, 99,234,238,146, 50, 34,169,106,146, 28,233,158,148,187, 56,244,113,150, 17, 74, 12,222,245,189,182,166,214, -130, 99,192, 34, 66,168,205, 20, 65, 88, 40,177,171, 35, 64, 55,157,184,121,188, 3,152, 8, 29,204,205,221, 83, 18,119,143,227, -164,187,143,186, 55, 14,221, 21, 68,103,133,162,145,136, 56,254, 34, 88,252,140, 15,197, 20,169, 83,178, 86,199,126,187, 53, 2, -140,236, 16,184,230,174,115,247,213,106,129, 8,146,187, 56, 57,185,134,109, 3,213, 44,162, 71,196,136,194,232, 97,171, 7, 36, - 20, 73,173, 52, 14,254,101,107,227, 8,118,108,244, 90,252, 81,163,118, 2, 17, 1,180,213,113,171, 64, 68, 28,232, 39, 10, 66, -125,202, 2,238,218, 70,110,149,170, 82,252, 44,129,154, 41, 49, 50, 73, 60,114, 66,112,239,102,110, 17,218, 33,215, 70, 12, 68, - 84,106, 57, 61, 62, 93,155, 79, 82,223,161,191, 77,160, 68, 36, 50, 13,138, 35,217,255,199,212,155, 61, 89,150, 93,231,125,107, -218,231,156,123,111,206, 53,245, 80, 61,119,163,187,209, 3,128, 6,209,104, 16, 36, 8, 82, 32,130,146, 41, 75, 14,218, 82, 40, -252, 96, 61,248,143,112, 56,194,255,134,159, 28,122,176, 21,114,132, 77,209,164, 77,147, 65,145, 4,105,138, 34, 1, 18,108, 0, - 13,160,231,161,170,107,204,204,202,225,102,230,189,247,156,189,247, 90,203, 15,235,220,130,186, 30, 43, 58, 43,171,242,158,125, -214,254,214,247,253,190,224,178, 37,102, 78, 53, 23, 51, 67,162, 36,172, 21,106,205,196,152, 36,245,171, 30,220, 89, 24, 9, 93, -161,148,162,165, 50, 17,113,114,112,171, 97, 47, 68,140, 43,193,154,204, 70,140,204, 73,221, 97,237,245, 76, 44,134, 8,160,109, - 59,225, 36, 86, 45, 32,116, 36,225, 48, 3, 4, 55, 51, 64, 71,119,162, 68, 0,234,134,104, 72, 99, 45,162, 16, 85, 51,252,222, -255,249,111, 1, 49,152,253, 1,162, 9, 14,117, 44, 64,109,156,162,105,173,225, 88,180,216,196, 74,218,193,198, 8, 3, 32, 49, - 89, 29,139,225, 71,160, 12, 50, 34, 1,152,122, 37,143, 94, 4, 48, 55, 26,141,145, 35, 99,220, 29,144, 18,184,131,107, 56,103, - 12,198,181, 21, 34,135,117,114, 13, 81, 64,119,107, 82,115,247,246,173,141,237,203, 91, 27,201, 20,194, 78, 59,158,255, 33,180, - 3,152, 41, 35,226,248,185, 13,225,137,227, 61,195,200,145,126, 69,230,177,138, 21,105,141,204, 10,132,224, 56,159, 43, 16,199, - 31, 29, 3, 60,254, 98, 59,235, 22,188, 52, 32,105, 16, 43, 99,128, 93,199,118,175,205,217,204,251,197,141,251,244,194, 43,175, -212,220,183, 91,155,186, 26, 56,165,217,238, 46, 52, 9,150,171, 91,183, 62,255,240,253,247, 62,248,232,163, 79, 62,253,240,246, -237,219,224,222, 54,205,165,157,221,189, 75, 59,179,217,180,109, 82,219,180,137, 8,208,146, 52,210, 52,147,182, 61,191, 56,191, -241,201,103,167,171,213,107,207, 63, 55,228,161,154,175,150,171,119, 63,249,228,222,193,241,209,124, 14,136,223,124,227,181,182, -105,191,241,214,183, 94,124,238,249, 73, 71, 27,123,215,218,173,237,201,100,243,253, 31,253,224,127,248,159,254,199,219,135, 71, - 40, 50, 63, 61,203,185, 18, 33, 49,108,207, 54,174,238,238, 73,195,203,126,149,139,158,206,207,230, 23,231,134,222,164, 22, 29, -159,120,236,234,175,189,241,149,111,190,249,181,237,189, 75,192, 92,242,234,236,232, 32,211,198, 66,235,151,223,248,230,127,252, -139, 63,255, 95,255,221,191, 65,116,230,212, 16,125,251,107, 95,250,231,223,253,213,141,173,233,221,155,183, 73,232,116,190, 88, -106,249,249,207,223,155, 77,167,159,221,184,181, 51,155,238,206, 54,153, 49,165,134,145,187,110,210,164,142, 19,150, 82, 28,188, -154, 51,162,170, 73,147, 8,160,105, 36,168, 7,102,206,137, 8, 24, 17, 70, 14,164, 1, 18, 16, 81, 45,202, 66, 34,226, 96,110, -104,106, 44, 88,114, 14,111, 28,137,160,163,129, 51,177, 19, 32, 48,163,143,174, 47,140,254, 32, 18,110, 29, 52, 60, 35, 90, 20, - 8,220, 20, 20, 88, 88, 71, 22,180, 19, 53, 99,126, 58,145, 27,160,171, 90, 69, 96, 68, 86,173,238, 74,110, 16,118, 78,150,241, - 17, 32, 54, 45,190,102,159, 68,221, 89,240,226,221, 67,174,244,245,199, 44, 60, 17, 8, 30,228, 22, 64, 20,183,234,224,137,147, - 89,209,234,156,216,215,151,137,174,155,212, 82,188, 86, 12,162,128, 21,183, 74,148,136, 89,132,107,169,205,214, 54,186, 14,103, - 23,193,228, 41,101, 96, 17, 87,143,129,154,133,109,253,249, 37, 4, 34, 30,134, 65, 56, 1, 83,160, 40,205,130, 47, 24,101, 63, -236,235,108, 48, 17, 97,144,126, 17, 84,139,155, 18, 11, 16,228, 97,144,212,144,133,126, 43,128, 12,164, 94,235, 8,159, 51,119, -192, 96,240, 86,211,182,155,184,186,150,138, 76,230,170, 90,132,133,136,163,140,162,148,236,166, 72, 9, 64, 49, 37, 52,167,166, - 1,175,174,166,170,241,228,197, 90, 46, 28, 44,194, 82, 93, 53, 40,205, 97,188, 49,139, 26, 96, 51,183,216,214, 34,197,199, 37, - 10, 99,181,228, 32, 10,152,187,170, 49, 50, 49,105,169, 36, 76,192,195,176, 52,245,139,229,194,221,174, 94,218,171, 78, 65, 76, - 33, 70,140,251, 25, 9, 18,235,176,138,210,225,178, 42,146,152,132,221,131,137,225, 14,100, 53,107,173, 0,198,146,192, 71,114, -117,238, 7,100,148,196,238,241,186, 18,243,242, 80,230, 96, 68, 68, 12, 69, 43,162, 89,238,230,166,238, 22, 6, 1,110, 90, 98, - 25,155,223,173,130, 26, 49,170,153, 8,197, 5,119,220,118,198,220,236, 70,148,156,192, 84,213,140, 25,173,232,106,185, 18, 64, -240,232, 4, 64, 26,231,228,117, 1,147, 59, 34,136, 91, 5, 86,115, 32,160,166,237, 74, 94,169, 22, 66,102, 18,243, 10, 16, 37, -234,102, 10, 4, 49, 58,192,154, 61,109,163, 99, 50, 46, 59,230,107,124,196,248,172,122,192,155, 28, 16, 52, 80,199,235,234, 26, - 28,235,162, 2,220, 49,222, 13,192, 61, 26, 6,108,119,123,231,248,226,226,210,206,149, 65, 53,228,150,113, 98,139,107, 60, 96, -224,237,226,107,174,153,177, 20, 78, 27,163,145,104,191,134,101, 5,119,202,192, 28,200,137, 19, 0, 24, 0,163,243,195,247,184, -195,104, 46,122,200,234, 1, 15,178,166,105, 70,198,117,189, 13,128, 27,154, 93, 44, 87, 58, 12,127,240,135,127,252,223, 63,246, -228,222,181, 61, 48, 42,106,216,201,249,233,169, 86, 21,198,199,159,120,242,137,231,191,240,143, 16,250,163,131,147,243,197,221, -123,183,110,220,188,253,217, 71,239,223,189,115,251,167, 63,127,183, 47, 58,219,152,238,110,110,237,237,108,238,110,237,182,140, -203,213,162,148,114,249,210,229,179,219,183,127,242,222, 7,207, 60,254,152, 17,167,166,217,219,222,154,159, 93,172,134,238,108, -177,250,248,198,237, 55, 95,127,233,207,254,226, 79,135,161,183, 58, 72,106, 39, 27,155, 27, 93,243,123,191,255,187,251,167,103, -147,201,180,154, 49,209,227,215,174,236,108,109, 94,218,217,217,154,117,128, 80,171, 86,173,102,182,234,247, 46,150,171,139,101, -127,177,236,175, 63,114,245, 55,127,245, 87,190,244,234,203,237,100, 54,172,150,249, 98,245,224,193,225,253,251,247, 30,123,230, -165,183,190,254,173,247,223,253,249,211, 79, 61,245,242, 75,175,254,228,221,159,255,218,151,190,252,221,183, 94,125,233, 11,207, -156,156,236,159, 28,174, 38, 91,155, 63,123,247,253,199,175, 63,118,122,112,126,235,246,225,181,221,205,199,119,247,218,134, 29, - 16, 81, 8,153,133, 13,220, 80, 5,132,147,160, 91, 29, 42, 48, 10,176,171, 73,219, 0, 34, 33,171,153,169, 17,184, 75, 48,204, - 24,192, 57,174,205, 12,200, 2,174, 0,100,238,200,200, 68, 40, 44,241,241,138,110, 53,112, 38, 66, 70,244,224,227, 57, 58,186, -106, 85,109, 82, 2, 68,181, 1,145,137, 4,221,152, 73, 53, 3, 16,114,160,131, 29,132,131, 29, 31,152, 92, 55, 69, 64,173, 38, - 77, 19, 89, 39, 97,174, 22,126, 43, 90, 55,140,115,192,243, 71,230, 33, 58,128, 51,177,105,193, 17,193,228, 90, 11, 34,115, 35, -102, 6,110, 44,141,187, 18, 11, 11, 23,205, 14, 21, 28,164,105, 3,104,204, 45, 6, 2,132, 0, 89, 34, 79,148,144, 37,182,138, - 72, 84,149,153,197, 93, 75, 85, 4,239, 79,142, 48, 46,153,132, 64,158, 82, 3, 0,158, 32, 86,196, 62, 14, 76,152, 82,210, 82, -106,173, 73,196, 1, 92, 43, 34, 19,187, 23,139,112,144, 3,148, 60,116,147,137,186,187,123,209,146,226,122, 75, 17, 29, 97,112, - 87,133,182,233, 76, 77,213,136, 83,188,165,116, 40, 36,140,163,241, 20, 3, 34, 29,134, 63, 55, 80,171, 36, 20,171, 2,228,134, -136, 28, 64,173,198,218, 54,110, 12, 14,196,142, 14,102,181,152,213,117, 28, 29,152, 57, 54,203, 4,164,238,213,106,173,133,136, - 92, 29, 34,193,134,228, 53,115, 34,100, 2, 68,175,185,150,156, 36,141, 7,101,172, 3,181,154, 25, 32,172,111,134,142,140,238, - 94, 44, 35, 51,184, 14,185,110,206,218, 96,187, 3,161,170,150,193, 83, 51, 58,154, 64, 1, 89, 24, 92, 75,149, 36, 8,144, 75, -145, 17, 22,133,170, 53,210, 21, 0, 68, 68,238, 24,141, 95,156, 72,213,180, 26, 11, 2,160,179, 65, 37,112,179,234,220, 16,178, -120, 85, 18,202, 67, 17,118, 70, 82, 71, 55, 80,173, 49, 55,128,187, 89, 89,167, 70, 41, 16,208,142,152,139, 65, 92,244,251,123, - 0, 0, 32, 0, 73, 68, 65, 84, 85, 16,144,212,154, 41,130, 3,178,170,142, 53,216, 44, 14,170,181,198, 41, 43,163, 80, 49, 54, -122, 96,208, 51, 16,137,193,117,116,143, 64, 44, 98, 20, 32,175, 6, 3,224,224,106,140,110, 6, 66,148,167, 94,122,246,232,254, -254,197,201, 41,196, 90, 6,217,189,128,213,248, 93, 0, 55,119, 33,212, 81, 94, 71, 8, 87,127,116, 66, 5,191,192, 28, 24, 71, -121,124, 92,118,233,200,234, 27, 15,254, 17,140,103,174,237,164,237,143,231,232,177, 45, 3,246, 16,243, 71, 33, 31,220, 57,234, -113, 41, 44,237,182,214,144,192, 29, 25,208, 70,192,177,197,197, 5,209, 84, 61,172, 67,230, 70, 76,100, 0, 64, 15, 21,195,181, -130, 19,103,189,141,104,181, 53,157,202,171, 59, 35,241,184, 64,246, 16,160,220,223,123,255,221, 15, 62,248,248,141,141, 87, 64, - 85,152,128,192, 74,129,106,142,188, 58, 59, 39,233,221,212,129,246,118,118,247,118,247, 94,127,245, 43,192,191, 93,170, 61,184, -127,255,206,135, 63,251,135,119,222,249,233,187, 31,124,252,233,141,201,228,206, 80,244,210,238,229,221,205,141,249,114,104,219, -110,255,232,206,116,214,238,109,108, 59,209,222,246,206,131,227,211,161,148,101, 94,221, 59, 56, 58, 57, 91, 92,218,217, 94,172, - 22, 47,126,225,229,227,163, 7,139,243,147,211,253,229,179,207, 62, 55,157,110,150, 92,150,253,106,119,123,231,185,103,158,220, -156,117, 94,243,233,217,249,173, 59,119,247,143, 78,246, 54,102,109, 55, 81,211,147,243,243,154,203,203, 47, 60,247,242, 23, 94, -218,187,186, 71, 32,231,167, 39,243,249,209,225,225,131,131,163,227,251,199,135,127,244,215,223,255,151, 67,189,122,237,250,209, -209,193,191,252,111,254,219,139,255,229,127,254,205, 55, 95,252,194, 11, 79,222,186,249,233,229,107, 87,101, 99,243, 79,254,195, -247,106,191, 80,240,183,127,242,222,222,214,198,172,155, 16, 0, 97, 34, 6, 96, 34, 1,150,134, 56, 26, 54, 80,107,149, 70, 90, - 67, 35,144,196, 41, 49, 16, 49, 38,247,202,204, 30, 81,205, 0,224,226,250, 66,235,166, 3,160,152, 35,152, 43, 11, 58,128, 43, -146, 25,139,152, 42, 33, 57, 33, 17,137,136,153,229, 82,201, 92,132, 75, 45,132, 40,156,108,252, 0, 56,161, 59, 84, 66, 10,103, - 5, 26, 35, 65,214,154, 72,128, 88,205,153, 48,181,169, 86,139, 38, 16, 23, 6, 68, 32, 79,148,220,130,132,238,174,154,218, 6, - 17,115, 45, 68, 6, 64,194, 2,204, 96, 26, 48, 39,225,196, 34,160,213,213, 48, 49, 35, 3, 49,228,146,218, 86, 77, 67,110, 41, - 81,204, 4,201, 37,248,169, 42,210,150, 97, 8,247, 61, 32,113,219,160,249,120,251, 0,142, 41, 39, 97,114, 51,171,138,204, 14, - 68,173,160, 65, 56,193,199, 34,107, 48,112,151,166,209, 82, 25, 81,154,206,181, 6,214,145, 16,221, 12, 71,132, 50,154,186,176, - 16,249, 80, 7,116,145,148,170, 90,112,229, 18, 39, 45,153,155, 54,170,249, 34, 13, 32,228, 80, 3,233, 21,223,175,187, 43,183, -201, 21,107,237, 83,219, 70,164, 68,154, 73,156,224,241,164,155, 59, 19, 99, 98, 0,179, 92,194,202, 15, 0,169,109,205,212, 29, - 74,173,106, 5,137,192,141,153, 85, 13, 32, 14, 40, 77,169, 1,130, 90, 98, 17, 33, 73,216,180, 26,154,235, 90,116,137,100,111, - 84,241, 50, 11,242, 80, 74,180, 5, 55, 77,155,115, 30,245,166,234, 36, 76, 78,106, 5, 3, 26, 42,220, 52,221,241,209, 73, 25, -122,217,232,214, 86, 35, 8, 51,103, 41,165,109,219, 64,218, 49, 49,184, 73,211,230,156,173, 90,155, 18, 32, 91, 20,234, 26, 0, - 99,234, 58,173,197,170, 73, 74, 76, 28, 41, 48,138,192,141,123, 53,147,113, 76, 5,138,227, 94,195, 87,128, 77,211,128,187,153, - 17, 1, 10, 43,132, 15, 42, 94, 21,129,221, 53, 34,230,182,201, 67, 14,219, 24, 51, 69,106, 86, 49, 58,204,200, 1, 24,209,136, -205, 28,129,148, 72,208, 7,173,252,175,255,197,239, 0,211,152, 22,197, 40,239,137,252,207, 72, 20, 48,112, 2,139,104, 49, 32, - 32,104,244,123, 69,163, 49,162, 1,225,116,107, 99,117,113, 81,134, 12,235, 54, 15, 0, 36, 74, 30, 39, 30, 18, 32, 71,149, 19, -141,253, 79,164,102,142, 30,209,159, 32, 34,132, 49,115,116,203,140, 49,211,135, 70,118, 71, 4, 70,138, 49, 90, 26, 94,204,207, -157,100,218,166, 88,164, 32, 71,205, 8, 34,193,120, 73, 12, 23,206,120, 48,115,136, 94,184, 6,144, 69,253, 50,132,137,127,116, -144, 5,136,201, 70,171,205,250, 18,243,139,133, 47, 2,128,193,184, 24,142,215,144, 1, 17,137, 32, 33,150,248,184, 3, 34,138, -180,101,181,252,189, 63,250,179,141,217,244,139, 47,190,156,102, 27,205,108,106,165,172,161, 56, 44,109, 75, 76, 62, 82,250, 44, -231,222, 74, 6,103, 93,173, 58,150,167, 95,122,245,173,239,124,231,159,126,247,183,158,188,122,233,133,167,159,190, 24,234,205, - 91,159,223,188,123,239,228,244,120, 85,202,208, 15,253,170,223,158, 78,221, 29, 72, 0,109,185, 88,170,249,114, 40,243,179,249, -107, 47,190,112,116,124,242,196,245, 39, 38,211,174,233,218, 82, 43,131, 62,245,196,227, 47,190,244,236, 87, 95,127,253,165,231, -158,106, 18, 31, 29, 29, 30, 62, 56, 62, 61, 59, 35,192, 47, 62,247,220, 83,215,175,129,219,124, 62,103,162,175,126,229,181,151, -158,123,113,115,119,135,128,143,246,239,220,189,115,235,214,157,123,183,246,247,239,236,239,127,242,249,221, 91,247,247,191,254, -213, 55, 31,125,252,241,239,125,239, 79,158,186,254,244,116,186, 49,191,255,241, 35,123, 27,171,161,220,188,125,247,251,255,240, -246,139, 79, 61,250,119,111,191,123,247,238,254,181,141,217,230,172, 19,100, 2, 70, 22,230,196, 66,179,110,218,182,173, 69,176, - 12,169,147,177, 45,152,137,153, 8,204,153, 24, 99,225,204,236, 16,185,209,148,162,132, 19,130,136, 36,230,227, 47, 33, 41,197, -220, 93,136,128,208, 17,144, 88, 1,136,198,107,187,131,119, 41,185,234,144, 7, 51, 72,146, 20, 52,165, 54, 4,127,117, 75,210, -134, 14,209, 36, 42,181,230, 90, 36,138,120,172,144, 8, 16,148, 90,226, 94, 63,106,211,110, 68,108,181,144, 52,137, 17, 0, 57, - 73,184, 38, 9, 49, 49,115, 26,255, 92,112, 48,171, 44,140,200,102,165,228,210,180, 83, 2,172,246,240,204, 53, 38, 97, 2, 53, -195,145,154,142, 14, 94,189,180, 77, 87,107, 86, 48,102, 1,196, 16,184,221,109,212,166,205, 1, 42, 50,147, 48, 49, 25,232,200, -104, 10, 65,149,200, 32, 56, 53,228,224, 6,128,106,156,146,176,184, 42, 16, 49,146,175, 87, 94,163, 64,132, 35,226,219,204, 24, -121, 4,175, 3,112, 18, 68,180, 81,119, 4, 55,101, 78, 68, 80,171,154,107,132,245,144, 27, 51, 11,153,165,150,130, 8, 41, 53, - 41,117,146, 18,177,172, 22, 23, 97,202, 48,173,210,180, 81,218,227,102,174,217,199, 2,136, 58,210, 52, 71,155,156, 69, 86, 9, -129, 0,101,141, 26, 4,198,228,136,170,217,209,171, 86, 26,229,221, 17, 68, 59,154,250,133,221, 0,193, 83,147,130,101,130,225, - 7, 49, 47,121, 32, 33,102,114,119, 73, 9,145,107, 41, 57, 23,119,107,186, 14,144,181,234,233,217,121, 39, 52,153,205, 0, 80, -154,198,212, 21,128, 16, 83, 74,102,166,213,208,163, 62,139, 99, 67,205,140, 85, 85,107,173,181,198,242, 88,146,184, 1, 2,113, - 98, 32, 28,135,205,248,201,169,154, 85, 22,138,221, 28, 18, 19,178,170, 66,236, 62,152, 3,223, 54,174, 15, 1,153, 41, 53,201, - 77, 9, 49, 10,168, 83, 34, 96, 41,125,209, 90, 25, 9,137,204,107,232,207,225, 37,115, 55,102,174,213,115,206,104,198, 18,199, - 23,149, 82,248,191,251, 23,191, 3,224, 28,105,145, 96,177, 1, 19,137,123,229,135,101, 77,177,175,199, 24, 10,204,215, 35,188, -187,134, 65,241,244,240, 65,201, 89, 34, 76, 28,213, 31, 78,227, 83, 17, 53,101,128,142,196,204,227,138,213,171,240, 90,133,143, -190, 65,138,159,127, 88,105,198, 31,224,216,143, 8, 54,250, 20, 31,222,183, 1, 4,225,108,209, 95,217,221,169,106,163,253, 43, - 8,108, 48,166, 83, 31,190, 26,214,225,218,113,147, 7, 4, 20, 29, 81,163,129,107,196,136, 83,112, 8,145,214,255,215, 72, 61, -255,207, 92,240,107, 95, 79,148, 50,192,136, 99, 30,205,185, 4,235,181,130,139, 72, 93,156,255,193,159,252,229,253,253,131,215, - 95,251,202, 19, 79, 61,237, 96, 22,128,198,112,164,153,186, 86,115, 3, 45, 72, 13, 11, 73,219,105, 84,163,205,102,139, 97,249, -217,207,127,254,217,167, 31,191,240,234, 27,175,126,237,173, 95,255,173,223,254,175,126,243,187,223,254,245,111, 63,251,200, 85, -103, 17,150,123, 7,247,139,215,205,217, 12,137,102,221,100, 53, 12,125, 95, 86,195,112, 60, 63,107, 89, 54,166,221,103, 55, 63, -237, 23,103,195,197,217,238,238,246,245, 39,174,111,110,110, 47, 23,139,155, 55,111,124,248,241, 71,247,247,247,135, 85,143,136, - 77, 74,179,233,228,246,225,254,223,189,243,238,135,159,221,188,186,119,233,245, 87,190,248,196,245,235, 41,137,214,122,239,246, -173, 27,183,110,222,188,117,247,206,225,131,123, 15, 14, 62,187,187, 63,191, 88,129,251,175,188,245,214,213,107, 79,124,255, 63, -253, 85,206,171, 87,191,242,198,189,195,147,147,253,123,105,107,230,102,247,238, 31,124,250,241,231,179,212, 92,221,222,110, 83, - 23,194, 2, 9,165, 70,218,182,221,232,102, 1,144,106,154,212, 38,137,102, 48, 98, 36,226,182,109, 25,133,133,185,145,168,149, - 8,248, 84,172,187,181, 42, 51, 55,209, 53,170, 21, 9,132,133,137, 12, 92, 18,197, 14,159,144,152, 4, 69, 90, 22, 38,138,162, - 75, 68,172,165, 6, 42, 81, 82, 66,162,166, 73,128, 81, 65,229, 76,132,232, 36,204, 72,170,138,177, 41, 5, 39, 20,150, 20,184, -193,200, 72,120,141, 1,130,146, 52,102, 70, 12,113,193, 67,230,184, 85,172,171, 10, 16,204,136, 4,192,137, 88,132,133, 57, 70, -230,201,100,106, 90,221, 97, 93,230, 14, 44, 4,128,185,150, 70,154,177,244, 44,168,208,128, 57,231,240, 92,147, 8,145,132, 43, - 49,214,161, 16, 31, 51, 7, 55, 51, 85, 55, 67, 98,112, 67, 87,100, 66, 22, 87,139,180,163, 19,130, 3, 49, 17,179,175, 39,167, - 68, 88,171,141,237,114, 50, 62, 21,196, 50,150,237, 18, 18,203,168,113, 17,141,117,215,200, 68,228,170, 68,205,136,254, 39, 16, -110,214,174,188,134, 37, 89,205, 16,166,238,166,113, 5,179, 98,102,110,150, 38, 77,252, 40,153,217,193, 89, 82,108,176, 97,109, -122,102,110, 12, 44, 42,125,106,169,200, 8,107,239, 54,104,101,102, 2, 66,162,106,149,137, 72, 18, 35, 73, 18,119, 71, 71,226, -168, 80,164,120, 32, 71, 88, 97,148,196, 1,160,224,168,241, 18, 17,179,176,152, 71,174, 62,220, 56,218, 78, 59, 34, 86, 53,215, - 90,134,220, 15,195,108, 54,225,148,220,141, 4,133,132, 89, 68,162,147,207, 89,136,132, 49, 0, 67, 0, 66, 92,205,173, 42,160, - 71,212,107, 4, 50, 3,144,112,148, 20, 33, 11,160,137,196, 59, 50, 20, 93,148,166,197,241,123,240,181, 93,195, 61, 42,109, 17, -128,176,105,146, 57,130,187,230, 16,171, 67,190,114,119,116,211, 36, 76, 76,170,102,181, 68, 69,109, 8,132, 44, 98,230,165,148, - 54,113,211, 74,108, 61, 29, 44, 9, 13,165, 8, 6,163, 25,108,124,169, 99, 12,235,128,196,160, 6, 8, 76, 2,192, 14, 15, 39, -111, 26,173,132,235,109, 99, 68, 4, 99,201, 73, 68,232,236,160,134, 99,137,135,233, 56, 60, 3,120,164,176,105, 77,181,199, 0, - 90,140,139,166, 88, 20,248,248, 66, 65,128,245, 86,127,124,103,196, 15,222, 60, 10,116,102, 27,155,251,135,183,251,154,133, 81, - 3,252,141,163, 84,191,198, 12,208,232,118, 7,196, 16, 15,215,189, 34, 96,190,166, 91,142,160, 40,136,124,214,232, 60, 26, 43, -104,215, 71, 60,172,109,249,136,107,105,117,157,132, 25, 75, 78,124,188,167,140,105,103,100, 26,242, 10, 17, 87, 67,255,127,252, -238,255,254,226,211, 79,209,214, 54, 0,212, 33, 55,179, 41,152,186,186,107,193,166, 3, 43, 78, 13, 24,214,190,119,173,221,246, -222,205, 79,222,255,252,195, 15,190,240,218, 87,158,126,241, 69,116, 60, 61, 62,182, 62, 83, 35, 59,179,173, 55,127,249, 55,126, -229, 55,126, 19, 17,255,175,127,247,191,253,219,223,255,253,173,141,173,157,205, 45, 98,222,219,218,186,183,127,240,200,165,157, - 55,191,243,173, 23,158,121,122,210,180,205,116,186,123,105,215,115,222, 63, 60,120,247,230,173,227,227, 7,234, 54,235,166, 59, - 59,219,128, 50, 44,207,151,125,127,112, 60,191,123,127,191,106,221,217,218,126,233,153,167, 95,126,225,197,203, 87, 47,245,125, -127,126,124,124,120,116,124,251,238,221,123,199, 71,243,139,213,209,233,233,217, 98, 85,213,182,187, 4,147,102,123,107,107,239, -242,229,183,190,250,181, 31,255,252, 71, 87, 62,127,228,249,151,223,184,243,249,199, 31,126,120,227,213,151,159,157,144,236,237, -236,204, 38,157,130,245,171, 85, 41, 58,237, 90,146,132,192,196,108,170,146, 18, 68, 87,167, 97,173, 53, 9,143,155,109,194, 64, -134,153,234, 72,175, 83, 23, 9,254, 4, 54,147,198,170,169, 26,194,216, 86,170, 69,137, 81,132,115,174,130,192,204,213, 10, 66, - 66,117,133,113, 71,110, 6,106,230,128,210,112,205, 40,140, 64,148, 36, 85, 85, 0,173, 96,140, 66, 72, 85, 11,115,211,182,147, - 82, 11,141, 97, 33,119, 71,179,232,175, 71,245, 98, 0,157,180, 86,205,216, 56,181,163,251,203, 11,179,152,213,232,138, 67, 67, -145,164,170,241,123,196,104, 85, 75, 45, 76, 34, 44,165, 84, 36,228,160,116, 9,187,123, 24, 31,133,197,204, 29,161,105, 83,213, - 98,102,132,136,196, 14,222, 54, 83, 5,245,106,225,144,171,170,137,153, 89,204,117, 93, 58, 8, 76, 80, 53, 74,143,185,214, 98, - 1,116, 84, 71, 22, 0, 35,145,144, 7, 80,216,181,186,131,134, 58, 73, 2, 60,162, 63,136,193, 67,183,197,136,156, 84, 22, 50, -163,192, 8, 6, 70,152,137,169,237,134,146, 17,136, 57, 17, 51, 32,155, 85, 66, 48,181,120,138,161,196, 10, 84, 13,204,171, 17, - 59, 37, 65, 96,228,240,150, 97,173, 89,109, 0,160,104, 67,197,113, 8, 53,116, 52,116,115,151, 70,220,204,214, 81,116,105,187, -104, 45,119,215,200,129,131,198, 83, 27, 78,188,216, 6, 39, 71, 55,205, 68, 72,192, 81,224,178,222,196,114,117,117, 0,173,181, -105, 4, 17,133, 69,173, 56, 96,211, 38, 34,210,170,174,202,194, 78,120,126,186, 74,132,179,217,180,239, 11,153,233, 80,129, 93, -205, 71,249,138,198, 47, 28, 49,125, 0, 46,185, 7, 87,162,113,126,134,112, 19, 6,222, 38, 10,179,194,192,231, 88,173, 34, 96, - 74, 77, 84,227,104,173, 34, 34,210, 84,172,161,143, 59, 82,180,117,135,244, 87, 77, 1,157, 24, 17, 36,212, 39,213, 74,148, 72, - 8, 70,235, 45, 69,105, 98, 72, 10, 34,160,230, 53, 23, 66, 76,146,140, 73,163, 48, 18,209, 69, 74, 41,170, 22,229, 24, 1,134, - 76,235,253,166,153, 23,178, 17,219, 11, 8, 96,133, 25,145,192,107,104, 30,177,213, 15, 82,123,144, 57, 35, 96,229,228,190,246, - 56, 58, 2, 34, 51, 26,185, 87,136,162, 26, 48,114, 5, 39, 13,108,204, 47,118,167, 30,228,130,241,237, 30,112,190, 17, 98, 9, - 99,187,196,104, 57,247,200,227,164,212, 52,173,156,158,247,151,183,167, 2, 99, 27,153,227,218,239,131, 0, 96, 40,145,190,131, -240,138,174, 51,169, 15,145, 8, 16,107, 85,164, 4, 96,241, 19, 2, 8,204,102, 3, 17,106, 29,101,122, 30, 59,139,226,151,195, -104,160,140,175,129,191, 40,175,124,152,140,202,195,162,207,101,103, 99,235,251,111,255,253,123,159,124,244,229,183,190, 89, 42, - 53,210,160, 87, 7, 3, 78,216,180,132, 6,188, 1,230,117,117, 65,210,154,241,219,127,245,103,117, 24,190,246,205, 95, 17, 73, -101,121, 65,169, 67, 53, 36,196, 90,250,229,162,217,220, 41,231,231,142,242,155,255,228,191,252,147,255,248,215,247,246, 15, 4, -169,107,186,231, 94,120,238,219,223,254,149,107,143, 60, 74, 8,121, 24,212,252,236,248,248,231, 63,253,241,225,254, 97,173,182, -183,189,117,105,119,103, 99, 99,179,152,158,156,158,156, 47, 78,115,191,186,127,116,188,127,124,122,101,119,251,217, 71, 30,191, -121,112,255,177, 71,175, 60,242,200,229,163,147,147,253, 59,119, 78,151,139,207,110,223,187,127,120,152,107, 57,154, 47,122, 85, - 66,220,217,152,136,240, 70, 55,121,252,250, 83,117,181,186, 40,250,246, 79,127, 74, 77,123,253,209,195,103,158,126,225, 15,254, -246,255,251,222,247,127,148,152,209,109, 99,218, 93,217,217,218,106, 91,132,170, 73,118,184,217,156, 78,185,109, 4, 73, 68,184, -149,146, 43, 34,153, 89,173, 53,110, 63,193,185,141,135, 83,205, 69, 82,120,183,137,201,181,142,159, 31,128,212, 80,233,189, 90, - 13,196, 41,160,165,134, 45, 91,223,231,168, 91,226, 16,102,208, 9,172, 47,165,225, 20,142,238,212,140, 98,111,173, 35,230,133, - 57, 5, 14,101,194,162,224, 21,148,132,208, 88,189, 70,147, 92, 34, 46, 57, 27, 0, 75,195,113, 50, 10, 43, 80, 39,104, 70,134, -149, 41,153, 23, 38, 49, 53,103,168,150,107, 44,105, 29,137,164, 12,153, 25,153, 83, 76, 0, 44,109, 41, 61, 16,136,176, 35, 10, -167,162, 67, 0,187,172, 26, 39,214, 90, 17, 80, 72,220,172,145, 6, 16, 86,195, 50, 81,130,128,224, 56, 17,170,106, 45,181, 0, -142, 0,250,170,165,102,107,187, 41,144,106,209,212, 54, 96, 0,234, 96,174,164, 12, 72,137,205, 42, 98,138,200,126, 44,129, 97, -244, 60, 56, 17, 22,211,177,155,211,220, 67,107, 2, 43,171, 33,132, 32,115,147,212, 2,146,106,169,165,162, 41, 50, 17,115, 55, -219,204,253,146,169, 85, 83,135,202,132,230,238, 9,192,200,172, 48,146,113, 48,138,141,132, 72, 82, 89,245, 0, 54,246, 72, 69, -114, 7, 89,132,242,144, 29, 92,213,164, 33, 6, 6, 83, 13,142, 46, 32, 33,230,220,143,167, 30,162, 36,177,234, 8,128, 99,250, -193, 57, 53,106, 21,192,220,106,100,233,205, 76,173, 74,106, 29,176,150,149,128, 51,146,130, 55, 77, 34, 4, 51,173,106, 77,106, - 88,176, 20, 11, 93,187, 2,152,218, 80, 74, 45,101, 99,214,154, 65,211,165, 50, 12, 57,175,144, 18, 39, 17, 33, 38, 30,138,145, - 16, 53,108, 10, 94, 43, 0, 66, 29,101, 20,205, 67, 74, 41,218, 80, 29, 42, 19, 7,235, 66,171, 34, 25,161, 32, 73, 4,223,250, - 85, 38, 66,100, 39, 0,115, 71, 97, 83, 5,168,132,194,141,128,197,248,111, 81, 33,195,210,228,190,215, 90,153,176,145, 68,212, -104,169,200, 24, 31,110, 48, 21, 38,117,119,245,229, 34,167,196, 28,101,232,165, 38, 35, 2, 52,192,162, 86, 75, 77,232, 73,146, -180,205, 76,107,209,162,160, 0,232,230, 69,181, 0,130,161, 71,210,223,213,144,216, 29, 92, 67,162, 9,127, 97,180,106, 27, 0, - 27, 56,184, 11, 35, 84, 11,223, 77,200, 44, 10, 42, 81,105, 98, 17,195,117, 7, 69, 55, 7, 35, 88,163, 16, 70,131, 74,176,175, - 33, 98,213,244,208, 98,233, 1, 70, 24,131,173,104,225, 34, 10,189,196,247,182, 55,206,151,231,182,211,185,133,219,199, 9, 5, -240, 23,150, 27, 87, 95, 59,103,128,208, 13,100,220,210, 91,133,177,100,210,136, 25, 80, 71,211,141, 43, 97,227,107,169,101, 77, - 56,160,241, 74,176,126,111,174,191, 97, 0, 89,127,107,241,174, 26,213, 38, 71, 18,173,168, 17,210, 51,253,163, 63,254,195, 47, -190,250, 58, 8,115, 74,142, 9,149,205, 12,189, 20,179,201,116,230,224, 66,219, 55, 62,122,111,255,254,189,235,207,191,240,196, - 83, 79,215,162,165, 95,185,129, 14, 25, 72, 40, 81,189,152,179, 32, 49,152, 82,233, 87,219, 59,151,126,231,159,254, 23,255,233, -239,127,248,230, 87,223,184,254,216,227,109,215,230,161,191, 56,155,207,207,230,251,119,247,143, 79,142, 8,113, 50,153, 92,127, -244, 49, 64, 27,114,206,197,110,124,126, 59,123,153, 54,147,249,252,226,228,124,126,122,122,118,105,107, 99, 99,210,126,124,251, -198,201,249,197,207,223,253,120,181,234,239,222,219, 31,114,190,125,120,120,112,124,154,115,237,179, 86,179,170,229,202,238,222, -238,172,123,229,197, 23, 95,121,225,249,159,188,253,125,106,102, 55,111,124,112,105,107,122,120,247,243,249,252,228,189, 15,222, -223,127,240,128, 29, 86, 67, 65,180, 69,174,183,142,206, 86,195, 80,114, 5,128, 54, 53, 41, 81, 43, 50,105, 91, 68,106, 19,109, -109,205,118,167,155,179, 73, 59,105,187,166,147,205,182,107, 82,211,181,210, 54,141, 8,139, 8, 57, 0,162,164, 89, 4,163,135, -146,133,152, 69, 76, 77, 26,106, 82, 91,135,106,102,170,149,141,137,169, 75,173,169, 18, 2,160, 27,120, 85, 11, 16,149, 51, 8, - 18, 33, 41, 56,141, 67,125, 33, 70, 6,209, 40, 58, 0, 85, 15, 34, 54, 33, 71, 10, 28,165,101, 85,173,230, 24,220,149, 32,243, - 73, 18, 22, 5,115, 71,119,101, 30, 45,131,238,192,169, 29,103, 5, 51,143,166, 62,115, 17, 98, 73,181,148, 53,203, 80, 83,211, - 50,113,213,194,130, 53, 15,210, 74,173,138, 65,136, 9,241,144, 9, 33, 26,227,208,204, 26, 78,238, 24,193, 22, 7,168, 53,243, -232, 88, 70, 52, 71,166, 20,211,171, 87,113, 6, 97,213, 12,174,224, 64, 34, 36,108,213,106, 9, 28, 13, 80,113, 7, 35, 73,234, -142, 86, 0,153, 72,192,189,145,209,255,102, 90,165,107, 77, 43, 0,178,164, 24,130, 9, 73, 75, 94,183,194,146, 51, 18,145,230, -218,251,185,170, 18, 37, 78, 9,133, 76,139, 52, 93, 85, 19, 80,173,108, 86, 37, 52, 88,136,147,174,144,144, 27,104,201,129, 90, - 0, 64, 7, 27, 86, 53, 30, 50, 18,212, 98, 72,142,136, 66, 9,192,204, 93,205, 24, 17, 16,152,211,184,154,116, 37, 98, 87, 19, - 22, 7, 41,185,231, 17,233, 28, 40,158, 74, 76, 76, 77,205, 3, 34, 54, 50, 81,203,177,215, 41,125,102,102, 7,107,186, 9,142, -107,210, 56, 40,136,193,156, 64,213, 17,112, 58,155,177, 72, 46, 37,151,234,234,142, 67, 2,103, 17, 16,105,153,209,173,214,177, - 85, 6, 28,168, 33, 51, 23, 7,132,198,180,162, 1, 73, 67,216, 1, 90, 52,127,177, 16, 2, 25, 56, 81, 2, 80, 51, 77,141,132, -158,150,173,146, 27, 99,147, 36,185,179,154, 98, 44, 37, 29,204, 99,147, 64, 53,103, 34,108,155, 38, 18, 12, 6, 70, 66,148, 4, - 12, 29,171,116,162, 69,189, 42, 50, 8,138,187,155, 43, 50,183, 56, 54,183,212, 92, 0, 52, 58,138, 77, 85,158,127,233,139, 49, -128,214, 90,115, 63,148, 92,106, 41,170,165,148, 92,251, 85,169,131, 87, 51, 0, 43,213, 64,209, 13,121,196, 82,155, 27, 97,194, -113,150,135, 90, 43,140,146,134,173, 93,227, 15,115,168,241, 87, 15,101,196,127, 65,240, 12, 49,159,201,109,148,155,198, 98,176, -181,168, 2,107, 18, 24, 34, 35, 4,218, 24,209, 13,192, 85,117, 58,157, 29,205, 23, 90,214,134,122, 28,215, 79, 65, 58,136,216, - 42, 33,129, 58, 80, 88,100,195, 92, 83,215,139,211, 49,180, 69,107,193, 63,136,106,176, 86,104,104, 4, 20,143, 71, 58, 50, 6, - 16, 58, 62, 31, 64, 15,143,246,177,136,112,252, 62,205, 67, 69, 13,119,125, 59,105,126,252,179,159,124,244,254,135, 47,190,246, -138,170,134,198,136, 68,166, 5,212,164,225,249,233,201, 79,254,230,111, 55,246,118,191,244,141, 95, 78,238,171,179,211,104, 72, -112, 85,119, 69,200,165,100, 17,105, 54,102,104,104,208,148,213,241,173,179,249, 19, 79, 61,253, 95, 95,191,174, 53, 95, 92, 28, -223,189,117,118,231,222,189,179,243, 83,102,222,217,220,122,226,250,163,181,148,210,231,213, 48,148, 82,220,225,236,236,220,172, -108,110,110, 30, 60, 56, 57,189, 56, 3,180,199,175, 93,117, 45,203,229,176, 88, 13,181,232,207, 62,249,236,211,187,247,192,245, -228,108,185, 26,250,234, 6,136, 67, 46, 69,117,119,115,250,252, 19,143,254,250, 91,223, 48,215, 63,252,139,191,184,115,255, 96, -107,218,117, 93,218,156, 77,143, 78, 47,206,238, 30, 77,218,201,238,246,206,238,214, 38,137,144, 27, 34, 95, 12,139,154,181, 77, -120,239,224,193,253,163,163,249,225,121, 45,198,204,204,152,171, 51,115,236, 81,188, 22, 18,153,117,147,157,205,141,182, 21,116, -108,147, 8, 11, 19,150,154,103, 93,218,152, 78,183, 55, 54, 68,210,172,107,187,166,153,164,102, 99, 99, 42, 73,186,212, 36,102, - 0,157,205,218, 36, 9,220, 9,176, 84, 37, 34, 5,155,177, 88,227, 53, 2, 65, 66, 90,149,147,196, 11, 33,168, 2, 85, 51,136, -112, 43,230, 30,233, 18,116,140, 18, 6, 83,215, 26,133, 54,192,136, 85, 29, 67,114, 36,140, 53,146,185, 17, 71,135, 42,131, 83, - 84,210,128,121,146, 86,107,213, 92, 35, 10,231,110,181, 14, 0, 20,254, 28, 73,162,213,134, 50, 8,203,136,210, 5,110, 90,169, -121,136,207,161,130, 53,212, 72, 74, 37, 15, 62, 82,180, 13, 64,145, 24, 29,212, 44, 49,219, 24, 32,119, 36,134, 17,231,181,214, - 34,221, 8,152,154,228,163,157, 6,184, 73, 16, 88, 47, 0,108, 88, 48, 57,130, 85,167,212,152, 6, 48,155, 76, 21, 12,144,145, - 83,170,181, 82,164,100, 34,135,133, 80, 45, 71,215,105,192,206,195,153, 67, 8,110,150,186, 41, 2,154, 22, 8, 72, 21,113,215, -205, 74, 94,152,214,168, 45,140, 76,144,155, 70, 39,137, 99,212,199,178, 59,152, 42, 10,135,247, 27,192,139, 2,163, 17, 38, 78, -141,105, 5,144,128, 77,114, 98,175,106, 86,163,157,139, 92, 66,251, 86, 85, 36,105, 83, 91,204, 92,115, 69, 68, 64,110,164,230, - 2,164, 35,194,193,170, 72, 51, 86, 86,116,100,230, 4, 0,106, 49, 74,131,141, 11, 19, 74, 92, 11, 46,135, 60,153,118,196, 98, -165,138, 72, 55,221,208, 90,180, 22, 34,138,178,173,209,191, 29, 71, 10,160,131, 49, 75,106,154, 90, 84, 61,139,180, 99,120,134, - 92, 13, 8,128, 36,153, 41,154,163, 33,196, 20, 12, 72,196,238,166,213,226, 92,114, 55,230,102,180,145,140,150,190,128,192,155, -123, 37, 4, 64,113, 48,208,104,126, 15, 58,122,136,251,168, 86, 36,177, 9, 91, 13,111,186,167,196,136, 46, 13,175,114, 65,128, -166,229, 92, 0,212,184,109, 72,146,148,190, 71,196, 48, 73,182,147, 73, 59,153,136, 8,186, 19, 55,234,213, 76,221, 76,115, 46, -165,104, 85,211, 90, 74, 63,244,189,230, 82, 85,193,172,106, 14,111,127,104,169,130, 52, 22, 56, 49, 97, 20, 41,185,174,151,147, - 99,248, 8, 8,176,174,167,222,120,105, 5, 78,224, 97, 95,107,124,144,199,227, 30, 44,124,174, 15,209,146,136, 8,100, 96, 41, - 53, 66, 56, 20,237,228,161,213,249, 63,171,133, 93, 83, 35, 1, 97,148,197,226,205, 97,190, 62,203, 97,205, 31, 91,131,142,185, - 13,214,252,152,243, 34, 10, 35,255, 24,173, 10,176, 2, 18,162, 3, 18, 38,198, 17,134,231,161,239, 7, 9,219,208, 1, 35,169, - 28, 11, 51,236,151, 23, 63,248,187,191,125,237, 43, 95,174, 96, 81, 95,141,224,169,109,155,201,244,198,123,239,220,185,183,255, -204, 43,175, 62,249,228,147,203,243, 51, 19,241, 90,195, 52, 93,115,145, 36, 0,134,102,204,105,113,252, 96,217, 15, 23,231, 23, -203,229, 69,173,195,176, 92,172, 46, 46,142, 78, 79, 30, 28, 28, 56,241,164,229, 39, 30,121, 12, 25,207,207, 47,110,124,246,249, - 80, 74,155,186, 73,219, 21, 47,171,161,175,185, 18,226,157,187,251,139, 97,213,164, 6,193, 46,150,139,156,243, 80,235,197,197, - 2, 9, 29,253,238,225,225,249,114, 5,170,210,180,136, 56,228,204,196,207, 62,118,237,219,191,244, 75,175,188,250,210, 79,223, -123,247, 47,190,255,195, 73,211, 60,249,216,181, 85,191, 90, 12,185,150,178, 24, 74,147,146,179,173,114,110,134,161, 3,106,155, - 36, 41, 61,190,189,253, 91,223,254,181,203,215,246, 78,230,243,227,227,147, 59,119,110,223,184,125,251,147, 79,111,222,222,223, - 63, 60, 57, 46,181, 32, 51, 17, 80,147,200, 33,215,210, 15,153, 9, 75,181,243,101, 31, 90,225,233,252,236, 98,121, 65,196,166, - 33,125,114, 4, 56, 5,145,164,233,186, 38,178,152, 91, 27,147,173,110, 54,219,156,109,180,237,183,222,120,237,240,228,116, 53, - 12, 91,211,105, 74,178, 57,105, 38,237,164,235, 82,155, 38,169, 17, 55,155, 78, 59, 84, 67, 4, 16, 70,100,105,147,153, 34,177, -154, 25,152,232, 88,122, 97,166,220, 72, 89, 21,115, 37, 6,240,128,162,147, 72,170, 70,224, 33,248,166,152,185, 41,184, 29, 14, - 35,178,152,215,225, 14, 32, 98,176,226, 76, 8, 72,209,155,220, 74, 11,104,106, 26,254, 50,205, 25, 29, 36,226,175, 41,129,213, - 90,162, 69, 36, 62,125,238, 30, 84,175, 96, 6,176,219,202, 45,198, 90, 95,251,236, 24, 76,181, 22, 98,193, 36,196,108, 81, 50, - 36, 12,234,128,100, 99,114, 10,129,162,167,201, 3,230, 26, 91, 59,100, 66, 38,247,234, 52,186,106,192, 45,165,182,170, 89, 45, -140, 98,236,235, 66,168, 74,146,192, 76,189, 48, 8, 19,154, 42, 33,214,192, 1,161,153, 85, 55, 48, 53,105, 88,107, 24, 5, 28, -169, 25, 99,234, 68, 96,110, 90,221,141, 72, 70,150, 36, 56, 56, 8, 51, 97, 32, 13,138,199,254, 24,169,154,215, 92, 17, 32,234, - 73, 35, 1, 91, 75, 25, 87,166,142, 70, 88,203,192,194, 66, 92,139,154, 58,142,250, 59, 68, 39, 53, 50,150, 33,147, 8, 73,242, - 90,215, 16,115,116, 87,100, 65,115, 39,247, 98, 86, 10,106,157,237,204,136,208,133,165,105, 4, 1,188,211, 82,113,108,161, 35, - 18, 2, 7,171, 21, 41, 90,168, 84,139, 58, 16,197,250, 20,220, 61,254, 53, 36,165,132,145,234, 36, 50,116,102, 96,230,192,166, - 68,201,248,195, 96,188,155, 81,114,141,109, 31, 32, 2,168, 43,250,152,119,171,181, 56, 20, 73, 18,160,133,152,122,205,193, 74, - 54, 55,102, 18,105, 74,205,106,228,101,144,148, 88,194,254,103,179, 46,229,234,165, 90,178,209, 48, 72,140, 98,174, 96, 0, 70, - 22,160, 32,183,154, 87,163,165, 36,162,161,238,224,214,116, 13, 1, 34, 75,212, 27, 50, 97, 28,253,165,170,213,226, 14,166,181, -207,189,230,161,230, 65,107,181, 90,220,172,154, 58,160,154,153, 42,129, 59, 26,154, 99,133, 49,164,236,192, 97, 52, 35, 10, 36, - 12, 90, 88, 38, 97,108,225, 70, 3, 70,176, 64,163, 25,140,180,248, 0, 1,163,153,111,204, 38,171,213,176,185,179, 89,204,226, - 37, 77, 35,170, 56, 16, 13,177,109, 29, 35,240,227,218,150,113,172,238,140, 86, 88,116, 64,142, 94, 41, 8, 94, 52, 19, 1,142, -246,208,181,220, 14, 64,163,159, 34,202,124,195,203,131,232, 14,107,224, 38,172,113,199, 0,232,203, 97,136,156,177, 0, 22,245, - 31,188,253,131,127,117,250,175,186,157, 77, 7, 35,110, 26,225,195,187,159,127,246,233, 71,147,141,205, 47,127,237,173,174,235, - 22,167, 39, 86,171, 13, 3, 0, 1,168, 3, 74,211, 89, 93, 20,133,249,217,124, 56,188, 55,172,250, 82,134,213, 98,113,118, 62, -191, 56, 61,157,207, 79,139,218,164,107,175, 92,190,140, 4,170,245,116, 62,159,159, 95, 32, 35,177, 96, 41,139,213,226,162, 95, -170,217,172, 73, 2, 56, 95, 46, 87,253,144,146,212, 50, 20,171,203,126,232, 75, 95, 7,173,166,125,214, 50,148, 86,100,144,116, - 81,181, 12,131,185, 38, 78,111,190,254,242, 63,250,198, 55,180,234,191,255,127,255,248,246,189,131,221,173, 13, 55, 59, 61,157, - 23, 13,131, 44, 18, 39, 10, 63,138, 21, 53, 85,203, 6,178,181,181,241,204, 19, 79, 60,251,202,203,195,106,117,117,178,121,229, -234,181, 47,126,241, 85,116, 88,173,250,197,114,113,116,112,112,227,246,173, 27,183,239,220,190,119,247,222,225,131,227,227,227, -197,106,121,120, 90,212,183,103,147, 86, 53,154, 33,237,234,222,222,238,214,118, 13,158,150,163,187,199, 3, 96,227,143, 3,181, -150,172,182,127,122,113,223,206, 1, 96, 40,195,123, 55,110, 62,249,232,181, 62,235,193,241, 17, 1, 21, 45, 79, 60,122,141,185, -121,252,209, 43,119,246, 15, 54,187, 9, 9,147,249,149, 75,123,187,155,155,171, 60,212, 90,246, 54, 55,173,234,149,189,157, 39, -159,121,250,238,189, 59,109,162, 68,169,235, 26, 95,228,174,105, 22,171, 94,132,164, 21, 55,151, 10,106, 14,204,140,206,220,196, -124,106,224, 34, 98,213,170, 22,146,212,181,157, 22,205,117, 72,146,226,129,228, 54, 60,214,182,174,196, 86,171,198,200, 0,110, - 90,152, 5,220,212, 61, 17,155,170,131, 16, 33,141,142, 3,141, 6, 98, 85,117,196,148, 82,201,217, 12,152,192,221,117, 24, 72, -146,164,228,128, 30,244, 62,137,233,216,153, 57, 80,195, 99, 80,145, 24,220,198,162,231,104,221, 28, 7, 82,160, 64,145,128, 3, - 10,131,122,196,109,137,107,201, 99,114, 11, 9,205,220,149,144, 29,220,180, 4, 98, 13,193,181,102, 4,182, 90,193, 85,173,178, -115,209,194,136,204,108,165,186, 25, 16, 42, 0,212, 66, 97, 75, 26, 71,166,136,161,208, 67,130, 43,115,227,154,145, 4,221,106, - 29, 88, 24, 3, 36,101, 22, 36, 18, 85,103, 38, 11,114,253,218, 52, 61,244, 67, 59,105,155,166, 45,181, 90, 29, 48, 76,248, 20, - 92, 9, 52,176,126, 88, 74, 98, 78, 9, 0,192,108,236,248, 54,141, 71, 83,107,198,232, 83, 74,124,124,118,214, 8, 3, 74,248, -205,227,125,207, 44, 96,182,206,145, 49, 16,187, 43,155, 59,130,105,245,209,240, 18, 48, 34, 55, 51,135, 32,214,248,136, 41,209, - 66,196,204, 73,107, 46, 85, 17,129, 80,204,148, 0,140,208, 29,129,200,212,106, 45,140, 41,145,152,214,154, 51,162,248, 26,132, -192, 34, 97, 86,196, 64,246, 2,153,106,213,129,152,192,149, 82, 42,185,119, 0, 17, 80,104,204,173, 12,125, 74, 18, 81, 43, 33, -160,182, 27, 44,175,134,218,138,145,131,132,192, 23,193,128,177,240, 59,150,157,232,230, 26,246, 18,119, 67, 27,170,141,101,181, - 52,182, 16, 90,224, 43,145,136, 88, 18, 54,221,198, 38, 5, 69,127,189,193,116, 55,118,175,102,181,214, 50, 12,185,228, 50,172, -180, 86,211,193,114, 45, 57,107,201, 10, 54,198,180, 1,192,156,156, 35, 21, 54, 38, 82, 21,199,177,127,125, 80,131,187,199,226, -215,124, 50,153, 28, 28,157,227,165, 45,171, 46, 65, 11, 28,181,115, 27, 15, 98, 68, 24,233,170, 33,237,216,232,197, 9,194,153, -173,149, 34, 20,240, 2, 80, 1, 24,220, 29, 12, 92,109,204,127, 68,138, 35, 60, 53,145,169,227, 17,182,233, 81, 49,192, 35,152, - 15,195, 70, 3,140, 82,150,197, 29, 86,171, 30, 85,133,233,163, 79, 63,253,228,147,143, 95,255,250, 55,200, 21, 9,223,255,233, -143, 15, 30, 60,248,202,155,111, 78,164, 1,180,254,124,142,141,128,154,235, 8, 58, 94, 44, 22, 67,238, 47,206, 78,135,146,107, -206,181,174,206,206,207,206,142,143, 79, 78,230,253,144,119,182, 54, 54, 54, 55, 16, 89, 77, 79,207,206,136,168,239,135,163,249, - 92,107, 37,132,170,134, 14,155, 27,179, 54,165,101,223,247, 67, 31, 35,149,153, 45, 86,139,146,107,174, 86, 53,247,185,150,161, - 42,128, 59,110, 76,166, 0, 70,140,102,245,108,217,239,110, 78,255,217,111,124,251,235, 95,254,210, 95,254,224,239,126,240,211, -119, 39, 73,182,167,141,106, 77,156,218,214,173, 55, 38, 94,213, 60, 63, 61,109, 83, 55,157, 77,166, 77,199,200,228,240,143,127, -245,155,175,188,246,218,135,239,191,255,231,127,250,231,223,250,198,215,185,105,157,218,176, 33,119, 93,211,108,109,237, 94,123, -244,133,215,190,164, 57,151,161, 88,233, 79, 78,142,246, 31, 28,125,114,243,198,167, 55,111,206,231,103,135, 39,199,165,106, 86, - 95, 13, 43,150, 70,213,194,182, 10, 0, 9,132, 29, 29,161, 2,160, 90, 67,105,146,204, 9, 29,148,144,114,209,171,151,246,174, -238,237,221, 62,124,112,105,103,235,124,209,159,247,203,243,139,197, 75,207, 62,178,127,114,250,224,248, 84,246,232,108,185,154, - 76, 59, 96,190,119,116,122,112,124,178,179, 53,219,111,231,199, 23,231, 47, 61,251,156,109,236,189,253,225,231,215,175, 93,185, - 88, 92, 44,251,188, 49,233,174, 92,185,122,251,238,157, 47,189,242,250, 79,127,248,246,119,191,243,143,101, 58,123,251,135,127, -251,232,149,171,139,197,249,233,233,241,230,198,108,182, 49,219,221,221, 61,190,125,111,210,166,134,155, 33, 95, 8, 49,129,182, -157, 44,115,105,186, 54, 53, 45, 58,154,105,215, 54,196,141,150,129,128,141,130, 75, 88,221,136,133,132, 91, 32, 46, 90, 9,219, -152, 13, 16, 1, 18,168, 35,170, 23, 29,218, 36,102,238, 86, 5, 81, 36,133,155,218, 16,192,212,140, 73, 18, 24,132,237, 7,209, - 72,196,171, 33,130,213, 10, 52,138,215,113,109, 37, 34,228, 78,203,224,106,241,104, 89,213,160,112,122, 85, 5,236,186,182,214, - 90,243, 64,192,163,149, 69,141,136, 84,107, 25, 6, 22, 9, 41, 57, 50,165, 90,134,181,113, 46,110, 9,134,132,165, 86, 66, 71, - 73,150,123, 11, 51, 62, 2, 32,153,214, 90,140,153, 82,219,105,173,170,133, 37,133,175, 84,107, 54,112,180,140, 44,210,164, 40, - 57,138,193, 43,166,254,224, 72,233,156,219, 26, 0, 0, 32, 0, 73, 68, 65, 84,133,233,152,152, 53,103, 32, 22, 17, 80, 11,215, -149, 34,169, 41, 33, 9,139,145,187, 86, 68, 76,169,197,113, 26,180,113,235, 7, 72, 17, 60, 52, 35,247,106, 74, 12,125,159,117, - 40,219,151, 55, 37, 73, 28,205, 64, 80,173, 2, 56, 38,178, 18,184,220, 42, 72,134, 28,187,220,162,133, 89, 26, 78,202,100,181, - 34, 11,161, 89, 53, 22, 10, 68, 0,115,131, 86,221, 1, 93,163, 58,216, 0, 9,141,153,204,153,161,230,108, 8, 22,145,218,120, - 81, 40, 56,113,170,185, 2, 21, 73, 45, 50,107, 41, 94, 12, 19,163, 48, 40, 14,195,146, 17, 36, 62, 9,192,195,144,187,148,152, - 83,113, 64, 44, 8,216, 54,109, 45, 57,181, 32, 44,125, 45,224, 74,140,109,203,236, 96,232,226,213, 65,226,216,212, 16,166,208, - 53,142,170, 48,144, 68, 49,182,141, 53, 29, 10,228,166, 10,117,237,128,113, 65,116,240, 98, 0, 64,181,198,225, 88, 66,238, 70, - 7,175,196, 72, 36,194, 34,211, 13,218,164, 20,133, 35, 20,149, 42,100, 86, 85,173,214, 33,247,117, 24, 74, 30,180,150, 90,122, -143,134,222, 18,192, 97, 13, 42,119, 20, 60,185, 58,198,112, 33,208,166,164, 94,212,108, 76,178,142, 70,228,112, 51,249,136, 18, - 24, 13,240, 52,118, 8, 96,152, 38,215,172,165,209, 15, 90, 28, 8,185,129,135,238, 71,100, 32, 71, 32,183, 53, 61,222, 0,216, - 31,238, 87,221, 28,201, 0,162,154, 61, 2,183,113, 71, 32, 97,186, 24, 6, 7, 44,166,137, 1, 28, 79,231,167,111,191,243,206, -215,190,245,107,251, 55, 63,122,239,103, 63,121,244,133,151,126,237,107,223, 40,139,179,160, 83,133, 15,167, 2, 13,253,217,176, - 90,158,206,231,125,127,166,181,230,210,247, 23,203,131,195,195,179,211, 19, 53, 19,226,217,180,219,221,222, 58, 95, 44,206, 46, - 46,134,156, 81,104,185,232, 1,177,148, 92,138, 10, 97, 85,101, 39, 39,152,159,159,153, 66, 95,135,212,200,106, 81,138, 14,136, -144,171,230, 82,251,126,229,238,132,220, 53,201,209, 64, 73,205, 23, 57,151, 82, 55,167,211,173,217,198,191,254,157,223, 22,145, -127,243,187,191,183,127,116,114,101,123,163,235, 58, 48,175, 0,125, 89,185, 66, 35, 92,171,158, 45, 87,125, 85,135, 85, 62, 43, - 85,203,206,214,214,211,207, 61,251,230, 91,223,152, 47, 46, 14, 31, 28,252,251,255,240,167,119, 63,255,232, 87,191,254, 38,138, - 76,102, 51,105, 38,210, 52,148, 90, 8, 12, 54, 49, 78, 0,133,119,155,102,107,119,247, 11,207, 63, 83,243,176,184, 88, 60, 56, - 58,186, 88,245, 7, 15,142, 62,187,125,251,104,126,122, 58, 95,158,157,157,247,154,221, 76, 1,138, 3,133, 24, 70, 96,104,163, - 71,203,161,168,182,109,218,221,218,120,231,163, 79, 78,206,231,215,175, 94,158,116,205,197, 82, 16,113,209,175, 46, 79, 55,210, - 53,155,159,175, 38, 73, 38, 41, 61, 56, 58, 25,106, 73, 68,179,182,237,186,118, 27,116, 54,153,246,203,197,222,230,198,238,206, -238,189,251, 7,243,179,211,188,177, 49,153,164, 95,122,227,141,157,237,157,179,229,208,204, 54, 72,228,124,185,252,202, 19,207, -124,246,249,173, 71, 54,175,252,232,157, 31, 62,255,220,243,203, 7,139,110,114,249,246,252,248,246,254,205,169,208,116, 50, 77, -132,119, 15,238,223,188,115,239,171,175,189,122,126,190,186,125,231, 86,206, 37,161, 23,173, 93,203,151,247,246, 74, 41,146,248, -137, 71, 30,235,251,126, 54,237,134,161, 76,154, 52,155,204,134,146,187, 36,192, 16, 81, 47,225, 8,204,114,211, 36,112, 3, 39, - 17, 17, 18, 73,104,209, 55,210, 38, 70, 79,146,204,171,153, 59, 37, 66, 5, 39, 7, 51, 36,110, 91,118, 51, 36, 80, 67,102, 78, -140, 62,154,193, 36, 37,117,117,115,226,240,173, 25,119,169, 33, 41,195, 10,137,154,212,198,131,230, 86,153,217,170,130, 89, 44, -188,221, 50, 74,243,208, 7, 1, 35, 84,145, 68,200,234,160,117, 64, 68,112,170,154,213,141,129,147,164,161,244,160, 78, 4,105, -210,128,106,173, 5, 64, 1,193, 44,131,114, 56,193, 67,135,119, 85, 0,112, 83, 64, 12,248, 68, 48, 69,220,157, 24, 64, 45,108, -207, 20, 12,100,166,156,115,211,180,210,180,154,135, 38, 37,119,182,170,142, 64, 36,128,145,119, 52, 7, 67, 48, 7, 25,137, 17, -174,137, 88, 17, 28, 7, 68, 5,240, 82,234,116,163,107,155, 4,232,169,105,114, 45, 86, 43, 34,170, 58,147,112, 44, 60, 66,197, -133,192,120, 1,147, 56,162,186,161,186, 52,173, 87,231,132,133,212,189,132,234,140,166, 65, 64, 7, 51, 74,226, 72,110,198, 76, -106,174, 86,132,160,105, 91, 0,176, 97, 53, 44,151,156, 82,106, 90,228, 52,228, 21,145, 19, 75, 81, 69, 45,194, 2,146,114,173, - 80,178,176, 76,103, 83,173,170, 86, 71, 95,164, 76, 12,160,239, 87, 73, 18, 98, 42,121,193, 84, 83,219, 58, 72, 41, 78,212,149, - 90,130,100,192, 68, 66, 36,200, 15,149,104, 7, 20, 48,245,135,206,145,135,181,123,107,178,155,155,129,198,114, 39, 78, 65, 6, - 87, 64, 6, 96, 7, 5, 29,157,145,224,230, 78,227,230,209, 52,122,146, 12,160,232,216, 66, 6, 24,245,128,107,166, 41, 96,215, -117, 56,153, 18,163, 5,178,193,157, 88,162,160,178,106,177, 92, 29,205, 21,204,180,150,236, 86, 75,201, 94, 85, 8, 55,218,249, -241,121,217,219,238,106,169,228, 21,104, 52, 81,141, 32, 95,164, 72, 28, 88, 40, 52, 68, 96,250,208,235,136, 40, 49, 27, 4,177, -198,227,242, 56, 90,240, 1, 45, 10,159,214,252,122,242, 81,246, 9, 54, 1, 18, 0,143,221,130,161,195, 57, 2, 18, 40, 16,194, -209,233, 28,136,162, 16,109, 40,213,193,255,225,199, 63,252,251,191,250, 51,173,250,210,215,126,249,234,163,143,246,231,103, 44, -130,166,117,232,235, 48, 28, 31, 31,156,205,207, 75,205, 94, 75, 95,250,211,163,163,253,253,251,167,243, 51, 50, 69,132, 89, 55, -157, 78, 59,119, 80,176,229, 98,177, 92,173, 28,124,181, 26,250, 82,170,106,132, 58,152, 40,145, 52,137, 27, 73,185,234,233,249, - 42,151, 90,107,248,103, 74,159, 7, 65, 86,179,170,138,128,128,164,235,218, 29, 71, 0,194, 54,165, 36, 2, 0,139,101,249,155, - 31,189,115,235,206, 61,105,248,169, 71,174, 58, 88, 46, 85,107,117,128,134, 19, 11,157, 94, 44, 78, 47,206,231,231, 23, 96, 70, - 52,233,218, 68,140,231,231, 23,203,126,117,124,114,231,120,255,248,163, 27,159,170,219,247,126,240, 67,215,161,107,218,182,155, -110, 78,186,217,230,230,108,182,217,116,109,211, 77,164,153, 36, 34, 71,168, 69, 83, 18, 74, 73,102,219,151,247,174, 94,185,254, -108,208,123, 23,139,211,211,227, 7,103,243,249,249,114,113,124,122,126, 50, 63,189,187,127,176,127,120,112, 50, 63,159,159, 47, - 86,195, 16,102, 6, 34, 20, 66, 5,216,217,154,245,125,255,242,147, 79,252,228,147,194,196,231, 23,203, 73,215, 2,194, 59, 31, -124,212,117,237, 99,215, 46,221, 63, 62,126,225,250, 35,243,179, 51, 34,158, 78,187, 71,118, 47,165,212, 32,210,225,131,249,108, -186,127,229,145,171,169, 73, 31,125,250,105,159,135, 87, 95,124,201,192,102,147,233, 59,239,188,179,234, 87, 87, 47, 93,249,155, -191,254, 75, 98,254,226, 23,190,120,112,248,224,193,225,237,239,126,231,159,252,232,167,255,112,229,210,229,131,195,125, 16,154, -159,156,234,226,124,235,209,171, 64,124,240,224,240,244,252,236,210,246,246,209,241,131,195,163,211, 7,231,231,102,250,224,248, -184, 31,250,229,170,223,221,222,204,213,186,196, 79, 61,118,124, 60, 63, 39,180,161,212,105,219, 46,250,229,233,217, 34,137,172, -134, 92, 75, 77, 77,218,154,108, 72, 43, 58,244, 33,199,115, 20, 68,129, 73,168,233, 8,200,220, 16,110,109,206,158,189,118,245, -213,231,158,220,218,220, 89,174,150,253,144,103,211, 9, 49, 19, 19,152,165,182, 51,240,166,105,165, 17, 87, 71, 70,105, 91,243, - 18, 45,128,113, 21,230,148,180,170,185,166,110, 50, 10, 20,166,110,192, 41,130, 78, 70,208,154,107, 60, 6, 90,138, 36,126, 24, -207,113, 0,114,183, 90,130,152,170, 54,250,226,184,157,120,201, 37,103, 2, 6,114, 2, 46,185, 18,134,126,144, 70,137, 72,107, -208,204,214, 6,186,245,226,205, 33, 12, 75, 99,159, 56,146,149, 28,185,197, 40,218, 69,196, 90,115,128,119,208,176, 97, 86, 83, - 51, 85,197,166,235,162, 64, 17, 64,199, 0, 58, 10,140,252, 9, 20,150, 50, 12,106,185,107, 18, 81,215,231,162,117,216,218,222, - 72,221,164,148,218,151, 30,145,221,113,196, 31, 86,149,166, 35,193,218,231,234, 61, 73,135,140,128,104,177, 50,101, 64, 76, 33, -212,104, 52,114,137,128, 27, 40,170, 6, 97,155,137, 90,119, 99, 2, 3, 82, 53,112, 79,169, 33,130, 90,116,252,139,128,187,123, -233, 51, 9, 53,205,196, 74,113,247,134,152, 82, 91, 75, 41,117, 96, 32, 73, 98,192,170, 22,251,156, 72,194, 34, 20, 68, 22, 97, -119, 71, 52,105, 90, 85,131, 92,145,157,133,107,173, 86, 20, 29, 19, 19, 33, 22, 53, 65,166,208,155, 28, 0,172, 64,100,223,194, -230, 24, 51,240, 72, 88, 4,119,133, 95,132,145,194,102, 98, 16, 39, 56,140, 22,195,241,181, 64, 12, 81,186, 24,160,188,192, 25, -152,173, 49,193, 26, 77, 14,107,244,163, 35, 83,173, 53,102, 14, 0, 50, 83, 48, 55,202,128,136,152,132,176, 50,184,147,116,226, -128, 72,179,177,140,201,141,185,109, 38,147,159,126,112,235,213,175,126,109,113,177, 48,112,203,189, 85, 85,203,154,135,210,247, -181,100, 0, 19, 50, 64, 51, 48, 25, 17, 9, 50,178,229,162,214, 32,232, 73, 97,109, 5,113,138, 98,170,245, 43, 15,126,241, 95, -252, 59,216,200,133,125,184, 50, 30, 29,247, 35,121,214,141,192, 79, 78,206,120,180,218, 35, 56, 60,255,212, 19,167, 15,238, 93, - 44,250, 95,254,245,239,128, 64, 93,245,228,214, 95,156, 31,239,223, 93, 44, 22,181,150, 0,233,205,231,199,251,119,239,223,190, -119,167,150,178,187, 57,187,180,189,113,126,177, 2,176,243,161, 63, 93, 92,212,172,171, 92,136,189,148,186, 28,134,139,190,103, -119, 97,158,181,237,246,198, 38,130, 45,242, 80,139,173,114, 1,192, 82,173,148, 50,228,108,102, 68, 44, 68,236,148,189, 14,165, -196, 85, 76,152, 8,193, 98,195,109, 30, 65, 26, 36,102,174,119,238,239, 95,222,221,102,225, 92,242, 48,244, 41,181, 10, 62,107, - 59,102, 62,156,159,206, 23, 11,114, 80,167,101, 30,178, 90, 63, 12,211,233, 36,165,230,232,108,254,246, 15,126,112,255, 96,255, -243,123,247,107,213,227,249,217,143, 63,252,120,115, 58,107,154,102,218, 72, 74, 77,155,154,174,105, 82,215,206,186,105, 59,233, -132,165, 77, 77,215,181,123,151,174, 76,183,119,152,144, 37,169,153,161, 78,118,118,155,205,221, 43,154,173,170,230, 98,150,135, -220,231,161,228, 90, 47,206,206, 30, 28, 61,120,255,131, 15, 63,188,241,217,253,227,147,249,233,217,157,163,211,221,205,238,210, -108,242,209,237,219,194,252,224,120,206, 66,132,124, 50,191,112,119, 54, 59,155, 47, 30,187,124, 25, 0, 87, 67,157, 77,105,185, -202,183,203,193,164,149,203,123, 87, 88,154,157,141,237, 27, 55,110,189,247,209,135, 72,244,230,235, 95,122,230,233, 39,127,246, -254,251,183,238,220, 33, 76,143, 62,114,117,107,107,123,218,117, 15,142,239, 63,114,237,218, 71,159,125,122,253,177,235,255,207, - 31,253,223,199, 71,199,111,255,248,199, 79, 94,127,236,230,231,183, 62,188,241,233,230,172,187,187,191, 63,100, 61,124,112,240, -204,147, 79, 31,159,156,214, 82, 14,143,142, 0,173,147,110,181, 88, 25,104, 67, 84,114,206,185,212,204, 31,124,250,153,153, 78, -186,201,252,226,172, 20,173,102,203,190,111,165,233,186,110,107, 58, 45,181, 63,187, 56,134,149,212,146,133,165, 58, 8, 64,106, -210, 48, 12, 85,161,152,149, 60,184, 99,174,165,109,154, 31,116,205,183,238, 61,247,221, 47,127,105,190, 92,204, 54, 54,171,121, -223, 47,206, 22, 11, 98,153,180,141,154,129,195,108,182,177,204,195,180,155,110,108, 76,151,171,213,162,239, 83, 74,109, 74, 53, -247,221,198,166, 48,159,207,143,118,246, 46, 15,181,182, 93,103,225, 15,145, 68,204, 73,152, 68,192,144, 4,145, 69, 80, 37, 53, - 0,206,206,132, 92, 74, 0, 59, 71,147, 18, 90, 5, 34,168, 0, 85,221, 1, 85,145,216,204, 44,176, 53,113,140, 36,118, 83, 48, -111,155,198, 0, 70,218,224, 72, 95, 96, 7, 2,140,122, 16,113, 48, 83, 29,245,237, 72,188, 85,101,137, 54,136, 20, 15,150,214, - 66,204,170, 70, 28, 9,217, 58,184, 11, 65,173,182, 46,229, 49,116, 16, 22,112,200,185, 34, 51, 83, 91,212, 5,188,212,218, 54, - 50,157,181, 81,141, 52, 26,170, 17, 0,176,149,100, 6,154, 51, 16,161, 16, 25,130, 87, 8,202,115, 84,129,153, 99, 82,143,118, - 44, 83, 38,113,163,172, 43, 92,211, 19,209, 65,181, 39, 17, 36, 70, 52, 64,115, 64,213,161, 86, 4, 64,105,146, 15,102,101,160, -196,200,168,102, 88,122,230,166,170,170,233,176, 28, 82,211, 72,106,188,230,154,141, 18, 72,211,169,107,201,185,230, 2,104, 66, -226,174,196, 52,198,175,156,204, 93, 29,200,209,139, 1, 82,234, 90, 53,143,157, 40, 50,202, 72, 63,136,130,150,136,178,121,112, - 41,200,205,224, 33,249,125,148, 71, 0,188, 6, 80, 96,173,148,217,216,176, 61, 46, 92,141, 56,208,125, 20,229, 50, 30, 12,224, -209,231,187,206,114, 59,186,186,167,117, 64,200,204,181,184, 81,192,139,163, 96,211, 52,194,202,189, 33,168,134,234,163, 36, 2, -186,134, 62, 58,152,214,233,230, 86, 62, 63, 92,156, 47, 82,195,230, 64,105, 19,132,113,108,216, 65,116,179,234, 53,247,181,244, -166, 89,139,106, 94, 2, 40,160,133, 99, 38, 72,162, 99,154,202,196,113,205, 42, 91, 55,241,132, 85,211,205,199, 18,171,168,131, - 51,115, 30, 91, 94, 99,250, 32, 32, 95,251,249, 9,113,208,138, 4, 85,157,219,230,169,203,151,207, 22,171, 79,238,220,126,231, -231,239,125,243, 55,190,187, 58, 62, 92,244,195,241,209,225, 48, 44,137, 5,220,206, 78,143,207,206, 78, 15,238,223, 63, 58,126, -144,136,175,238,237,116, 77,179, 28,134,251, 15, 14,207, 46,250,221,141,233,241,217,185, 35,182,152, 42, 20,234,177,175, 67,191, - 90, 78, 36,237,110,110,110,206,102,203,213,242,100,121, 94,171, 37, 22,215,186, 40,185,214,156, 75, 53,211,209, 99,140,100, 54, -148, 90,150,181, 38,145, 41, 19, 18,230, 92, 99, 29,109, 10,110, 54,105,154,148, 68, 16,183,102, 19,117, 85,179,154,181, 22,109, - 38,173,229,255,159,169, 55,137,213,237,202,242,188, 86,179,247, 62,231,124,221,237, 94, 99,251,249,217, 14,135, 35, 28,153, 17, -145, 81,217, 85,166,146, 84,137, 74,101, 22,133, 10, 21,205, 0, 81, 2,169, 70, 48, 5,166, 8, 49, 65, 2, 49, 99,134, 24, 33, - 33, 49,161,144,144, 16, 32, 64, 84, 86, 67,210,100, 86,146, 77,100, 56,108,135,237,112,243,186,251,222,237,191,238,156,179,247, - 94,107, 49, 88,231,123,193,200,122,178,116,223,125, 95,179,207, 94,107,253,215,239, 87,199, 49,155,194,205,118, 83, 74,110, 56, - 10,113, 74, 33, 75, 32, 83, 81,205,185,152,216,151,207, 94,252,233,143,127,186,222,111,247,125,189, 91,175,175,111,239,170, 72, - 19, 67,151,154,182, 75, 77,140, 41,134,196, 28, 98,219,117, 49, 16,119,169,157,207,219, 16,194,114, 62, 91, 45,143,186,182,107, -218,182,155,205,219,166,233,230,203,110,121,138, 12,200, 20,219, 96, 21, 83, 55, 43,227, 40, 82, 79,142,143,223,127,255,253,223, -254,173,223,178, 90,214,155,205,245,213,245,207,159,124,243,228,233,211,199,111, 60,248,159,255,233,255,217,153,174,183,251, 33, - 23, 68, 33, 14, 15, 78,142, 98, 72,132,118,188,152,221,237,134,152,210,213,205,221,124,214, 65,156, 29, 47,143,238, 54, 27, 12, -248,226,213,139,219, 77, 47,106, 15,142, 86,179,166,249,103, 63,254,139,113, 20, 17,184, 27,238, 30,234,217,106,222,189,251,222, -123,119,155,219,255,252,191,252, 47,126,248,253,239, 55, 33, 92,188, 58,255,224,157,119,126,254,244,201,243, 23,207,206,175, 47, -126,231, 71, 63,170, 21,126,252,217,199,215,119,235,191,254,203, 63, 56,154,119, 31,125,254,105,184,134,126,236, 31,221,191,255, -249,211,167, 71,171,197,237,102, 35,160, 49,240,110, 40, 38,163, 65,147,115, 30,171,250,224,169,230, 42,165, 12, 38, 90, 11,129, -152,106, 96,231, 12, 43, 25, 50,152, 77, 40,116,191, 30, 42, 51,155, 42, 35, 52,129,106,213,255,253,199,159, 44,186,217,119,223, - 56,189,188,236, 79,207,206, 56,196,161,148, 20, 56,196,174,101,188,189,219, 84,213,196,172,185,191,120,185,173,102, 72, 20, 48, -100, 25, 54,155, 53, 3,167,121,115,254,228,155, 89, 88,152,230,220,231,126, 63, 84,173, 20,163,230, 12, 28,251, 97,115,114,124, -116,183,222,206,151, 75,142, 17,192,218,166, 75,109,203,129,137,145,145,129, 57,132, 24,155, 16, 67,170, 57, 55, 33, 26,162, 26, - 85, 67, 66,170,248,154, 56, 66,126,209, 97, 68, 1,209,138, 10, 32,128, 60,249,123,194,148, 97, 59,100, 64, 85, 20, 32,168,228, - 24,210, 56,102, 83, 77, 93,227,132,119,142,193,106, 17, 51, 66, 0,228,212,132, 90, 51,130, 72,169,177,153,153, 8,135, 32, 34, - 6, 22, 8, 67,224, 81,114,192,160,102,100, 8,192, 76, 98, 0,185, 31,218, 38, 33, 69, 19,101,102,226, 48,214, 26, 16, 13,169, - 31,122, 63,168,136, 2,199,168, 42,110,228,133, 64, 80, 17,136, 76, 65,134, 66, 41, 17, 49, 77, 84, 89,233, 66, 91,106, 22,173, -136,172, 96, 33, 68,138, 92,107, 69,226,192,109,201,131,137,196,212, 1, 99, 41, 35, 33,197,121,151,115,149, 90, 66, 72,238,222, - 66, 4, 85, 9, 72, 12, 72, 49, 41, 70,169,123, 53, 45, 37,123, 96,187,141,177, 26, 90, 45,161, 11,164, 92,173,122,175,140,152, - 13, 48,247, 67, 72,129, 24, 69, 36,143,133, 65, 67,106, 17, 17,159,252,248,255, 5, 4,145,250,186, 51,193, 68,135,114,105, 58, -220, 14,250,107,157, 78,124, 32,183,151, 78, 83, 70, 15,190, 56,134,200,124,143, 60,170, 85, 83, 1, 37, 96,240, 61, 88, 52,183, - 53,121, 19, 28,172, 42, 76,118, 41,111,197, 79,201, 71, 64, 6, 21, 81,245, 25,233, 20, 84, 57,120,157, 94,107,157,124, 40,175, -166,109, 59,251,252,175,254,132,151,111,126,251,253,199,227,232,175,133,212,195, 67,139, 67, 64,199, 87,193,148, 69, 38, 68, 83, - 44, 50,106, 30,165, 22,224,170, 69,213, 4, 68, 65, 20, 65, 84,139,167,101,124,102,207, 78, 42,163, 95,128,201, 28,160,129, 4, - 68,140, 64, 83,230,147, 96,186, 10, 24,190,121,127,241, 31,252, 71,255,201, 79,190,122,217, 68,238, 66,184,219,110,247, 99,253, -246,123,143,127,253,215,126,243, 15,126,255,111,237, 54,107, 1, 83, 41,181,212,245,221,205,197,249,139,237,110, 19, 57,182, 93, -219, 52,169, 14,227,245,221,221,237,221,109, 41,133,153, 25,177,148, 98,228, 52, 77, 54,211, 42, 26, 67,104,153, 85,235, 62, 75, -174, 69,253, 97,168, 90,138, 84,168,121,204, 70, 16, 57, 25, 88, 25,114, 46,185,138, 0, 66,147, 26, 70, 44, 85,135, 60,228,146, -193, 1,116,196,109,140,196,164,162, 37,215,106, 5,145,205,172, 84, 65,196,227,197, 98,204,181, 72, 81,173,183,155, 29, 24,196, - 16, 16,112, 20, 49,128,154,139,212,178,203,162,160, 49, 48, 81, 88,118, 13, 35,115, 12,127,254,233, 23, 57,231, 16, 2, 51, 69, -166,192, 28, 67,104, 99,228,192, 77,138, 93, 74, 77,138,109,147,150,243,249,106,177,236,218,182,109, 66, 19,155,166,109, 23,179, -249,124,214,181, 93,219,181, 93,215,118, 49,165,216,166, 24,154,152, 82,140,201, 1,207, 8, 16,154, 8,138,227,216,223,222, 94, -223, 94,221,190,188,184,126,117,249,106, 24,199,235,155,155,187,221, 78,213, 74, 45,166,154,154,244,205,243,231,111,222,127,240, -198,189,123, 23, 87, 23,159,124,249,245,201,114,241,240,193,105, 21,168,185, 12, 57,207,230, 29, 35,173,102,139,147,227,227,179, -227,251, 77, 75, 47,175,174,246,251, 76, 33,129,230, 55, 30,156,109,119,251,156, 71, 64, 40,185, 34,218,106,121, 36,165,252,236, -235,175,218,216,116, 77,162, 64,171,217,226,207, 62,253,120,214,180, 93,215,253,240, 91, 31,124,252,205, 23,215, 55,155, 89,155, -154, 16,174,119, 91, 16,101,162,175, 94, 93,140,253, 24, 2,229,177,182, 93,215,165, 84,165, 26, 24,136, 14,165,246,227,208,151, - 28,137, 25,105,181,104, 61,239, 45,217,209,193, 65,204,136, 40,134,184,222,238, 60,149,159,107, 81,179, 49,151, 54, 53, 77,228, -126, 28, 1,232,239,252,230, 47,253,242, 91,111, 45, 87, 43,102, 54, 67, 1, 40, 99, 95, 75, 37,142,199, 71,171, 89,151,158, 62, -125,202,129,153,194,217,201, 89, 54,139, 4,165, 20, 53, 48,173, 93,211,138,228,188,223, 80,106, 41, 52,104, 56, 84,201, 99,143, -156,152, 12,181,238,118,187,249,124, 65, 33, 13,251,189, 17, 72,150,166,237,230,179,118,179,185,149, 90,123,129,213,233,189,231, -183,119,183,119,107, 69,236, 82, 92, 46, 22,179, 38,174,102,243,166,137,179, 89, 23, 2,181, 33,117, 93, 19, 2,199,148, 8,205, - 77,108,230,234, 31,243, 32,135, 51, 38, 85, 69,165, 22, 51,166,200, 42,197, 42, 16,153,160, 49, 50, 18, 58,140,222, 23,160, 56, -184, 78,137, 13,216,100,156, 6,158,196,106, 6,170,128,228,141,154, 3, 78,138, 21, 12, 65, 3, 65,191,219, 14,187,205,242,236, - 40, 53,115, 17,112,251,183, 20, 41,121, 28,246, 59, 41, 85, 69,154,121, 27,155, 46,198, 6,137,129,144,136,201, 80,252, 71,171, - 79,119,201,247,146,252, 74,106,254, 80,210,106,147,157,136, 39,239,149,169,168, 56,144,199,239,173,196,129,128,138, 84, 3,101, -194,170,211,104,211,111,146, 42, 74, 76, 28, 26, 3,169,185, 74,169, 8, 66, 77, 66,160, 50,142, 4,232,152,101, 20,128,128,222, -149, 21, 5, 19, 33, 52,115,251, 10, 34, 17, 87, 85, 52,219, 15, 99,208,131, 28,195, 39,163,191, 96,246, 78,115,108,243,113,176, - 29,142, 55, 63,114,221, 46, 53, 69, 78, 29,218, 65, 7, 34,182,170,104, 65, 3,112, 44,132, 33, 3, 41,138,137, 32,161, 67, 34, - 14, 60, 70, 71, 95,146,170, 97, 32, 56,108, 28, 81, 96,203,170,224, 30, 40,223,112,160, 3,189,102, 82,251, 25,248, 31,173,148, -250,230,219,143, 63,251,250, 21,242,119, 56, 57,206,127, 32, 71,154, 1,168, 8,170,202,212, 54,249,197,158, 5, 32, 32, 99,138, - 45, 33, 90,131, 72,104, 42,166,106,200, 96,162,166,150,179,169, 8,152,149, 98, 86, 76,213,204, 87, 54,136,192, 48, 6, 2, 66, - 8, 96, 50,217,130,204,220, 22, 66, 1, 2,179, 1,118,129, 83,155, 62,124,239,189,119,223,255,206,183,223,255,224,141,135,111, - 64,140,187,221,174, 31,247,187,245,250,233,147,111, 54,235,205,106,181, 72,109,243,248,241,187,170,186, 93,111,246,251,189,148, - 98,181,174,230,139, 38, 53, 67, 30,134,126,159, 71, 11, 33, 48,198, 20,194,110,232, 5,173,140, 99, 37,170, 90, 74,149, 42, 54, -150,106, 53, 35, 97,224, 24,137, 40,181, 69,106,173, 85, 68, 0,172,109, 18, 81, 80,179, 60,230, 94,242,190, 31,204, 52, 53,169, -109,186, 38,177,169,229, 82,251,126,168,162, 82, 85,173, 26, 72,228, 16, 67,108, 83, 24,107,222, 13,253, 56, 86, 99,104,218,132, -222,186, 18,101, 2, 81,139, 49,140,185, 32,129,228,122,187,222,230, 42, 72,148, 98, 20,145,177, 84,223, 27,172, 85, 75, 49, 83, - 51, 4, 2, 8, 68,129, 83,155, 98,219,117,179, 54, 33, 95, 51,199, 54,134,174,235,230,109, 51,239,102,243,174, 59, 57, 62, 62, - 90, 45,230,221,172,105, 99,203, 77,240,174, 63, 18, 69,127, 78,164,182,137, 67,206,159,124,254,245,215,207,158, 93,222,220,214, - 42,236, 30,138,192, 4,184,152,205,209, 64, 73,180,226, 88,243,241,106, 53,107,186, 92, 43,135,248,238,155,111,133,128,175, 46, -111, 31,156,158, 40,115,106,187, 6,163, 49,189,251,248,157, 49,231, 79,190,250,188, 31,247,227, 56, 70,142,111,220,127,104, 0, - 31,253,236,103, 41,132,123, 71,167, 79,206,159, 63,126,243, 65, 10,205, 71,159,126,122,113,125,133, 0,111, 62,188,255,234,252, -186, 77,241,203,252,204,170,188,253,248,254,126,200,127,242,209, 79,246, 99,255,232,254,131, 77,191,251,252,201,179,237,208,119, - 77,179,217,238,114,173,145, 35, 97, 56, 57,106, 17, 64,181, 42, 40, 26,184, 61, 92, 77, 77, 28,171, 4,234,149,182, 90, 6,104, -204,196,173,161,177, 81,176, 34,165,141, 13, 18, 84, 15, 11, 59, 70, 19, 99, 8,220,151,250, 63,253,179,143,238,126,105,252,181, -247,223,153,207,230, 41, 70,145, 34,128,219,113,232,154, 80, 75, 30,160, 80,108,114, 30, 54,235,203,245,221,205,155,143, 30,115, -196,171,205,122,177, 60,238,135,190, 10,236,182,155,121,151,108,200, 99,217, 45,143, 78,216,228,100,185,184,188,219, 96,138, 98, -204,237, 34,231,129,114,142, 33,164,110,209,221,159,109,119,187,175, 46,174,190,120,254,234,242,110,253,252,226,242,102,215,223, -245,123, 41,210,166,134, 35, 51, 81, 21,105, 99,138,145,103, 77, 34,226,163,249,188, 73, 33, 48,166,148,218, 20, 78,102,179,179, -227,213,106,181, 92, 46, 22,139, 54,158,204,187,217,124, 49,155,181, 1,184,105, 19, 98, 36, 66, 41, 90, 44,148, 82, 20, 16,234, - 72, 12,101,204,136, 53, 52, 77,136,141, 74, 85, 85, 4, 52, 20, 34,194,152,170,129,212, 74,137, 3, 51,197, 56,142, 61,136, 80, - 19,208,184, 90,117, 43, 44,135, 88,115,222,245,101,214,166,200,141,129,113, 12,154, 51, 65, 35,104,165, 20,157,240, 53, 48,246, - 61, 42, 32,114,211, 53,140, 36,234, 93, 39, 4, 3,230,201, 70, 61,241,221,192,151,249, 73, 0,107, 53,230,137, 87,107, 90, 85, -225,144,154, 86, 48, 67, 85,142, 36, 86,197,140, 67, 80,161, 82,138,137, 97,164, 24,131,128,106,150,201,242, 40,197, 76,152, 24, -152, 85, 4,213, 98, 98,226, 54,231, 98, 42, 72, 76,137,205,208,180, 26, 96,140, 33,171, 25,104,205,153, 17,140,131,168,250,104, - 29, 16, 2,120, 2,242,112,196,155,153,137, 18, 7,183, 96, 31,130,142,168,170,147, 64, 0,100,146, 99, 76,181,137,159,252,116, - 32,114,129, 33,160, 58,116,114,218, 15, 18,143,170, 76,253,238,195,230, 18, 33, 72, 53, 3, 51,228, 16,212, 65, 69, 96, 96, 34, - 21,128, 8, 21, 60, 77,165,102,116, 80, 6,250,171,239, 71,177, 35,107,106,201,237,242, 12,202, 87,251, 92, 23,179, 69, 25, 71, - 69,114, 34, 12,210, 1, 54,140,206, 80, 3, 20, 68, 86, 83,115,159,159,138,168, 26, 48,129,188,158, 52, 24, 18, 82, 72, 24, 18, - 33,152,121, 17, 70,170,181, 12, 25,160,168,212, 50,142, 62,111, 64, 21, 0, 13, 10,102, 10,254,106,134, 0,166,255,248,143,254, -184, 91,156,254, 27,255,250, 63,255,157,239,124,120,122,124, 90, 12,114, 25,111, 54, 55,121,183,187,120,254, 98, 55,110,135,253, - 56, 91, 46,127,229,215,126, 35,160,221,222, 92,230,113, 24,246,251,125,191, 15, 20, 16,113, 62,159, 25,209,213,229, 43, 85,104, -154, 56,111,155, 62,231,245,102,191, 86, 33, 68,102, 14, 77,218,247,253, 80,107,169, 42,181,168, 89,215, 52,128,144,139,130, 34, -162,137, 72,201,153, 35,167, 24,171,202,174,223,239,246, 61, 16,118, 49,158,157,156,196, 24, 84,117,204,121,187, 27,164,138,152, - 14,227, 40, 34, 69, 44, 6, 94,116, 77,211, 68, 64,220, 13,227,190,239, 85, 45,196,192, 76,125, 63, 86, 17, 17, 5,173, 2,168, - 98, 69,100, 55,236,171,210,190, 31,115,173, 64,136,106,195,144, 1,161,139,209,239, 56,200, 76,140,193,195,213,196, 41, 52, 28, -144,136, 21, 64,204,100,180,205,254,118, 24,118, 78, 43,232, 82,106,218,118,222,181,109, 74,203,197,188,107,219,163,197, 98,181, -156,117,169,155,205, 83,219,116, 90, 36, 16, 60,127,117,241,151,159,126,126,179,222,132, 64,132, 28,136, 66, 19, 81, 49, 48,251, -114, 80,136, 49, 48,153,218, 88,242, 56,244,215,140,179,210, 18,226,163, 7, 15,139,106, 76, 93,151,162,245, 61,168, 14,162, 17, -195,118,183,123,246,242, 98, 44,195,172,235,218,208,206,186,118,209, 53, 93,219, 17,232,213,205,205, 21, 92,205,187,217,139,139, - 43, 34,186,190,187,157, 55,237,195,123,103,127,249,217,103,185,212, 95,249,224,219, 33,132, 71, 39,103,219, 50,124,115,254,188, -239,135, 89,215,221,174,239, 62,251,250,233,118,232, 17,200, 4,231,221,226,216, 65,106,132, 34,146,139,248,103,146, 13,128, 25, - 0, 65,166,201,149,195, 77, 85,197, 14,206, 73,111, 6,138,105, 27, 40, 80,136, 49,168, 26,171, 9,104, 8, 78,102,155,188,170, - 98,246, 79,126,250, 51, 41,195,175,127,240,173,213,234,120,232,119, 93, 59,159,119,203,192,225,201,211,103,169, 13,167,171,179, -118,209, 52,105, 86, 74,169, 98,219, 60,156, 28,175,252,119,217,239,247, 20,210, 88, 49,198,208,239,135, 86,165,137,225,197,229, -171, 97, 44,177,105, 9,185,101,124,248,198,187,130,225,110,232, 63,123,121,253,241,159,125,242,245,179,167,219,221,102, 63,140, -158,218,218,230,140,104,196, 20, 34,197, 20, 73, 77, 69,212,164, 31,107,206, 69, 13,246, 57, 35, 98,191,223, 21,147,126, 95, 69, - 11, 83, 56,154,207, 56, 76,152,219,147,163,238,222,106, 89, 10,222, 91,118,203,197,252,193,217,241,195,179,211,123,171,249,195, -211,147,197,114,149,154, 36, 34,109,147, 40, 54, 98,128, 8,217,216, 60,114, 3, 70,200, 82, 20, 1,186, 89,151,199,106,102,192, - 16, 66,128, 72, 53, 23, 54,224, 64, 68,193, 16,173,106, 41, 37, 15,121, 62, 91,148,106,145,162,170, 43,162, 42, 17,206,186,110, - 0,147, 90,192, 64,212, 40, 50, 7, 52,211,172, 85,171,112, 76,132,196, 33, 72,205,181, 20, 10,193,183, 95, 8,163,234,168,136, - 76, 33, 4,241,203,164,100, 87,247,161,169,146, 33, 81,162, 8,181,142,109, 66, 64, 26, 11,214, 42,181, 8, 49, 27,154, 33,228, -156,209, 32,117,141, 84, 41,121, 52,209,118, 49,203,163,136,214, 24, 35,167, 84,197, 47, 79, 77,173,217,233,101, 76, 68,161, 21, -201, 98,226,224,213, 72, 60, 61,244, 17,137,153,153, 9, 33,184,166,195,113,254, 62, 50,128,195, 10,168,167, 2, 17, 92, 44,106, - 64,134,128, 24,216, 23,181, 15,196, 92, 4, 49,227, 41, 15,238,132, 70, 67, 0, 53,213, 10,134,138,138,232, 62, 29,114,132,133, - 31,183, 86, 20,105,218,214, 5, 68,100,223, 24,155, 16,196, 94, 92,197,224, 4, 81, 71, 2, 76,165, 66,205,197,144, 25,105, 2, - 35,128, 10,226,106,181,232,183,155,229,124,102, 86,164,136,119,197,171, 78, 64, 31, 79, 33,162, 1,160,104, 57, 52,205, 61, 65, - 67, 54,173,197, 78, 43, 10, 0,106,104, 89, 21, 92,143,168,238,163, 65,226,134,136,230,136, 56, 91, 50, 6,210,170, 37,143,142, -185, 81,201, 76,102, 90, 47,206, 95,125,245,228,252,225,163,247,255,237,127,231,183,149,160, 14,229,118,179,190,189,122,117,113, -254,108,179,190,235,135,108, 64,143, 30,189,253,246,219,199, 77,211, 93, 95, 95,212,146,219,182, 1,177,174,155, 49,147,154, 13, -187,126, 40,165,105,154, 7,247, 31,222,220,222,108,182,219,253,110, 44, 34, 77,227, 90, 3,237,135,190,106, 29,179,128, 65,138, -145, 65, 13,209,140,170,149,170,181,142,238, 72,179,144,194, 56,150,205,110,159,115, 21,213,229,108,118,180, 56,138,145,138,214, -190, 31,183,251,126, 24, 71, 66, 45, 21, 20,212, 53,208, 93,136, 77,219,166, 16, 74,213,126,216, 23,169, 78, 11,237,135,236, 43, -204, 34,213,135, 49, 85,172, 40,168, 34,242,172,101,106,211,204, 91,172,232, 11,108, 0,140,145,192, 16,137,137, 76, 13,232, 80, - 25,186,163, 67,132, 0, 74, 85, 64, 77,129,123,195,245,126,215,140,195,142,131,145, 5,164,197,108,121,239,244,200, 99,145, 77, -228,174,235,102, 41,205,102,221, 98,182, 80,145,167,175, 46, 74,205,169, 73, 82,242, 62, 15,140,100,189, 79,194, 17,153, 16,128, - 57, 57, 2,187,212, 98,166, 82,139,112,232,102, 75, 14,129, 12,112,142,166,186,156, 7, 32,172, 34, 4,120,117,123,219,143,125, -155,210,209, 98,181,237,247, 87,235,219,219,245,250,225,201, 81, 81,120,121,125,221,165, 48,235,186,187,205,221,110,191,191, 94, -239,154, 16,179,214, 89, 59,187,119, 28,175, 55,235,237, 56, 50,192,151, 47, 94,236,250, 65,196,206, 47,175,119, 99, 38,228,163, -249,252,193,217, 49,152,150, 90,251, 62, 3, 76,187,230,190,172,101, 4, 2,168,158, 55, 35, 48,122,109,246, 37,133,106, 6,100, - 80, 1, 81,205, 55,242, 65,141, 14, 42,131,130,166, 85,213, 55,255,196, 99,201, 6, 1,139,232, 31,126,244,115,197,240, 55,126, - 48,187,127,118,118,121,115,119,181, 94,191,255,232,109, 76, 77, 95,237,122,125, 43, 82,219,166,171,165, 15,180, 60, 90, 30, 23, -209,243,235,107, 82, 67,205,185, 82,155,186, 87, 87, 55, 15, 79, 79, 3,112,192,116,118,114, 86, 4,198, 97,255,217, 55, 95, 95, - 14,218,127,250,252,217,213,229,102,191, 30,134, 60,140, 57,165,152,152,152,208, 24, 39,121, 27, 34,128,214, 42, 76,117,234,204, - 26,153, 89, 85, 97,196, 90,106,100, 66, 36, 84, 9, 12,134,156, 2, 51, 1,147, 1,144,136,108, 54,253, 56,214,139,155, 93,209, -162, 6, 99,206, 12,198, 28,212,180, 9,225,108,185,122,252,240,244,193,233,201,106,222,206,231,179,183,206,142, 79,143,142, 79, -142, 87,145, 29, 90,167,179,229, 10,128,202, 48, 4, 50, 34, 52,177,196,161,212, 18, 57, 96, 8, 38, 46,207, 66, 49, 88,223,238, -153,177,105,102,238, 89, 68, 0, 15,122,115,140, 96,134,156,192,140,209, 18, 49, 80, 64, 12, 20, 40, 80, 99, 9,164,102, 81, 65, -135, 28, 68, 48, 19, 4, 82, 55, 2, 81, 52, 83,177,233,100, 1, 68,100, 86,169,165,140,136, 20, 98,148,146,213,147,166, 8,132, - 98, 6, 68,156,102, 73,213, 36,143,224, 54, 15, 36, 17, 49,213, 16,162,176, 12,195,216,134, 6, 83,147,165,212, 92, 38,175, 30, - 6, 70, 82, 43,129, 26, 5, 48,169, 76,228,127, 5, 2,231,146,217, 76, 81,220,228, 71, 70, 64, 28, 38,238,181,186, 26,233,181, - 38, 85,108,114,136, 35, 34, 49,138,122, 52,134, 94,211, 1, 94, 51,207,188, 51, 6,158, 46, 58, 48, 99, 28,179,138,254,141, 71, - 4, 53,104,154, 38, 52, 97,127,187,157,198,172,140, 6,122,200,160, 24, 34, 17,144, 65,245, 22, 92, 49, 37,100, 34, 84, 69,241, - 65,235, 20,216,121, 93, 98,120,184,207,204, 76,114, 57, 58, 58, 94,223, 92,158, 28, 45,107,206, 98,202, 46,111, 69, 68, 83, 60, - 44,149,226, 36, 95,192, 3,167,221, 0,209,127,229,233,128, 87,143,128,138,151, 54, 19, 88, 24, 12,196,166, 56,191, 85, 32, 16, -173,160, 8, 8,129, 1,136, 67,104,204, 22,151,175,206, 63,249,232,227,152,102,239,126,231, 87,218, 24, 47, 46, 94,148, 82, 46, -206,159,191,122,249,188,223,245, 72,225,173,183,223,253,224,222, 61,149, 2, 86,145,105,223,175,119,155,117,149,250,234,242, 85, -191, 31, 24, 48,166,112,114,118,186, 60, 89,149,203,203,139,139,139,126,200, 57, 15, 33,198,148, 2,138, 86,173,253, 40, 99,206, - 98,230, 44,134, 89,147,156,143, 80, 69, 75,201,181,230, 90, 51, 2, 41,192,126,200, 85,197, 4,218,212, 28,175,102, 77, 96, 49, -221, 13,155,113, 83,242, 88,199, 82, 74, 45,204, 33,134, 48,150,222,192, 0, 83,215,117,206,157, 42, 82, 76,140,155,152,112, 70, -104,132,176,219, 13, 96,176,181,253,186,212, 34, 82,157, 45,129,236, 42, 43, 67,243, 44, 44, 59,185,223,133, 11, 30,175,147,154, -205,212, 42, 19,250,198, 28,152,127,198,148,145, 49,160,170,198, 16, 23,243,238,118,179, 17, 0, 2, 5,195, 44,178,235,247, 39, -101,214, 54,237, 56,150,161, 14,227,144, 47,197,196, 4,192, 82,140, 6, 22, 67, 84, 48,239,191, 22,176, 8, 68, 76, 42,162,181, -130, 97,201, 91,175, 43, 85, 21, 9,168,232,200,149,134,253,232,215, 76,160, 24,130, 33, 68, 12, 77,140, 68, 72,204,111, 52, 15, - 13,196, 41,196, 93,104, 1,244,203,231,207, 75,173, 99,201,121,236,115,201, 99,169,155, 33, 63, 60, 57, 93, 45,102,231,215, 23, -199,139,163,148,226,147,243,203,237,176,219,238,134, 64, 68, 72,217,138, 55,233, 12, 97,172,217, 12,115,169,165, 10,162, 2,210, -235, 74, 82,201,211,199, 64, 0,162,158,230,125,189,188,225, 82, 31, 99, 38,247,186, 43, 40, 35, 24,130, 50, 18,133,156, 7,169, -197,124, 40, 69, 6,132, 38, 96, 12, 96, 70, 6, 49,134,255,235,211, 47,111, 54,235,127,237,119,126,123,214, 52,251,166,219,238, -119,203,174,235,139,169,148,221,238, 70, 49,214, 82,204,140, 98, 88,223, 93, 15, 67, 47, 34,109, 12,243, 89,119,180, 88,222, 59, - 89,237,134,124,181,219,127,250,245,167, 95,159,191,120,121,187,239,115, 30,139, 84, 19, 38, 92,204,103, 4, 60,107, 19, 25,136, -169,137, 78, 10, 11, 53, 69, 52, 53,246, 97,156, 47,143,219, 68, 15,156, 0,220,170, 22,244,150, 0, 0, 32, 0, 73, 68, 65, 84, -104,134, 88, 85,165, 90,145, 10, 2, 98,101, 32,138, 16, 8, 33,139, 0,193,176,173, 8, 18, 1,136, 48,166,104, 64,106, 82,178, -222,150, 97, 55,142, 79,175,111, 14,200, 29,139,196, 72, 56,159,205,151,109,211, 54,241,116, 49,187,119,118,122,182,156, 31, 47, - 22,199,171,197,209, 98,182,152,207,222, 56, 59,109,231, 29, 1, 6, 4,140,193,185,134,125,206, 90,243,217,217, 49, 82,200, 37, -179, 9, 5,156, 86,141,106,225, 24,151,171, 48, 14,161, 12, 99, 21,137,238,147,180,232, 78,104, 68, 34, 16, 53,247,131,177,170, -163,149,221,144, 77,234, 90,113, 68,162, 32,181,212,154, 67, 68, 7,232, 35, 18,197, 38, 16,214, 58,150,226, 75, 50, 8, 0, 82, -170,107,227,192,208, 84,129, 12,204,128,217,106, 97, 12, 49, 0, 18,169, 9, 1, 26,147,169,168,136, 79,169, 1,185, 74, 5, 19, -160, 0,198, 6, 86,198,130, 44, 33, 68, 1,208,126,175,181,112,228,169,186, 5, 85, 67,114, 61, 29, 77, 81,152,131, 30, 69,241, -181, 78,122, 82,231, 49,145,122, 65,233,116, 35, 87,251, 57,251,104, 90,213,153,174,224,132, 32,134,132,120,112,126,148,113, 44, -227, 8, 96, 80,205,124,137,106,250, 12,211,148, 44,157,104,118, 82,171,146,239, 37,185,148,152,204,137,163,224, 20, 89, 95, 3, - 86,197, 9, 55,138,166,146,230,139,171,155,103, 82,134, 92,202, 4,137,124, 29,173,157, 6, 4,234, 26, 97, 38, 4,155,136,100, -126,196,155,218, 68,113, 35,115,189,217, 47,214,230,192,125,223, 64, 46, 11,192,105,209,219, 87, 38,114,149, 50,148,126,188,253, -236,147,159, 14,195,240,238,183,190,179,156,207,175,175, 94,124,115,115,121,125,117,181,223,238,114,174,247, 30, 62,252,238,247, -126, 16, 83, 35, 37,223, 94,191,122,245,242, 85, 41,117, 55, 14,155,221, 78,139, 52, 77,138, 33,164, 20, 83,211,132,200, 47,207, -207,215,235, 53, 0,198, 16, 23,243,102,143,176, 27,246,227, 48, 22, 17,239,247, 17, 97, 36, 14, 28,156, 97, 93,160,140,217, 65, - 50, 90, 69, 74, 45, 34, 86, 1,186, 16, 87, 93,203, 76,129,121,187,223,109,182,217, 12, 66,136,181,202,182,239,157,195,188,235, -247,110, 38,105,155,102, 22, 19,209, 4,189, 83, 21, 19,147, 90,119,227,222,115,179,155,221,126,172, 32, 90,247, 67, 53, 82, 54, - 50, 0,197,226, 49, 90,246,131,123,210, 54,170, 34,130, 24,240, 68,110, 32, 81,241,167,178,203, 11, 13, 8, 76, 77,249,117, 10, - 15, 21, 45,164, 24,198, 82, 1, 98, 32, 68, 0,145, 90, 74, 77,169, 34, 26, 42,186,133,109, 28,234,245,230,238,209,253,147,239, - 62,126,115,189, 27,231,179,213,237,246,246,234,246, 14, 24, 71, 49, 70, 0,196, 38, 38,100,242,111,129, 42, 1, 22,154,238,149, -117, 43,142, 24,131, 73,109, 22,136, 41, 36, 14, 76, 28, 67, 10,145,188,158,157,181, 73, 83, 10,129,143,142, 79, 68,106,174, 53, -231,113, 24,199, 82, 43, 82, 8, 8, 95, 62, 59,191,222,172, 95, 93,222,169, 42,113,152,117,109,192,144,152, 51,100, 52, 55, 78, - 0,161,144, 37, 10, 68,149, 24,107, 5,159,239,131,190, 14,126, 77, 22,176, 73,201, 62, 29,238,238, 93, 82,241,156,177, 34,152, - 41, 16, 8, 64,173, 70, 64,232,203, 53, 54,129,237,212,204,196, 38,163,197, 4,214, 69, 6,248,233,147, 87,252, 39,127,246, 91, -223,121,119,222,206, 2,242, 80, 75, 30,135, 89, 55,159, 47, 79,119,195,158, 57, 94,173,183, 5,104,213,182,219,102,119,118,239, - 29, 12,233,118,179,249,163,143, 63,253,242,252,242,197,213,205,213,102,189,222,237,252,175,155,167, 24, 83,138, 64, 41, 68, 80, - 51,156,102,161, 7, 42,147,203,233,166,175,154,255,199,243,120,132,128,132, 38,147, 73, 14,167, 64, 51, 16,146,248,193,133, 20, - 0, 64,173, 98, 45,185,104, 5,166, 48,228, 28,189,199, 81, 68,188, 48, 80, 69, 83, 64, 14, 14,135, 64, 42,126,220,170,230,156, -215,160,151,235,205, 55, 47, 94,206,158,189, 26, 74,185, 92,223,161,200,188,233,150,243,110, 53,235, 22,139,217,114, 54,123,112, -180,124,120,122,116,118,188,122,243,222,201,106,185, 76,132,243, 38, 49, 83,199, 93,149, 12,132,234,171,142, 30,190,119,115, 72, - 16,198,192, 41,185,110,211,166, 64, 33, 33, 77, 6, 54, 53,156, 8, 29, 19, 13, 17, 1, 25,129, 8, 21,145, 25,188,159, 12,160, - 74, 33,128,145,105, 29, 74, 97, 2,164, 88, 84, 77,196,164,114, 12,129,217, 12,213,109, 30,106, 8, 26, 67,210, 24,196, 84,165, -128, 42, 48, 7,130,108, 19,103,212,227, 45, 90, 43, 0,144,243, 17, 12,131,115,135, 76,193, 60,140, 10,160, 90, 10, 18, 8,161, -134,137,129, 55, 61,119,205,219,218,211,138, 19, 26, 34,123,139, 2, 93,129,230, 11, 74,132,211,197,195, 76,127, 17, 20, 63, 20, -144,134,128, 76,175,117,126, 14,155, 48, 3,157,246,130,156,169,134,108, 83,199,199, 75, 84,157, 26,250, 6, 22, 2, 79,104, 1, - 48, 6, 18, 1, 67, 3,154,182,136, 13, 77, 69,205,128, 34, 97, 32, 19, 1, 4, 6,252,248,163,143,122, 9,191,250,131, 15,215, -155,157,155, 34, 16,217,192, 76, 42, 2, 2,138,151, 36,234,202, 78,244, 44,102, 69, 37, 15, 62,250,129,132,122, 48, 18,178, 47, - 18, 79, 82, 43, 39, 12,195, 4, 71,211,221, 38, 87,145,188, 31,158, 63,253,230,217,243,167, 15, 31, 60,124,240,232,237,245,245, -203, 47,127,118,113,125,117,173,104,139,197,252,209, 59,223, 58,187,247, 48,165,180,190,189,122,249,244,201,110,191,221,108,247, - 23, 87, 55,185,228, 90,165,155,181,173,119,244,136, 16, 96, 55, 12,249,110, 8,196,243,249, 66,164,170,202,205,221,118,179,219, - 35,122,239, 12, 9,137, 67,195,140, 62,219,204, 57, 15,101, 48,131, 90, 74, 41,101,204, 85,204, 66,224,196, 24, 66, 48, 67, 81, - 25,203,168,166,251,177,144, 71,142, 76,198, 90, 76,193, 80,199,162,136, 12, 8, 77, 72,145,120, 63,142,178, 23,100, 84,213, 90, -197,212, 74,173,187,190, 18, 83,151,218, 77,159,199, 82,220,210, 11, 2,130,138, 7,143,138,223, 61, 21, 20, 1,176,170, 25, 41, - 26,249,119, 28,136, 14, 66,117, 64, 35, 3, 51, 49,243,112, 18,142,165,150, 90, 42,134,212,198, 24, 66, 3,179,253,184, 38, 44, - 12, 17, 9, 69,180,104, 45, 69, 92,175, 92, 75, 53, 48, 14, 52,107,218, 7,199,199,187, 33, 95,111,118, 33,118, 39,171,147,183, -222,124, 20, 66,216,239,134,167,231, 95,207,218,249,144,199,245,110,211,132, 56,129,249, 28, 37,228, 66, 13,112,176, 10, 42,130, -168, 88, 17,130,218, 35, 56,101,156,153,152, 2, 5,110, 67, 19,153,253,244, 15, 76, 13,209,114,121, 10, 75, 0,134,183,223,120, -115, 24,198, 7, 15, 30,142, 99,217,236,119,227, 56,140,227, 88, 85, 12,160, 88,173,181,130, 89,173, 85,212, 11,246, 73,245, 32, -106, 2,198, 52,237,115, 59, 25,210,212,136,176,138,231,205, 14,110, 3,159,255,136,248, 94, 30,129, 1, 24, 3,154,136,212, 2, -104,132,216, 4,222, 7,178, 90, 96, 34, 19,250, 13, 11,171,170, 31, 17,204, 28, 99,252,248,217,121,174,229,111,253,181, 31, 22, -145,245,110,211,166,214, 52, 31, 47, 22, 93, 10,253, 48, 70,228,156,235, 75,158,255,249,243,155,243, 31,127,113,126,117,185,217, -141,213,252,173, 23,149, 26,152, 24, 88, 93, 65,105,230, 89, 53, 17,229, 80,192, 32, 87, 97,162, 10,224, 68,201,250,154, 30, 66, - 72, 0, 33,134, 82, 10, 24,130,218, 1,244,135, 10, 96,165,154, 86,240,214,147, 2,187, 82,208,227,228,128, 85,133,201, 84,161, -138, 11, 61, 44,139, 16,162,130, 89, 5, 37, 20, 21, 3, 16, 52,241, 5, 61, 70, 83,149, 82,208,148, 16,152, 49, 20,154,135, 4, -209, 0, 97,168,117,123,115, 93, 47,174, 94,187,171, 8, 48, 16,221, 63, 89, 17,211,201,124,118,122,180, 60, 91,204,142,142,143, - 30,221, 59,125,243,236,120,121,180, 88, 45, 86,243, 14, 99, 8,216,116, 50,155,249,141,170, 10,248,250, 8, 99,144,168, 86,213, -204,141, 44, 72,156, 0, 76,164, 34, 29,206, 59, 85,166, 8, 6, 22,146,212,130,140,128, 36,106, 10, 3, 35,135, 38,162, 66,173, - 2,170, 41,178,197, 56,228,140, 38,236, 70, 23,243,125,160, 88, 68,152, 29, 40, 25,212,143, 58,196,136, 36, 77, 35,101,212, 82, -152, 57,164, 36,230,251,252,132,211,238, 10,131, 1, 51,107, 46,222,101, 33, 53, 38, 50,197, 96, 96, 40,134,126, 22, 19,146,136, - 63,152, 21, 25,205,152, 13, 12, 14, 36, 69, 31, 5, 31, 96,144, 58,245,217, 15,184,223, 67, 86, 94,213, 64,144, 8, 29, 55,111, -254,224, 81, 64, 37, 63,255,213,128,212,121,234,254, 83,112,194, 15,161,169,130, 33, 5,191, 31, 79,255,155,252,202,103,122, 64, -210,160, 34, 2, 88,215,196,253,126,215,117,243, 16,200, 84,134,237,250,127,251,195,127,242,163, 95,250,246,180, 81,237,198,166, - 73,135, 41,160, 70, 97, 2, 9,121, 89, 73,166, 8, 12, 19, 71,195, 84,170, 83,128, 1,200,192, 64,166,252, 59, 34, 18,161, 17, -104,150, 93,159,199, 97,204, 99, 38, 10, 55,183,175,158,124,245, 85,205,195,106,177,220,220, 94,127,253,197, 23, 55,219,219, 89, - 59,187,119,118,111,177,152,137, 98, 32, 94,223,188,186,185,186,190,184,190,188,185,219,238,199, 65, 68, 18,115, 10, 60,159,117, -204, 88,198,108,208,152,122,152, 23, 25,217, 84,183,219,254,160, 35,136, 71,139,249, 48, 14, 99, 46, 76,196, 20,153,160,150, 50, -214, 90,164,170,129, 26,228,113, 44,181,136, 72,147,146,145,239,153,217,110, 24,134, 97, 68, 98, 98,146, 42,197,106,195,201, 64, -115, 81, 53, 11,145,170, 98, 76, 92, 75, 54,131,221,208,111, 7,155, 86,149,145,246,251,126, 63,148, 92,165, 40, 18,105,224,184, - 31,199, 42, 2,166, 85,108,114, 93,130, 7,213, 8, 0,164, 24,178,161,122,186,217, 37,247,102,100,193, 51, 88,138,135,159,140, -190, 51,206,190,237,226,168, 69, 68, 64, 29,242, 16, 57,117, 41,201,124,182,222,237, 0, 36, 33, 3, 64, 63,142, 8,180,104, 91, -241,244,172, 41,128,198,192, 47, 46,175, 63,120,252,230,119, 31,191,121,219,151,111, 61,126, 12,132,203, 89,151, 5,111, 54,155, - 71,247, 78, 63,127,242, 13, 66, 56, 61, 58,189, 89,223,237,250, 97, 49,107,134,154, 1,145, 17, 99,140, 8,174, 43, 37,239,141, - 28,214,169,124,155,198,178, 20, 27,109,143,123, 79,192, 50,113, 10,145,153, 99,216, 51, 83,160,200,137, 3,211,106,177,162, 21, -189,129,247, 16, 88, 84, 75,205,162, 58,142,227,102,187, 45, 67,185,237,183,231, 47, 95,249,208,195,247, 60, 68,100,130,158, 34, - 32, 98,209,105, 39, 92,193,180,122, 28, 9,145,144, 12,216,215, 85, 17, 16,125, 39,127,106,245,152, 2, 56,174, 88,213, 11, 38, - 67, 62,240,183,157,172,162,244,255, 83,192, 19, 2, 6,250,236,252,114,252,147, 63,255,253, 95,249,165,183,238,159,130,192,171, -205,245,197,205,237,249,122,251,213,203, 87, 69,232,118,191,239,115,201, 37,251,166,249,178,153,165, 24, 24, 33,103, 85, 0,243, - 29,124, 68,166,102,218,209, 3, 5,110,204,132,136,167,166, 3, 64, 38, 82, 21, 54, 80, 83,168,128,137,216, 47,112, 19,226,207, -215,216, 93, 91, 12, 14,244, 16, 80, 49, 35, 0, 49, 51,172, 85, 66, 17,241, 4,182, 1,154,137, 10, 0,105, 53, 69, 83, 70, 30, -167, 39, 11, 38,112, 21,140,185,165, 34, 66, 64, 67, 17, 20,213, 41, 80, 80, 75,169, 5, 9, 3, 19,138,129, 0, 19, 70, 6, 21, - 70, 66, 3, 45,162,219,126, 24,115,125,121,117, 91,164,238,115,110, 67, 88,204,230, 93,234, 24,117,214,198,163,197,236,222,209, -209,227, 55,238,157, 30,173,190,243,248,209,131, 71,111,213,177,134,182,227, 96, 76,134,196,140,172, 68,160,122,128,153, 35,135, -224, 27, 82,136,196, 33,152,161, 22,225, 38,197,212, 14,227,222,170, 34, 35, 35, 19, 6,201,130, 12, 72, 64,136,165,138,106,230, -233,161, 99, 49,112,169,140,117, 20,171, 4, 72, 24, 69, 65, 64,240,176, 82,175,102,181, 10,115,192, 48,205,112, 3,153,255, 38, -147, 34,219,212, 12,198, 97, 48, 80, 36, 36, 74, 50, 22, 51,157,216,102, 41, 68,117,108,174, 42, 78, 83,121,244, 1,166, 29,144, - 94, 96, 54,149,101, 30, 81,199,137,113, 10,204, 33,198,169,135,126,248,204, 57,231, 8,253, 92, 62, 4, 27, 65, 77,173,162,103, - 43,189, 28,128, 67,237,112, 16,209, 34,177,211,241, 15,170, 12,157, 40, 35,254,179,166,131, 8,136,136, 3,254, 31,255,232,127, -253, 7,255,227, 63,164,216,164, 38,157, 28, 31,175, 88, 16,219, 24, 83, 81, 45,185, 56,159, 18, 76, 8,193, 81, 97,160,134,128, - 42,117,194,227, 33,169,186,254,113,226,176,138,249,121,143, 90, 11, 34,113, 76,206,115, 26,199,186,223,247,227,126, 44,181, 74, - 25,251,126,251,242,249,147, 79,191,248,249,131,179,251,128,118,121,117,211, 38,142,177,121,120,118,186,104, 23, 22, 35, 26, 45, -150,179,126,191,125,242,228,249,211, 23,231,165, 84, 4,104,154, 38,133,224, 53, 81,205, 82,217,220, 37,109,104, 34,121, 55,142, -238, 53, 79, 41,181,177,203, 99,238,247,187, 77,191, 39,230,166, 73, 34,138,104,185,228,109, 63,228, 82, 60,166,201, 33,112, 8, - 41, 70, 67, 41, 85,107, 17, 19, 5,196, 90,197, 24, 85,101,216,143,132,148, 82, 18, 17, 67, 85, 85,173, 54,100,185,221,110,230, -237, 44,165,192,158,201, 67,205, 37,239,246,121,189, 29,198, 90, 29,254, 30,208,181, 12,154,221,239,131,147, 62,195,247, 13,139, -105,240,192,135,161, 42,208,235,239, 51, 26, 26,162, 55,190, 29,244,140,206,154, 83, 68, 12, 7, 13, 0, 29, 54, 45,188,177,144, - 75, 1,196,101,215, 17,242,110,191, 29,165, 6,160, 90, 4,147,229,154, 83, 19,177, 90, 21,245, 36,234, 80,228,231, 79, 95,156, - 30, 45,255,213,127,233,239,214,177,254,241, 95,254,197,217,209,114, 55, 14,167,199,171,227,227,227,250,229,215,199,179, 21, 34, -174,119,251,239,127,240,189,199, 15, 31,156, 30, 45,215,251,253,159,254,213, 79,246,227, 78, 69, 68, 37, 48, 85, 17,166, 72,165, - 32, 34, 5, 33, 3, 12,140,196,222, 54, 49, 68, 53, 45,162,163,100, 2, 2, 68, 66, 76, 20,128, 49,112,100, 34, 36,238, 82,106, - 98,226, 16, 3,117,204,164,243,197,189,147,123, 49,144, 33,230, 92,174,174,175, 46,110,174,155, 20, 8, 97, 44,165,168,152, 23, -216,106,132, 88, 85,137, 48, 48, 87, 44, 8,192, 4, 34,126, 11,115, 20, 48, 16, 0,241,161, 39,111,128, 76, 28, 8,171,131, 66, - 32, 48, 87, 21, 21, 67,159, 50, 33, 25,184, 31, 97, 82,197, 35, 96,176,160, 0, 95,156, 95, 17,252,244,131,183,238,127,254,226, -234,197,122,125,187,217, 87,129, 20,120,222, 80,140,141, 59, 44, 49,160,169, 41, 26,169,103, 46,167,212,243,129,134, 58,149,183, - 0, 8, 90,212,144, 9,226,164, 89,166,160, 42,168,197, 12,128,140,170, 33, 84,176, 96,213, 87, 79,212, 0, 80,139, 74, 34,244, -193, 34,121,131,222, 43, 2,240,130, 89, 20,148, 0,201,231, 56, 62,208,211,137, 99, 12,254, 88,159,228,157, 6,102,204, 76, 82, - 29,224, 94,173, 86, 53, 2,100,128, 97, 24,157, 83, 41,234,144,209, 82, 85, 0, 16,148, 16, 60,219,173,168, 98,218,136, 26, 49, -144, 80, 66,103,102,170, 89, 29,213,246,235,225,229,205,221, 79,190,252,166, 9,105, 24,243,127,248,247,255,133, 95,251,157, 31, -221,222,109, 75,209, 50,150, 49,143,232, 61,182,195,135,188,153,205, 99, 51,179, 42, 76,202,156,212, 76, 74,230,192, 6, 25, 12, -138,148, 16,131,144, 18, 64, 21, 53,172,212, 54, 40,181, 84,149, 98, 33, 48, 7,158,234, 0, 10,166,142, 86,111, 69, 51,146,119, - 16,176,141, 51, 1, 45,146,107, 29, 3,199, 24,147, 65,213, 42, 85, 32, 53,141, 42,154,136,103,223,253,194, 77,129, 16,217,140, -144, 76,171,114,215,120,136, 54, 16,134, 34, 3, 81,152,122,213,236, 4, 94, 7,225, 78,254, 61, 56,200,142, 15, 14,105, 31, 59, -123,222,157,224, 53,113,221, 38,143,210,129,248,168, 48, 5, 40,125,111, 85, 39, 45,134,175,227,185,228,101,242,126, 28,160,141, -168,134, 1,188,197,133, 19, 80,223,237,127,226,239, 19, 78, 19,134, 39, 95,124,250,223,252,119,255,195,203,157,158, 46,106,190, -189, 59,127,113, 94,213,126,251,215,126,253, 31,255,225, 31,190,241,248,189,119,223,125,171,150, 50,141,179, 14,146,245,137,227, - 75,236,191,254,107, 96,217,107,248, 0, 79,219, 22, 2, 20, 84,160, 31,181,228,220,239,198,113,232,107, 25, 17,116,236,119, 47, - 47, 94,125,252,201,199,219,125,158,207,103,151,183, 55,100,120,188,154, 47,230,139,118, 62,107,218,212,197, 48, 86,123,117,121, -241,252,167,231,235,245, 54,231, 28, 82,211,166,196, 68, 49,177, 40, 4, 98, 3, 81,177, 24, 89,198,220,247,195, 68,108, 98,236, - 82, 7, 8, 67, 25,174,111,111,199,113, 68,228,174,105,192,108, 55,246,251,190,119, 38,143,136, 49, 97,138, 13,115,100, 70, 0, - 27,242, 40,213,218,216,142, 50,172,183,219, 10, 74, 16,192, 80, 84,221,150,161,112,104, 22, 82,192,132, 9,108,185,176, 54,198, -162,101,172,197,128, 25,240,118, 51,108,251, 49,151,202, 19, 77,194, 12, 44,155, 5, 64,158,112,160,238, 46, 87,247,110,177,239, -171,137, 18,163,169,235,139, 12,192, 64, 20,144, 39, 49,139, 29, 2,170,160,135, 10,143,144, 21,225, 32,210, 68, 5, 35, 52, 96, -132, 90,242, 94,164,107, 82, 10,171,109,223,151, 82,134,113, 92, 52,211,250,120, 64,170,128,165, 22, 64, 20,213,171,117,255,224, -222, 89, 25,182,159, 63,121, 9, 24, 62,120,255,219, 79,207, 95,198,148,182,235,245,188,235,152,224,226,230,230, 91,111,189,245, - 43, 31,126,235,231,207, 94, 60,126,244,240,114,189,126,247,237, 71, 47, 94,190, 66,176,243,171, 11, 10, 60,140,153,188, 87, 34, - 74,132,134, 24, 34, 7,160,144, 2, 96, 32, 48, 38,118,186,180, 6,243,225, 66,150, 34, 21,136,138,155, 6,118, 59, 12,156, 56, -114, 36, 10, 41, 70, 98,134,144, 9, 21,113,214,181,111, 60,124,120,239,228, 76,172,168,193,174,239,135,126, 95, 75, 25,203,184, -239,199, 82,107, 24,177,152,223,202, 15,223, 28, 38,158, 32,214,200, 60,161, 51,166,164,177, 63, 32, 85,152, 2, 17,171,100, 0, - 99,114,229, 24,160, 65, 64, 84, 51, 69, 50,167,234, 57, 22, 30, 13,209,218, 72, 63,127,117,251,217,249,229,118, 44,140,216, 53, -177,137,254,117,101,191,127,218,164, 86,152, 24, 36, 72, 78, 37, 65,125, 45,173,113,178,176,139,107,204,124, 21,190,170,132, 24, - 84, 39, 38,171,248,147,200,195,121, 6,136, 36, 34, 41,113, 29, 43, 48, 51, 18, 0,166, 64, 67,241, 69, 70, 35, 66, 81, 16,177, -170, 83, 46,131, 24, 69, 64,192,212,109,217,224, 56, 0,212, 9,248, 14,136,152, 85, 3, 64,203,140,211,210,185,169,184, 26, 20, -128,120, 63,150, 41,185, 98,134,211,243,233,176, 22,233, 2, 20, 64, 81, 80, 21, 15, 95,123,159,197,135, 7,185,102, 85, 83, 21, - 52,232, 98,156,117, 77, 74, 60,239, 58, 20, 11, 68,221,162,129, 85, 82, 85,145, 98,170,165,148, 90, 93, 3,179, 23,201, 28, 26, - 17,180,113, 67, 28, 24, 88,242, 32,170,168, 18, 82,139, 6,160, 98, 86,153, 25, 12, 24,188,167,129, 20,131,199,200,252, 81, 94, - 85, 3, 98, 12, 49,107, 38,136, 0,232, 47, 81, 5, 81, 21, 4, 11,222,193, 69,168, 50, 41,221,171, 20,166, 38, 48,138, 59,196, -196,164, 86, 4, 35, 52,226, 0, 0,200,177, 74, 77,104, 4, 22, 0, 80, 13, 77,196,199,189, 32,250,250,189,245, 59,184,136, 76, - 77,138, 3, 23, 0,180,122,197, 25, 56, 58, 7,206,251,245,228,117, 37,251, 76,107,106,250, 76, 50,107, 4,164, 56,189,244, 6, -135, 65,187, 7, 86, 4,129, 16, 9,216, 38,135,146, 55,218, 39,162, 1,121,208,157, 48,170,137, 63,117, 76,245,241,251,223,253, -123,255,242, 31,252,215,255,253, 63,116, 73, 66, 12,109, 54,249,217,151, 95,125,244,201, 71,127,227,247,126,255,251, 31,126,235, - 58,103, 80, 33,226, 64, 92, 65,225,176,185,229,221, 68, 5,163,105, 22,236,104, 58, 36,160,172, 2,162, 34, 92,139,149, 82,182, -155,219,190,223, 90,173,196, 36, 82,159, 62,249,230,203,111,158,172,183,251,132,180,154,117, 90, 43,165,248,222, 59,111, 29,159, -158,206,186,217,122,189,126,242,226,197,205,245,245,122,187, 99, 3,111,132,206,187, 24, 99,104,218, 6,145, 68, 10,146,186,118, -217,207,229, 90,196, 64, 3, 48, 16,182, 41,110,242,122,183,223,101,209,200,161,105, 58,211, 58,228, 97,179,221, 86,169, 96, 24, -136, 99, 10,129, 25, 13, 69,171, 65, 21,245,207,143,246,253,120, 43, 27, 85, 43, 34,128, 40, 38, 0, 16, 41, 18,123,161,140, 38, - 86,138,204,187,121,219,117, 82,235,118, 8, 23,151,151, 64,156, 98, 36, 47,196,144, 76,209, 73, 31, 38, 0, 96,242, 11,242,130, - 78,195,118, 63,174, 81,236, 96, 46,124,221,181, 3,143,114, 79, 80,185, 73, 81,110,224, 31, 36,251,133, 96, 23,196,227,183,230, -192, 31, 23,100, 29,122, 23, 6,186, 27,251,200,113, 57,155,143, 57,239,199,190, 47, 37, 40, 35, 66,228,144,179, 0,216,209, 98, -121,124,180,124,235,254,131,211,227,249, 59,143, 30,125,253,244,229,241,106,126,117,115, 99, 64,243, 38,237,153,110, 55,155,253, -176, 59, 91,172,126,240,157, 15,190,124,246,124,183, 27,186,118, 86,164,158, 95,190,236,115, 63,140,101,170,228,204,198,154, 85, -100,179,223,139, 2, 49, 53, 49, 52, 49, 49, 97, 8,132,196,129, 25,145, 66,226, 36,193, 27,122,190, 66,229, 25, 98, 1, 33,196, - 92,118,144, 1, 21,140, 56, 16,197, 20, 2,167, 38, 4,171, 89,192, 76,141, 57, 18, 26, 50,117,109, 71,243,165,106, 21, 53, 5, -171, 89, 74,201,253,216,247,195,176,222,238,110,215,119,185, 31, 70, 51, 50,100, 14,106,224, 59,223,174,238, 33, 35, 12,228, 23, -231, 64, 72, 8,204, 60,214, 2, 64,132,168,206,237, 10,225,224,134,155,164,165,222,252, 36,164,121,162,106, 36, 10,106,224, 62, -107,158,250,147, 10,230, 56,247,105,238, 45, 86,153,153,144, 1, 21, 1,130,129, 78, 52, 51,159, 15,168, 26,138, 78,192,121,240, - 25,130,169,249,202,161, 40,120,202, 7, 16, 20,170,148, 32,147,177, 27, 8,153, 25,153,235, 96,168, 94,195, 24,120, 58, 14,192, - 39,177, 42, 38,166, 65, 39, 85,146, 18,128, 0, 51,153, 30,160,234, 62, 79, 86, 45, 85,109, 42, 11,209,192,162,151,245,160, 38, - 85,112,210, 63,192, 52,192, 38,191, 96,190,254,248, 33,162, 34, 0,161,122,108, 0, 13,205,249, 42,182,207, 25,181,154, 90,211, - 36, 81,169,185,214, 34,226, 21,111, 21,164, 98,106,104,170,102, 33, 4,102, 87,195, 1,152, 32,100, 65, 52, 18, 52, 21,149, 92, - 70, 83, 20, 0,217,141,218,151,217,124,142, 20,164,142,158,220,101,118, 81, 19,136,178,138,170,168,128,166, 24, 1,200, 16,152, -130,104, 65,162, 67,116,219,199, 6,164,104,102, 24, 41, 16, 83,197,172, 62,215, 1, 69, 34, 15,215, 35, 19, 6, 12,196, 24,130, - 22, 1, 80, 38,139,161, 1, 19,172, 37,248, 16, 5, 12, 0,217, 3,141, 70, 19, 3,192,251,240, 96, 64,254, 15,242,181, 86, 64, - 35, 50,127, 5, 19,193, 33,133,110, 98,194,132,248,250, 94, 76, 62,125, 3, 87,159, 78,189,243,169,103,228,231, 2, 78, 92,245, -224,162,130,234, 48,162,195, 93,219, 76,200, 67,144,164, 40, 83,215, 29,125,252,139, 0,156,126,227,183,126,247, 39,127,245,217, - 95,126,121, 62, 22, 5,172, 98,245,249,179,175,175,119, 35,254,223,127,252,175,252,139,191, 23, 17,170, 1, 0,138, 1, 35,187, -125,220,107, 34, 39,200,212, 90, 76, 32,117, 45, 49,155,218, 80,180,100, 21,195,177,223,110, 54, 55,195,230, 70,181, 16, 52, 24, -224,213,249,213, 23, 95,124,241,234,246,246,236,228,232,209,189,123,254,140,185,127,239,228,241, 59,239,150, 90, 63,254,228,147, - 39, 47,206,183,155, 45, 50, 53,169,233, 98,116,109, 83,219,134,200, 41,196, 84,107,221,247,123,169, 38, 32,104, 48,150, 44, 62, - 22, 16,193,192, 49,165,128,184,221,237,247,117,156, 55,179, 46,145, 66,237,251,221,221,110, 39, 53, 35,133, 16, 98, 74,145, 0, -106, 21,138,228,153, 76,100,220,237,251, 82,234, 56,142, 67,205, 67, 17, 52,240, 37,108, 71, 81,215, 92, 20,168,141, 12, 8,185, - 10, 80,192,192,221,172, 67, 83,142,169, 31,199,190, 31, 1,145,137,170, 74,155, 82, 79, 67, 21,144,170, 96, 54,249, 33, 0, 0, -176,250,136,115,218, 52,112,150,160, 47,240,201,107, 78, 4,161,153, 84, 18, 52, 70,240,110,236,228,142,240,176, 7,152,107,214, - 16, 84,125, 72,134, 7,110,219,107, 23, 35, 32, 98,128,168,162,131,230,211,213,252,141,120,180,222,236,171, 8, 87,170,117, 60, - 93,173,254,218, 15,126,248,203,223,253,246,217,209,241,213,245,205,205,230,174,235,230, 63,127,242,205, 63,247,215,127,253, 39, -159,126,129, 0,127,244,167, 95, 75, 41,187, 97,124,116,239,222,143,190,247,221, 24,194, 23,223, 60,249,240,219,239,253, 47,255, -232, 15,127,254,252, 89,140,225,187,239,188,255,217,147,175, 36,151,181,202,221,250, 46,139, 34,113,147,218, 89, 55,107, 34, 65, -213,106, 58,230,177,102, 25,139, 53,109,154,165,176, 94,103, 10,161,235, 98, 12, 33,134,164,166, 76,204, 20,220, 9,163,100,100, - 17, 3,130,214,177, 74,174, 57,114,206, 28,183, 62,116, 34, 8,192,109, 19,230,179,217,241,201,106, 53, 91, 44, 22,139,197,114, -217,164,132,224,208, 43, 37,166, 97,216,247,195,112,187,221,223,222,220, 92,222,220, 92, 92, 95, 95,223,221,109,118,187,113, 24, - 21, 16,136, 34,154,130, 53,137,171, 26,249, 22, 9, 10, 81, 64, 0,102, 14,200,194, 64,170, 8,134, 85, 9, 95,231, 18, 4, 12, - 98,224, 64, 80, 11, 18,128, 0, 84, 55, 60,160,209, 65, 81,227, 89, 55, 5, 83,180, 68, 36,102, 85, 20,193,200, 64,208,204,128, -201,199,132,140,204,117, 20, 96, 68,196, 20,130, 1, 72, 17,181,233,140, 7,223,122, 12, 0, 78, 87, 55,200,165, 4,242, 46,196, -116,133,102,132, 74,147,172,195, 0,101, 66,157, 24, 57,242, 89, 9, 95, 63,239, 41, 32, 84, 10, 80,242, 97, 68,230,119, 8, 52, -213, 26, 83, 16,255, 98,147, 41,128, 2, 4,131, 38,165, 34,117,132,202, 24,188, 28,170,135, 91,188, 63,142,166, 63,168, 30,118, - 56,209,196, 52,152, 41,138,104,201, 37, 48, 35,186,123,141,188, 9,129, 64,222,156, 48,169, 70,135, 46,238,228,150,245,184, 97, - 48, 83, 4, 99, 99, 65, 8,204, 33,206,167, 35, 18, 76, 22, 77, 63,150, 50,246,165,102, 4,202,219, 29,161,174,142,143, 65, 33, - 4, 78,169, 17,199, 67,233, 33,202, 2, 96,200,117,204, 68, 16,187, 14, 20, 84,132, 56,160, 66,213,202, 42, 20, 99, 84, 54,173, -197, 4, 77,128,162,203, 41, 1, 45,181, 51,160, 70, 84, 17, 70,173, 89,148, 74, 41, 0, 86,198, 26,204, 44, 16,187, 88,212, 7, -125,147, 74,148, 24,181,138,186,192,197, 5, 52,206,226,114,189,246,212,192, 57,204, 48, 13,167, 81,172,247,225,205, 49,188, 56, -133, 61,217, 84, 16, 25,220, 71,240,186,181,232, 44, 80, 55,225,137, 77,115, 39,169,126, 11,161,224,240,107,179, 98,134,130, 8, -200, 65, 93, 4, 8, 38, 90, 67,211,158,157, 29,133,111, 94, 50,113, 95,198,191,253,183,255,206,223,255,187,191,251, 31,255,167, -255,217, 71,207,111,239,110,215,247, 79, 87, 8, 40, 90, 35,199, 73,176,164, 21,129, 28, 32,105, 0,134, 65, 8,106, 1, 85,200, -185,236,247,125, 25,247,155,187, 43,169,125, 41,194,204, 99, 63,188,186,120,250,252,229,121,191, 31, 87,199,171, 31,125,248, 97, -215, 70, 49,107,186,166,107,103,219,253,238,159,254,241,255,243,244,233, 11, 84,156, 47,218,163,213, 74, 75,165, 72,136,200,132, - 41,165,192,156,115,222,247, 89,180, 26, 88,169,101, 59,246, 42,214,196,232,143,103, 64,146, 34,125,217,138, 89, 12,180,104, 90, -209,124,181,223,229, 33,103,169, 76,212,181, 11, 87, 56,214,146,199,113, 64,132, 93,191, 51,128,174, 73, 6,160, 34,187,253,190, -207, 85, 14,210, 6, 64, 8,136,200, 44,110,206, 50,219, 13,121,172, 18, 66, 56, 89,117, 0, 8, 68,203,249,113, 72,187,162,114, -125,123,155,135, 33, 5,130,138, 33,193,201,114, 46,106, 85,178, 20,237,171,136,135, 66,193, 0, 72,138,137, 21, 15, 85,161, 17, -128,232,180,220,172, 0,236,253,129,131,142,124, 10, 68,191, 70, 38,123,119, 21, 64, 13,244,160, 51, 68, 0,100, 36,100, 50,209, -170,114,160, 80,184, 5, 27, 8,112,187,207,139,123,179,227, 85,216,238,119,106,150, 82, 60, 61, 57,249,217,151, 95, 32,193,111, -252,234,175, 62,189,120,117,117,125,243,103, 31,125,244, 7,191,247, 55,193,240,234,230,246,110,183,101,179,211,147,179,251, 32, -247, 79,206,250,220,255,244,203, 47,193,234,221,245,237,237,110,247,224,232, 56,197, 16, 80, 77,236,102,191, 55, 85,160,112,178, - 88, 44,218,200, 33, 52,137,251,177, 8,212, 89,140, 2,154, 51, 0, 85,239, 39,109,246,251,237, 48, 6,226,227,197,114, 62,107, -124,170,204, 68,196, 76, 72,145,137, 89, 72,200,145,135,196, 20, 34, 51,211,178,107, 87,179,249,209,209,124,217, 45,142, 87,203, - 7,247, 78, 23, 71,171, 38,164,110,190,108,187, 6, 57,198,208, 32, 18, 51, 41, 96,238,119, 82,133, 2, 73,201, 67, 63,230, 50, - 12,251,225,250,246,238,249,203, 23,215, 55,215,175,174,110,206,175,174,251,113, 44,181,108,182, 61,249,188, 36,155,169, 16,147, - 78,155,241,147, 28,144, 2, 50, 51, 30,114, 16, 16,152,249,144,129, 64,245,224, 26,185, 43,141,208, 0, 2,130, 0, 25, 0,249, -206,253,100, 34, 7, 84, 31,237,249, 56, 16,170,154,162, 69, 85, 67,101, 32, 19, 19, 81,102, 34,162,215,177, 31, 31,183, 76,236, - 61, 3, 37,223,106, 3, 85, 13, 49, 32, 76, 19, 26,157, 0,124, 38, 82, 99, 8,136, 19,114,209,151,187,244,128,242,155,232, 49, - 66, 58,177, 24,136,129, 92,202, 3, 8,234, 78, 47, 55,165,120,129, 15, 20, 27,166,202,125, 41,191,160,221, 30, 98,205, 94,205, - 0, 26, 1, 16,177,128,248, 5, 72,204,129,184,160,134, 6, 26,136, 83, 72,204, 44,104,106, 26,152, 60, 48,231,135,149,233,193, -241, 0, 24,188,154,240,198,254,244, 8,241, 50, 2, 85, 11, 76, 37,170, 17, 83,215,112, 23, 16,176, 19,145, 82,115, 85,232,251, -141,130,201, 86,193,128, 56, 32,114, 12,129,145, 93, 21,146, 56,104, 67,138,106, 82, 69,192,197,132, 68,200,212,148,154,163,162, - 25, 34,179,235,225,189,155, 69, 76, 41,118, 20,163, 26,128,168, 48,131, 48,162,184,160, 43,166, 24,124, 70,195,164,106,138,222, -233,113,168,130,200,148,129,132, 26,220, 91,228, 23,187,105, 44, 64,240,122,156, 58,153,103,109,122, 49,224,208, 79, 7, 50,127, -202, 50, 3, 18, 30, 72,147, 94, 19, 76, 18, 73,143, 87, 22, 53,156,150,152, 60, 41,139, 83,236,210, 59, 62,135,241, 45, 26,146, - 11,124, 3,154,197,212,157,156,156,196, 16,108, 28, 9,237,195,247, 31, 47,239,191,253,239,255,187,255,222,215, 47, 46,222,184, -127,154,165, 18, 34,249,146,147,191,201, 22, 20, 76,180, 42, 54,128, 73,209,198,220,247,187,245,110,123, 11,160,253,110, 43,181, -214,113, 24,114,190,189,187, 27,246,187,167, 47, 94,222,237,199,119,223,124,248,230,123, 15, 30,156,158,238,199,129, 98,179,217, -220, 62, 57,127,181,221,238,250,126, 47, 34, 71,243,101,140, 68,132,166, 48,155,207,129,212,239,190, 82,202, 48,228,177, 12,106, -152,203,184, 31,134, 92, 74, 76, 77, 27, 83,206,185,170, 17,152, 47,103,167,148,128, 96,236,135,245,176, 21, 81, 69,136, 28,102, - 33,229,156,183,253, 46,231,108,104, 12,160,196, 94,250,116, 77, 82,131, 82, 11,152, 6,230, 38,162,177, 9, 64, 46, 89, 68, 81, - 77, 12,198,177, 20,145,249, 98, 53, 14,163, 24,204, 83,211,196,208,180, 29, 24, 50,208,106,182, 84, 49, 4,188,190,185,164, 16, -131, 9,171,142,165, 0, 81, 96,142, 28, 79,219,118, 40, 5, 0, 57, 4,169,117, 44,165, 31,185,106, 5,133,125, 46,224,187,109, -190,109,140, 24,152, 39,241, 49,144, 19,129, 8, 80,124,124, 98,102, 0,213,243,193, 2, 72,211, 12, 29,253,147, 86,157,169,239, -233, 16, 80, 3,144,226,242, 94,149,250,205,249,171, 20, 82,100, 34,198, 93, 63,252,252,155, 39,187,156,111,215,155,245,110,207, - 28,150, 77,184,184,188,250,209,135,223,251,175,254,219,127,240,245,243,167,219,221,240,214,131,179,229,172, 93,180,205,243,203, -139, 79,191,220,236,198,225,151,223,123,175,214, 50,239,154,161, 31,158, 93, 92,252,197,231,159,143, 99, 65, 14,247,143,142, 56, -134, 89, 10,226,254, 63, 32, 55,150,149, 34,175, 23,253,162,219, 19, 8, 3,179,175,153,148, 42,102,134, 25, 8, 81, 85, 82,106, - 76,149,153,145,177, 73, 13, 17,182, 93,119,180, 92, 52, 41, 53,145, 17,177,140,117,135,253, 88,203,237,122, 29, 83, 76, 49,165, -192,177,105, 98,224,182,105, 83,211,116, 93,155, 82,215,117, 93,136, 77, 4,167,225,116, 11, 64,169,245,222,155,143,190,243,225, -135, 53,143, 67,223,239,251, 97,191,219,221,238,119, 55, 55,183,125,223, 95, 92, 93,157, 95, 92,188,188,188,185, 94,223, 14,227, - 40,166, 82,235, 80,106,100, 98,167,222, 33, 50,162,168, 17, 25,161,138, 10, 57,196, 65, 13, 16,196, 27, 47, 6, 7,199,185,137, - 11,196,167,131,210,200,231, 2, 7, 97, 41, 32, 86, 81, 35,216,245, 3, 35, 66, 12,168,130, 94, 68,136, 77, 20, 28,175,225,192, - 16,216, 13, 11, 4,102, 98, 74, 58, 61,241, 1,212,192,204,170, 86,123, 61,112,115, 71,142, 79,231,241,181,146,243,144,214, 38, -239, 26, 79,171,135,135,101,115,111,113,160, 79,250, 15, 43, 57, 83,168,207,197,182, 94, 13, 42,168, 39,158,189,123, 48,197,165, - 16, 25,253,251,105,116, 88,119, 84,223, 66, 64,242, 49, 53,161, 63,180,176, 77,105,250,165,167,203, 40,153, 26,210, 65,215,137, -232,203, 76,126, 75,179,195,125, 6,192,165, 17, 14, 83,215,201,149, 34, 25, 57, 0, 96, 19, 40,197,160,106,210, 84, 4,168,213, -212,164,152, 20, 49, 43, 40,158,245, 80, 52,211,148, 26, 34, 66, 85,110,102,192,164, 42,140,236, 26, 91,153, 54, 71,145,136,137, -128, 66, 40, 90,104,172,128,172,181,162,169, 15,234, 25,217,204, 68, 53,120,109,124, 80,160,122,168, 82,209, 96, 28,247,138, 16, - 98, 98, 12,192,234,207,241, 73,154, 1, 7,162,129, 41, 26, 34,177,119, 27, 38,199,152,185,203,132,166,115,158,144, 1,100,154, -218,226,100, 3,156,108,123, 56,125,198,216,208, 87, 38,124,250,141,138, 46, 8, 6,243,119, 85, 77,161, 40, 78, 15, 34, 64, 53, - 32,131,144,222,126,231,209,172,249,201,205,126,247,111,253,189,127,243,111,254,238,111, 93,223,174,219,229,201,247,150, 39, 99, -206, 46, 64, 83, 21, 49, 9,196, 96,152, 85,139, 24, 88,163,162,187,237,171,187,219,203, 60, 12,181,230, 54, 54,155,237,238,110, -125,179,185, 91,143, 99,217,236,182, 23, 55, 55,187,113, 24,134,252,155, 63,252,254, 59, 15,239,109,250,225,235,103,207, 95, 92, - 94,170,170, 41, 68,102, 38,106,155, 70, 65, 83,136, 77,140,181, 20,136,147,246, 88,164, 74,150, 2,178, 27,122,149, 58,150,234, - 76,184, 38,182, 77,211,212, 90, 74,201, 49,133, 20, 98, 32,206, 85,214,187,253, 48, 12,128,126,231, 49, 16,237,181, 82,128,126, - 28,107, 22, 66, 42,160,168,150, 18,165,192, 33,132,148, 18,170,133,166, 51, 21, 77, 96,125,191, 29,199, 82, 10,136,229, 92, 55, -251,190, 22, 49,131, 16,194,138, 98,106,177,239,183,137,136,153, 82, 74,132, 40,181,132, 54,205,218, 57, 32,170,202,118,191, 13, -145,135,221,110,148, 74, 24,198, 33,171, 72,215, 53, 99, 29,115,214, 54,197, 89,155,174,238, 6,145, 82, 85, 23, 41, 22, 6, 85, -200, 94,177, 1, 86, 25,198,106,136,180,104, 23,164,162,170,128,254,205,135,195, 90,244,161,168, 3, 51, 65,142,129,137,204,196, - 79, 86, 1,129,131,150, 17,255, 63,166,222,228,201,146, 43, 75,239, 59,211,189,238,254, 94, 68,228,136, 4,178,208, 72,160, 10, -133, 2, 10,133,170,234,177,154,205,238,102, 75, 38,146, 34,165,141, 54,250, 87,100,166, 21, 55,210, 74, 75,153,100,148,204,180, -144, 22,148, 22,220,203,180,144, 68,177, 57,136,109,106, 90, 79, 53, 0,141, 49,231,200,136,200,136,120, 17,239, 61,119,191,247, -156,163,197,185, 30, 40, 24, 12, 11,100,100, 90, 70, 60,247,123,207,240,125,191,143,192,201,168,137,173, 29,220,231,105,174,232, -146, 51,128, 87,117, 97,222,238, 71, 51,115,155,254,242,201, 55,111,222,125,240, 63,255,243,127,158,200, 62,249,224,253, 63,255, -155, 95,117, 41, 37,198,199,175, 94, 61,125,121,140, 68,111,222,191,115,118,121,113,126,181, 59,223,108,166,121,158,107,217,205, -179, 16,175,114, 74, 89,192,148, 72, 98,148, 69, 68,132, 22,233,151,220, 68,191,212,183,144,140,152, 46,185,153, 9, 68, 48, 54, -127,164,218,126, 0, 0, 32, 0, 73, 68, 65, 84,104,200,254, 16, 38, 51, 44,133,136,204, 9,220, 78,207, 55,167,231,175, 69, 82, - 34,236,115,151,251, 62, 9, 15, 41,231, 62,175,251,190,239,186, 33,119,195,106,232, 82,215,101, 1,132,156, 83, 78,105,213,117, - 93,238, 83, 78,125,238, 68,114,215,103,233,114,226, 14, 68,250,131,131,225,240,214, 29,128, 50, 79,101,154, 34, 98,177,150,178, -223,237,171,233,118,187,221,238,118, 47, 94,157, 60, 63,126,254,234,228,244,229,217,235,205,213,245, 84, 74,169, 85, 17,170, 59, - 34,177, 80,226,206, 92, 17, 32, 49, 59, 2, 97, 0,129, 48, 10, 52, 71,211,166, 91, 39,107, 34, 93, 50,168,177,225,173,174,213, - 42,129,171, 59, 24, 42, 32, 49, 87,176, 82,106,183, 94,185,151, 22,228, 19,193,216, 11, 84, 53, 80,105, 46,208,178, 49, 29, 8, -145, 16, 84,219,218, 5, 93,145, 40, 94, 98,173, 21,146, 52,183,161, 81,156,231,222,246, 54,104, 8,160, 14,130, 75,163, 16,190, - 11,144, 69,211,225, 0, 2,208,166,234, 30, 33, 24,128,224,218,250,138, 88, 7,196,182,207,221,169,154,133,202, 40,164,249, 14, - 28,131,108,110,147,105, 20, 68, 6,174, 45,235, 77,209, 20, 68, 22,163, 71, 88,144, 26, 13, 55, 80, 89,176,252, 23, 91,125, 27, -161,111, 96, 22,231,123,196, 62, 65,117, 5, 3, 35, 50, 83, 4, 96, 32,141,234,219,157, 24, 73,200, 99,125,138,136, 0,101,198, -113,222,199, 29,171, 87,215,132,158, 83, 39, 34, 76,243,208,119, 57, 15,224,125,245, 26, 20,150, 54,140,211,234, 54,155, 53, 86, -164,154,154,107,151, 68, 82,150,134, 62,140, 40,120,136, 80,104, 2, 80,104, 42, 87, 34, 34, 45, 21,127, 45,225, 34,246, 62, 45, -178,176,197,163,198,245,127,131,160, 97, 12,123,196, 18,140,221,248,234,237,113,112, 12, 51, 95,236,199,205,219,154,179,209,127, -169, 9,103,189,137, 54,227,154,176,224, 32, 56, 48,130,130,129,131,170,126,239,251, 31,189,255,232, 47,206,175,174,254,252, 47, -254,242,247,126,243,147,135, 15,238,107,144, 3,157,193,201, 45,196,178,190, 29, 75,169, 62,215,121,127,189,223, 94, 95,108, 47, -207,129, 60,247, 67,166,238,250,250,252,228,234,197,102,179, 57,187,216, 92,239,198,205,126,111,238, 12,246, 27,247,238,173, 87, - 7,168,246,255,253,205,175,230, 82,166, 90,250,190, 59, 90,175, 81,141,146, 76,115,233,251, 62,160,201,165,148,170,202, 0,165, - 76, 83,213,237,126, 55,149, 74,136,224, 80,138,185, 27,177,116, 41, 51,147, 91, 69,244,245, 48,152,131, 22,221, 76,187,105,158, - 40, 48,159,104,213,124,156,138,187,151, 50,155,249,106,232,136,220,221, 87,146, 73, 66, 89, 33, 34, 4,224,187,121,174,181,152, -195, 84,202,126, 63, 22,179,243,203,125, 47,121,181,202,215,251, 73,152, 0,201,106,153,167,221,193,225,209, 52,143,213,189, 58, -148, 90, 19,167,209, 77,231,210,119,121, 42,124,235,240,246, 56,141, 69,173, 78, 51, 2, 36, 78, 38, 58, 47,241, 89,230,243,118, - 95, 9,161,216,156,114, 63,237,118,213,157,137, 51, 51, 85,221,169, 18,120, 45,109, 92, 86,185,152, 71,195, 36, 14, 46, 66, 72, -174,165, 21, 96, 81, 20, 75,162, 46,101, 55,175, 78,137,221, 92,201,227,212, 16, 10,207,106,173,106,176, 36,236, 26, 17, 24,242, - 28, 87, 53, 25, 40,108,107,249,252,155, 47,127,247,147,159,220,221, 77, 47, 78, 95,253,187,159,255,229,135,239,189, 43, 44,235, -126, 24,250,225,151, 95,126,115,118,185,233, 58, 41,251,114,126,113, 61,149, 82, 74, 81, 51, 4, 76,196, 8, 4, 72,130,220,165, - 52,206,234, 14,140, 76, 34,132,128,192,166,213, 29, 52,150,144, 64, 90, 29, 51, 58, 97, 76,120,205, 93,137, 96, 54,103,100,193, -162,160,110, 45, 39,129, 80,205,136, 96,154,167,205,246,122,158,231,169,234,186,235,238,221,185,219,103, 49,119, 38,200, 93,238, -114,223,119,169, 75,121,181, 26,214,125, 78,185,235,115, 78, 44,253,208, 13, 93,223, 17,165,156, 72,120, 72,137, 24,153,164,203, -221,106,189,202,125,223,247,125,204,115, 68, 56,165, 78, 97,181, 62, 58, 68, 71,115, 53,181,143,127,232,243,180, 87,211,237,213, -110,115,117,117,189,187,186,216, 92,157,158,111, 78,206, 78, 47,175, 55,187,237,190,104, 25,167, 66,233,234,122,187,171,101, 6, - 18, 96, 36,201, 8,144, 18, 67,117, 87, 7,196,204,162,110, 70, 97, 75,105,154, 66,104,193, 8,132,110,171,190,175,102,141,101, - 2,192,205,158, 98, 6, 75, 27,191,168,171,133,196,213, 84,227,165, 70, 53, 16,136, 50,182, 80, 51, 48, 18, 69,208, 34, 2, 16, - 9,199,200, 5, 0, 12,127, 61, 78,231,102, 30, 31, 69,222, 77, 34,115, 51, 81,218,183,206,169,246, 79, 59, 81, 0,144,131,107, - 2, 74,203, 95,207, 1,144,141,154,247,161,141, 16, 4,129,144,237,198, 95,230,145, 64, 17, 99,101, 52,171, 49,173, 90,124, 5, -184,240, 80, 22,157,246,242, 95,132, 95, 27, 76,123, 4, 52,147,186, 57,134, 70, 74,172,204, 76, 24, 55,209, 98,246,141, 11, 5, - 33, 8, 95, 6, 8,173,246, 37,162, 62,177, 69,226,220, 0,213, 76,171,206,102,101,156,232, 26, 25,185,239,187,156, 6,247,210, - 15,189, 71,114, 33,160,161, 51, 83,124,215,237, 90,131,228, 54, 10, 32, 0, 90,219,106,104, 88, 14, 21, 0, 82,234, 0,129,137, - 22,253, 98, 67, 18,184, 1,210, 34,130,108,202,241,166,182,113,215,144, 83,182,212,246, 80, 97, 16,220,124, 45, 52, 35,176,131, -183,213, 5, 32,120,132, 48,154,183,150,203, 26,186,166, 54,169, 76, 5, 39, 68,148,166,140,132,198,181, 49,208, 82,215,183,239, -255,228, 71, 31, 62,125,245,250,179,191,253,244,191,249,111,255,233, 31,254,236,183,223,125,231,237,119, 31, 61, 90, 31, 12,117, - 46,213,113,158,109,119,181,221,110,175, 46, 94, 31,107,157, 9, 41, 13,131,187,237,174,199,103, 79, 95,108, 54,151,211, 92,205, -180,212,249,122,172,199,167,231,175, 55,175, 75,133,223,250,248,251,204,252,226,244,149,187,119,146,115, 74, 67,223, 73, 98, 87, -115, 4, 68, 31,134, 46,145, 76,101, 95, 38,155,234, 92,107,157,180,106, 41,145, 44, 44,200,115,173,238, 22, 90,198,148, 36, 49, - 87, 4,161, 84,173,238,119,251,237,110,111, 90,195,228, 51, 77,234,164,153, 72,193,221, 93, 85, 29, 17,192,166,185, 6,112,115, -246,146, 85, 82,230,113,218,215, 42,136, 84,106, 13,207,250,241,201,235,235,237,148, 83,222,142, 99, 62,148,144,187, 54,145, 42, -248,245,118,123,116,120,120,184, 94,237,246,211,209,129,153, 26, 11,130,185,147, 39,228, 33,103,181,218,231,161,238,182,251,113, -138, 48,248,177, 86, 34,116, 80, 15, 74, 4,243,126,158, 19,114, 39,121, 15,123,115, 23,137, 72, 73, 22,115, 71, 3,100, 0, 71, - 2,181, 90,220, 28, 32, 71,151,167, 68, 78,156,144, 16, 17,104,154, 75,117,200, 44, 0, 80,172,148, 82, 99,220,198, 76,128,216, -161, 64,196, 60, 18,155,107,148,252,193,115, 37, 36,213, 90,107,201, 41, 27,249,126,156,190,248,234,201,203, 87,167,219,253, 4, -102,230,254,171,175, 30,223,191,125,171,152,255,237,227,199,227, 56,137, 72,172,131,198,105,102, 38, 38,170, 53,188,126,102,110, - 2,236,230,115,173, 4,160,142,166,245,160,235, 23, 43,174, 19, 35, 20, 23, 0, 5,216,105, 89, 85,129,182,149, 91, 8, 23,177, - 84,139,229,131,186,187, 51, 33, 17, 67, 68,187, 0, 48,177,176,212, 64, 98,187,169,251, 56,238,189, 88,215, 77, 35,237, 47,208, -138,129, 1,100, 73,195,208,245, 57,229,156,135,161,207, 41,173,251, 44,146,186,110, 24,152,115, 18, 96, 72, 40, 34, 32,146,251, -156,187,148,134,213,106, 24,250, 46,231,148,251, 97, 53,244,253, 64,146,220, 13,145,186,213,129,214,185,239,215,111,188,249, 80, -132,145, 12,129,208,169, 90,157,203,140, 0,169, 27,246,219,237,147, 23, 79,126,245,249,151,127,253,243, 95, 62,121,254,236,242, -234,202, 61,244, 43,136, 8,137,153, 18,121,141, 96,131,155, 96, 50,112,160,162,145, 94,205,196,132,106, 75, 22, 4,128, 91, 99, -125, 99,152,135, 12,152,140, 66,203, 67,106,132,102, 4,192,132, 20,101, 25, 33, 32,171,213,208,184,187,129, 53,144, 3,178, 83, -187,211, 9,168,233,112,113, 97, 65, 1,242,194, 75, 89,150, 59,196, 88,212, 36,126,251,114, 44,135,185,107, 73,230,137, 4,160, -182,217, 69,192,128,159, 80, 60,140, 0,205,124,199, 33,216, 64, 52, 6, 32, 98,138,243, 23,180, 13,232,169, 21,229,234, 78, 4, -173,172, 13,225, 56, 51, 53, 44, 4, 1,212,240,237, 59,146,131,125,123,200,251, 50, 0,115, 87,162, 22,115,100,176,232, 9,208, -163,147, 80,112, 4,108, 43,180, 38,219, 86, 55, 66, 3, 11,179,146, 16,101, 79,128, 29,118,224, 80,205,118,243, 56,150, 73,221, -253,106,139,104, 93,146,190, 27,170, 26,186,167, 68,194,153, 72,156,132,216,187,220,201, 50,180,106,183, 36, 24, 54,212, 10,179, - 47, 22, 82,162,229, 39,223,200,235, 97,162, 96,168, 22,243,211,118, 29, 53, 13, 98, 0, 14,110,166,111, 97,192,117,247, 26,169, -153,232,248,107, 67,123, 68,140, 68, 93, 96,140, 9, 69,148,123,113, 91, 48,198, 84,108, 33,130,197,157, 23,105, 26,224, 88, 1, - 63,250,248,195,255,227,255,254,215,128,248,217,151,159,159,188, 58,249,224,189,119,254,206,239,253,236,251, 31,252,160, 22,189, -188, 60, 63,125,245, 98, 30,183,135,135, 71, 40,208,247,171,147,151, 47, 79, 63,255,114,187,219, 95,239,119,211, 52,147,208,189, -163, 91,187,113,252,213, 87, 95,159, 95,111,175,183,227, 88,230,219,135,107, 43, 58, 82, 93,245,131, 59,136,144, 48, 17, 49,154, - 86, 55, 0, 34,164, 82,202,102,188,218,239, 71,119,136,158, 11, 8, 19,231,226,166,117,158,107, 65,132, 97,232,187,148,208, 41, - 39, 6, 71,171,229,106,119,189,159,198,121,156, 83,206,136, 20, 91, 92,117,173,181,170,137,147, 23,179, 56,211,157, 41,114, 26, - 1,168, 79,210,117,169,212,146, 37, 57,200,103,143,159,100, 74,138,176,189, 30, 83, 48, 50,213, 76,107,223,165,170,134,190,240, - 50, 1, 75, 45,151,155,205,237, 59,119,182,219,113, 55,238,115,215, 59,130,106, 33,166,169, 22, 22, 73,194,134, 86,180,198, 20, -181, 84,117,115, 68, 81,131, 82, 85,132,133,152,153, 70, 40,241,227,142,135, 33, 11,141,179, 13, 34,163, 22, 5, 19, 32, 64,112, - 2, 50, 92,180, 84,160,110, 8, 4,234, 6,241,173, 88,173,213,152, 10,145, 86,109,108,103,116, 84, 80,116, 6,116,247, 10,222, - 75,190,179, 62,236,114,183, 94,245, 69,171, 19,141,187, 73,189, 74,238, 90, 35,120,168,227, 56, 79,115, 57, 90,103,102,100, 98, -114,152,231, 73,205,201,177, 27,122,173, 5,213,220, 21,208, 59,145,105, 46,213, 20, 29,138, 25, 2,133, 11, 49,179,236,166,153, -185,246, 41,133,155,217, 90,245,233,193,215,107, 52, 95,106,228, 59, 48,103, 18, 8,225, 7,162, 1,144,144,155, 41, 56, 85, 55, - 52, 2, 53,171,174,218, 34,222, 13,209,117,210,194, 46, 4,168,132,106,142,228, 65,125, 40, 85,103, 24,231,121,190,112,221,238, - 39, 36,100,230, 62,167,190,235, 87, 67,215,229,212,229, 28, 35,155,156,164, 11, 74, 79,151, 51,113,151,101, 24,134, 46,119, 89, -184, 75,121, 88,175,114,215,175,134, 97,181, 62, 76, 73,186,156, 73,160, 91,175, 57, 15,145,120,156,220,123,176, 97,117,216,175, -214,170,245,209,247, 63,250,217,239, 79,187,203,215, 79,158,124,243,249, 23,127,251,217,151, 95,125,253,244,233,241,217,249,197, -245,118, 86,239, 34,149,135, 81, 8, 33, 49, 87, 82, 55,161, 64, 38, 4,222,210,204,141,145,163,173,119, 34, 87,183,104,244,137, - 91,132, 25,114,172,206,132, 83,169,161,101, 64, 34, 65, 98,243, 54,110, 1,192,101, 9, 27, 55, 34,148,150,140,214, 42,101, 15, - 63, 38, 80, 44,233,154,187,106, 17, 6, 17,128, 90, 76, 66, 8,177, 45, 57,173,169,244,112, 17, 95, 35,199,138,216, 33,192,230, -145,215,215,118, 70,141, 75, 8,232,196,136, 68,168,174,161,193,181,216, 38, 36, 6,152, 45, 66,181, 91, 43, 25,170,109,188, 1, -164, 44, 29, 6,184,234, 2,123,246, 6,165, 93,138, 89, 2, 86, 85,243,106,145,112, 68, 28, 50, 69,247,216,139, 7,139,194, 64, -154,151,196,129,219,212, 19,220,205,128,163,113,114,159, 43,176,196, 11,232, 0, 68,148, 0,145,128, 1,148,157, 80, 12,240,106, -220,155,170,155,233,149, 1,104,151,115,150,126,213,119,251,253, 94,218, 90, 58,124,101,109,221, 12,174, 21,111,150, 13, 20, 97, - 31,161, 44,178,136, 77, 71, 66,175,182,200,219,117,177, 9,133,206,141,220,181,157,247, 68, 96, 96, 94,225,219, 44,168,112,164, - 33, 0,129,153, 55, 45, 87,204,176, 24,201,220, 52,214, 41, 20,238,133, 40, 23,220,127,109,155,235,224, 26,119, 70, 45,229,254, - 91,239,254,230, 15, 30,157, 92,141,191,255,163,143,126,240,254,247,238,223,191,143, 36, 95,127,241,171,211,147, 83,240,122,184, - 62,236,115,119,113,113,121,189,217,156,156,191,222,237,167,125,153,146,200,170,235,190,243,224,222, 60,207,167,103,103,159, 63, -123,250,234,252,138,192,133,232,135,223,125,247, 96, 61,220,187,125, 72, 8, 85, 43,146, 88, 45, 85, 43,170, 33,186, 35,129,217, -230,250,122,183,189,174, 6, 57, 0, 50,136,213, 20,204,175,166,107, 38, 18,225,219,221,161,177,103,150,248,166,247,101,190,190, -222,109,167, 49, 17,179,112, 56,102,135,126,165,251,237, 56,205, 6, 46,196,192,100, 90, 9, 64, 77, 3,113, 42, 68,140,196, 12, -213,230,231,207, 94, 49,117,255,228,191,252, 39, 95, 61,121,246,171,127,250,223,207,243,252,250,242, 82,132,215,183, 14,246,179, - 13,125, 58,191,170,166, 86, 52,152, 29,109, 73,133,136, 87,215,215,171, 97,117,116,176,186,220, 92, 31,172, 15, 74, 17, 22,164, -153, 10, 75, 38,236,251,213,225,176, 58, 63, 59,207, 34, 14,190, 26,242,213,126,207, 89, 57, 9, 16,220,191,117,251,244, 98, 51, -116, 66, 44, 70, 20, 27,113, 74, 92,171, 58,225,144, 18, 78,188, 31, 39, 71, 71, 39,111,175, 80, 51,184, 41,128, 24, 26, 24, 18, - 81,160, 42,152,219, 20,212, 91, 63, 76,128, 8, 40, 8, 73,210, 84,139,213, 90,124, 6,234, 19,107,217,111,163, 33,239, 51,164, - 52, 16, 16,137, 60,184,123,239,106,191,125,189,185,250,250,249,177, 24,118,210, 79,101, 20,102,106,175,186,163,185, 85, 83, 34, -116, 72,200,213, 76,205,192,213,177, 97, 18, 8, 25,217, 12,116, 50,205, 22,127, 21, 5, 98,171,138,136,203, 57, 0, 44, 20,173, -190,197,159, 10,110,132, 14,144,152, 23,225,167,185, 19, 25,184, 43, 3,251, 77,131,218,214,128, 14, 68,104,228,161,161,142, 52, -155,104, 33,212,112,137,182, 49, 11,183,141,143,101, 7,110, 89,228, 96,189,202,196,142,222,117, 29, 33,231, 36,196,148,133,115, -206, 41,165,204,148, 82, 26,186,174,207, 34, 57,245,169, 99,132, 68, 57, 15,114,116,120,112,251,240,246,193,193,193,122,189, 62, -188,125,255,232,206,157,225,240,136,136, 9, 28, 69,144, 0,220, 25, 81, 65,214,183,239,125,120,251,238,135, 63,252,201, 63, 28, -183,175, 95,159, 28,159,188,250,250,155,111,158, 60, 63, 62, 61,191,120,117,118,122,121,189,119,132,121,182,169, 20, 97, 1,194, -156,123,119, 23, 38,164, 20, 51, 91, 92,104, 37, 45, 51, 16,177,173,206,144, 98, 79, 14,170, 72,158, 57,133,209,205, 76,213,156, - 88,124,185, 71, 9, 80, 81, 17,161,170,118, 76,229,166,114,132,155,204,180, 38,243,105, 46, 24,144,246,203, 17, 87, 20,127,144, - 56, 17, 35,160,161,241, 2, 59,107, 34,108, 4, 36, 86,117,108,190,249,229,224,109, 53, 66,192,194, 12,200,220,145,136,200,157, -136,213, 20, 35,198,129, 66, 56, 0, 75, 62, 51,194, 82,177, 66, 76, 26, 33, 14,254,133,189,212,154, 77, 82,117, 83, 67,161,160, -249, 91, 84,252, 30,182, 9,115,211, 24,204,195,194,112, 12,218,157,149, 95,243,185, 97, 24, 76, 5,208, 48,216,173, 37,242,173, - 85, 35,186, 58,150,188,216,134,103,180,148,219,132, 68,137, 1, 73,188,153, 9,182,101,183,215,233,122,183, 21,244,101, 76, 14, - 75,252, 70, 0,228,201,209, 17, 12,144, 1,151,134,169,153,230,220, 98,242,142,238, 22,123,232, 72,218,141,185, 64,155, 97, 44, -198, 49, 95,246,183, 55,124,207, 88,130,132,228,104, 73,224, 0,140,189,136, 47,152,119, 35, 22,104,161, 33, 13,152,215,158, 1, - 4, 4, 6, 7, 98,116,173,199, 39,215, 63,252,233,111, 15,119, 31,174,250, 92,139,190, 58,121, 89, 38, 69,132,163,195,161,148, -233,233,139, 23,187,235,253, 56, 77, 87,227,246,242,250,250,104,189,126,248,198,131, 59,135, 7,251,253,254,197,233,201,203,211, -243,147,215, 23, 93,206,127,247,167,159,220, 59, 56, 82,240,195,163,213,126,156,213,180,204, 90, 74, 65, 82, 85,141,184, 2,117, -173, 85,205,157, 8,187,220,101, 36, 15, 39,155,233, 60,207, 76,120,180, 94, 11,179,169,137, 36, 98,208,170, 83, 45,211, 56, 93, -239,247,132, 88,171, 42, 56, 91, 37,130,185,204,211, 52, 3, 26,144,247, 34,232, 56,107, 85,208,134,137,212,226,140, 64, 84,117, -222, 92,143,199, 39,151, 87,219,253,126,156,255,167,127,246,191,156,156,158, 61, 63,126,241,254,219, 15,227,227,119,112, 39, 74, - 57, 25, 68,150, 39,181,101, 82,232,206, 12,129,252,229,233,233,111, 60,124,147,136, 47, 47,175,242,189,148, 83,239,104,102,138, -169, 99,128,219, 71,183,159,203,241,245,126,191,234, 58,145,212, 49, 5,247, 53, 46,250,142,217, 28,132,128,209,185, 97, 84, 85, - 29,200, 93,132, 7, 64,187, 70,110,205, 46,248,194, 41,137, 94,186,120,101,194, 0,153, 0, 3,170,169, 59, 47,143,113, 20,250, -204, 84, 76,115,146,162, 10, 72, 67,215,177, 81,173, 58,214,232,153,221, 28,246, 69,117,154,137, 57, 37, 62, 61,219,140, 58,143, -227,254,225,189,219, 66,180,159, 13,152,195, 0,172,209,248, 25,104,244,194,140,170,234,139,121,123, 73, 6, 3, 70,182,162, 90, - 53,158,200,198,127,105, 51,220, 70,196, 6,196,176,147,154,153,186, 3,130, 32,128,129, 9,153, 91,117,133,152,131, 53,220, 0, -182,199, 31, 17,129,220, 26, 90,203,188, 90, 83,112,128, 69,166,129,187, 66,251,209, 54,130, 9,185,215,152,119, 48, 16,185,186, -147,215,170,100,147,187, 79,137,173,154, 1,133,140, 72, 8,114,151,221, 60,167,212,117, 57, 19,163, 96,206,194,200, 41,167,195, -174,123,231,237,183, 15,135,213,106,245,108,189,238,239,220,186,211, 13,107, 36,202, 34,135,119,110, 57, 80,151,123, 3, 12,232, - 30, 16,211, 48,188,241,240,221,187,111, 62,252,232,163, 31,150,185, 78,243,126,183,219, 95,188, 62,127,252,252,233,167, 95,124, -241,197, 55,223, 60,123,117,122,252,250,226,122,183, 19,102,160,148, 26,176, 16,152,154,191,136,136, 69, 88, 43,168, 41,132, 50, - 31,193,204,139, 27, 58,144, 16,133, 87, 42,138, 62, 91,236,176,161,172, 65, 49, 51,130,160, 11, 44,217,198,208,170,228,152,146, -235,175,165,218, 7,197,123,249, 3,194, 66, 36, 30,194, 73, 71, 53, 88,142,241,184,197,137,192, 25,160, 66, 59, 56, 98,216,203, -240,173,186, 15,193,209,226,172, 3, 70,202, 33,226, 36, 22,166, 90, 45, 94,115,116, 52, 11,247,246,141, 35,251,219,168, 59,140, - 69,180, 47, 81, 78, 26,195,105,240, 82,145, 25, 17,136,200,156,209,212, 92,137, 56,198, 45,237,225,143,105, 53, 81,153,103,180, - 16, 53,199, 62, 3,137, 28,153, 24,216,209, 66,197, 98,109, 33,172,104,228, 64, 81,131,136, 51, 88,109, 30,134,200, 23,138,114, - 36,224, 80,142,136,216, 37, 46, 53, 11,134,174, 31,221,111, 28, 76,136, 21,130, 91, 76,192, 11, 39,164, 93,175, 28,183,119,216, - 64, 23, 28,204,205,185, 30, 50, 35, 13,208,102,171,181, 23,175,240,194, 25,110,158, 24, 64,189,249,118, 1, 91,234,222,242, 47, - 32,242,183,146, 75,183,112,163, 33,144, 33,160,105,115, 83, 51,191,124,254,226,171,207, 63, 51, 83,113, 31,199,169,214,130,238, -146, 8,220,119,187,237,230,242,122, 28,231,203,237,213,102,123,141,140,247, 14, 15,205,233,233,241,241,151, 79, 30, 79,115,185, -216,110,215,185,251,248,253,247,238, 28, 30, 34,154,186, 58,227,197,197, 70,213, 92,157,146, 0, 82,128, 97,231, 90,204, 60,177, - 8,161, 16,119, 93,214, 82,118, 58,153,170,171,179,240,122, 88,117, 93,103,165, 24, 57, 33,151, 58,142,251, 58,205, 99,228,245, - 0, 54,117, 1, 17,120,141,139, 29, 36,177, 57,205,117,222,205, 5, 52, 52,224,144,144, 89, 72, 59,158, 13,204,212,198,250,242, -197,233,197,126,234,251,204, 5,254,175,127,241, 47,175,199, 93, 74, 93,164,159,131, 90,173, 22,225,181, 34, 2, 64, 85, 39,116, -183, 82, 49, 11, 16,105,173, 36,124,181,223,191,190,236,110, 31,221,121,125,177, 89, 13, 59, 97, 97,166, 66, 69,152,114,234,186, -110,120,248,224,193,215,143,159, 48,179,169, 18, 83,169,102,170,125,223,205,115, 37,193, 62,201,110,138, 97, 74, 19,163, 97,208, - 69, 84,153, 19, 34,104, 40,207, 72,204,107,128,244, 26, 31,196, 76,114,210,170,145,170, 28,114,250, 69, 21,219, 26,222,128, 6, - 19,139,227,184, 74,121,232,147,161,105,197,162,213,145,209,189, 79, 57,110,212,170,182,219,143,171, 85,198,153, 9,184, 79,137, -144, 83,132,201,123,244,232,224,230, 70,102, 78,212, 4,121, 81, 40,121,172,242,111, 50,208,181,106, 56,122, 72, 4, 0, 66,165, -218, 98,146,205, 4,145,137, 24,201,138, 45,128,105, 96, 68, 55, 37,103, 87,195, 86,228,199,105,109, 77, 70,141, 96,238, 73, 0, - 57,182, 87, 65, 28,160,136, 43, 8,242, 54, 32,161, 87,119, 87,211,100,169, 77, 62, 23, 85,134, 55,168,113,204,113, 99,243,228, - 72, 8,136, 93,146,170,170,128, 86,109, 59,142, 90,175,182,211,180, 26,186, 44, 41, 47, 96, 99, 78,242,234,242,242,232,224,160, - 75,233,160, 31,134,161, 95,119, 29, 11,221,191,125,235,224,214,109, 34,236,146, 0, 98,151,250,156,187, 24, 3,113,202,204, 29, - 37, 74,195, 32, 93,119,120,116,255,205,135,239,124,244,163, 31,255,131,127, 80,231,221,180,219,111,159, 62,123,250,245,227, 39, - 95,126,253,245, 55, 47,142,175,182,219,215,181,186,187, 97,198,132, 26,200, 26, 34,206,168,147, 17,199,218, 18,169,197,211, 57, -179,152, 85, 67,170,106, 66,196, 28, 2, 41, 93, 94,111, 16,162,212,102, 96,112, 83,190, 81, 4,145, 46, 9,246, 1,196, 37,118, -112, 35, 34, 97,177, 80, 97, 57,123,140,188, 52,150,122,214, 97,131, 25, 68,245,233,196,228,132, 81,189, 3, 32,160, 4,186, 22, - 1, 24,133, 89,139, 1, 57,146, 19,129, 26,131, 23,102, 49, 3, 16, 38,231, 68,216,231, 38,115, 55,143,181, 66, 99,116, 52, 46, - 51, 58, 88,117,215, 32,162, 99, 91,192, 44,203,102,115, 83, 5, 52, 68, 2, 74,160,170,170, 81,164, 54,105, 80,252, 5,221,146, -112,220, 32,182,120, 70, 90,202, 51, 56,218,162,200, 97, 49, 85,138, 28, 34,179, 24, 28,198, 93,225, 24, 33, 12,128,136, 5,148, - 67, 0,187, 92, 31,193,247,149,245,221,195, 58,215,113,179, 71,196,192, 36,128, 27,183,240,140,232, 84,154,200, 13, 22,201,123, -168,153, 2, 13,131,205,142,234, 45,124, 47,106,243, 26, 60,184,176, 73, 55,134,160,171,135,139, 49, 48, 95,120,131, 79, 10,210, -100,171,191,194, 7,143,208,128,200, 55,116, 24,104,179, 26, 11, 4, 10, 32,226,126,115,125,252,252,169, 86, 69,172,106,213,205, - 16,172,206, 94, 74, 45,102,251,121,188,218,237,199,105,116,176,213,208,151, 82,207, 55,155,171,253,184, 94, 13,101,174,143,143, -143, 39,131, 63,250,228, 67, 64, 58,190, 60, 39,167,148, 19, 35,245, 57,185,233, 88,103,155,125, 42,197,219, 42,136,134,156,135, -174, 43,106,106,117,183,221,207, 86, 72,128, 80,242, 32, 57,229, 68, 56,151,169,148, 50,141,213,138, 78, 58,107, 13, 14, 6,230, -212,105,173,165,204,204,196,204,197,171,112,118, 47,227, 56, 79,117,174, 85, 17, 97,189, 90, 29, 12,195, 92,234,108,238,230,197, -204, 84, 95,159,190,238,144,179,164, 78,212,213, 16, 80, 36,117, 41, 1, 81, 51, 3, 4,235,217,125,183, 31,133,168,150, 50,215, -106,110, 40,204,200,194, 50, 53,113, 11, 60, 61, 62, 59, 90, 31, 14,171,238,252,114,219,167,180, 94,173, 85,235, 92, 40, 73, 7, -238,247,238,222,125,247,209,219,199,167,175, 21,208, 1, 59, 78, 8,128,238,177, 91,131,182,238, 64, 66, 4, 97, 48, 51,183,196, -100,230,142,150,153,139,185,129, 86,171,241,248,234, 66,139,117, 38,115, 18, 65, 53,171, 75, 15, 26,126, 63, 88,102,220, 40,136, - 37, 18, 34,220,201, 16, 41, 17, 87,179,102, 72,161, 8, 99,194,166,215,174,154,186,110,154,119,234,174, 21, 10, 20,171,166, 4, - 64,177,105, 4, 38, 18,135, 8,211,136, 84,171,230, 20, 5,196, 82,227,204, 39,166, 46, 49, 23,186,145, 68, 56, 56, 11,235,108, - 11,213, 46,102,235,224, 8, 66, 56, 2, 16, 2, 35, 26, 18, 50,105, 8,100,137,106,113,117, 75,128,205, 42, 25, 96, 62,184,129, -158,106,116, 49, 22, 11, 60, 71,141,155, 61,218,114,103, 39, 4, 96, 36, 54, 87, 0,243, 86,176,162,186, 81, 72,246, 16,208,189, - 20,165,174, 11,195, 78, 41,181,207, 93, 20,122,227,126,175,106, 57,149,174,116,137, 60,172,173,175, 95, 95, 15, 67, 98,230,131, -213,208,231,110, 53,116, 73,228,214,225,193,157,195,195, 62,165,174, 19, 71,114,247,149,164,220, 15, 93, 39,125,215, 69,130,121, - 30,134,190,235,115, 55,164, 97, 69, 64, 34, 57,247,235,225,240,214,155,111,191,247,251,191,231,227,188,127,125,118,114,113,254, -250,155,103, 47, 94,188,124,249,242,228,244,248,236,236,106,179,121,125,225,165,236,212, 98,240,228,140, 40, 44,169,203,228,100, -160,204,226,213,129, 49,165, 16, 46, 97, 76, 61,200, 73,162,130, 69,208,160, 98, 85, 15,201,184, 35, 56,163, 16, 33,222,156,148, -216, 6,141,156,152, 82,204,236,147,128, 99,228,140,138, 27,128, 5,214,165,141,224,218, 49,100, 4, 80, 45, 66, 16,113, 65,235, -183, 84, 33, 14,212, 1, 34,147, 83, 36,168, 24,180, 48,160, 37, 0, 26,137, 57,154,146,248, 36,189, 17,211,252, 91, 94,222, 50, -123, 8, 15,135, 55,232, 70, 20,168,182,172,135, 45,194, 34,220,108,201,188, 1,143, 28, 35, 8, 26,200, 50,109,111, 14, 76, 7, - 7,157,205,204, 49, 81,168,113,163, 53, 69, 4,183, 74, 30,191,247, 6, 90,110, 14, 24,254, 5,154, 43, 32, 88,153, 17,193,140, - 41, 5, 79,193,101,119,177, 13, 3, 28, 34,130,105, 36,149,196,109,131, 16,131,255, 54, 92,251, 53, 86, 79,188,199,205, 1, 17, - 39,178,171, 7,149, 0, 0,129, 3, 29,137, 13, 44, 19, 63, 8,162,120,226, 33, 92,104,128, 8, 12,168,109,207, 0,238, 90,221, - 20, 89,190,253,180,252, 6, 93, 11,241,116,226,146,124, 51,237,230,147,147, 19, 32,201, 93, 6, 69,238,169,168,215,185, 34, 22, - 36, 52,199,162,142, 68,204,220,231,110,154,103, 96,239,251,225,244,226,242,114,187,219,108,182, 36,240,198,209,173,205,245,150, - 88, 68,196,217,124,154,170,218,118, 2, 68,210,218, 2,121,145, 96, 37, 29, 18, 26,216,245,254, 26,129,170,169,169,118, 41, 35, -115,151, 59, 70, 24,231,233,114,156,212, 52,162, 15,192,192,153,147,120, 85, 37,146, 70,183,117,212, 89, 41, 67, 45,122,113,253, -122,158, 11, 3,222, 58, 60,122,247,189,223,184,119,251,118, 41,245,108,115,241,234,252,188,130,206,181, 92,156, 95,222, 58, 88, -181,213, 94,236,117,150,129,134,154, 11, 57, 49,186, 85,226, 76, 14,102,170, 85, 99,194,166,102,213,171, 56, 71,162, 18,137, 36, - 78,140,229,114,123,253,252,228,248,157,183,223,190, 44,219,221, 60, 83, 78,107,238,180,206,227,180,207, 57, 37,150,239,191,247, -221,237,126,188,184,188,156,230,145,192,110,193, 42,167,116, 53,142,153, 57,196,146, 55,246,110,119,247,170, 55,220, 40, 68,200, -132, 45,100,162, 69,240, 53, 98, 9, 5,179, 36,202,177,168, 99,131,161,136,141,221,204, 44,130,236,168, 85,205,193, 16, 82, 34, - 32,161, 14, 89,204,133, 41,115, 82, 87, 68, 87,243,106,218,101,145, 44, 10, 78, 68,196, 80, 74,132,211, 57,120, 9,197,158, 33, - 16,177, 87,195, 20,155, 93, 32, 2,245,216,232,135, 20, 27,192,193,153, 19, 75,164,136, 48, 74, 76,127,171, 27, 19,153,155,131, - 23,179,158,217,188, 70,208,139, 24,168, 42, 19,183, 27,193, 20, 56,155, 87,211, 10, 36, 49,209,173,170,109,236,184,240,175,137, -176,128,130,131,106,149, 76,139,100,141, 28,136, 17, 5,161, 88,179, 33,162,121, 27,129,162, 87,135, 68,225,243, 35, 68,119, 6, - 5, 83,111, 95, 90,213, 74,100,153, 45, 19, 75, 6,140, 19, 86,171,169,151, 90, 38, 53,187,190,222,170, 25, 19,231, 36,125,223, -173,215,253,209,106,213,117, 89, 56, 9, 17, 51,136,228,117,215,229,156, 86, 17, 47,147,250,190,203,253,144, 15,214, 7,125,223, - 15,253,106,181, 94,165,174, 79,221,192,210, 3,226,157,123,111,220,127,240,157,247, 63,252,100, 26,199,113,119,181,185,188,184, -186,218, 28,159,156,158,156,158, 60, 59, 62,254,230,249,139, 39, 47, 79, 46,174, 54,165,214,237,110,159, 57, 49,147, 66,101, 14, - 57, 14, 7,124, 5,219,110, 15,189, 49, 46, 67,127, 78,138, 26,178,200, 24,149,196,145,178,144, 12,155, 24, 5,155,150, 37,188, - 58, 9,200,201,129,156,140,221,205, 57,164, 60,208, 2,153, 17,145,208,204,129, 17,190, 69,151, 91,203, 42,114,176,144,244, 45, - 27,203, 27, 90,106,219,236, 82, 98, 38, 2,243, 72,121, 38,150, 80,140,152, 41, 56, 90, 91,177, 70, 82, 4,224, 13,181, 35, 6, - 19, 55, 82,251,208,132, 47,248, 28, 34,178, 16,129, 34,186,214,182,169,109, 31,162,182,185, 76,252, 62,111,134, 4,111, 2, 83, - 95, 94,124, 69, 98,106,224,174, 5,248, 5, 16,185,122,181, 42,130,155, 46,162,166,136,214, 0, 7,112,209,106, 20,195, 37, 92, -176, 48,180, 28, 39,222,210,164, 2, 17,140, 68,225,118,134,101, 85,218, 70, 43, 17,176, 4,213, 33, 88,130,140, 55, 7,120,211, -201,196,120,201, 99,167, 26,147, 28, 6,212,134,255,245, 8,237, 8,141,119,131,145,184, 57, 96, 29,175, 92,146, 72,231, 55, 2, -169,182,241, 37,160, 52,239,183, 73,100,125,239,222, 52,207, 90,107,153,166,157, 93,237, 71, 69, 65,159, 21,180,170,214, 32, 13, - 37,102, 7, 66,171, 67,159,235,110,122,244,246,131, 62,115,151,251, 44, 60, 77,243, 56,151,106, 51,115, 78, 57,205,251,218,247, -195,208,247, 90,138,185, 35, 19, 49,109,182,219, 37, 48, 69, 87,121,224, 46,166,124,224,174,251, 82, 29, 12, 9,202, 84, 0,176, -239, 18, 75, 42,181,154, 25, 90,100,140,213,162, 69, 40,153,218,229,118,156,230,249,246,173,195,239,127,239,253, 55,111,221,149, -148, 46,247,211,171,227,227,203,237,102,179,189, 42,197,166, 82,246, 87, 87,155,203,203,187,183, 15,135,174,171,181, 76,181,180, -232,187,229,165, 96,226, 68,130,196,179,106,164,111, 2, 6,143, 73,220,247, 92, 17, 40, 98,179, 16, 42, 40,132,159, 13, 94,190, - 58,189,119,235,206,186,239,174,174,119, 93,150, 34,210,177,204,117, 70,132, 36,169, 75,221,131,123,247,254,147,127,248,159,253, -241,223,251,251,255,213,127,253, 95,188, 62, 63,145,212,215, 90,135,156,106, 64,161,193,213, 13, 44,208, 84, 64, 12,138,206,232, -213, 61, 17,177, 51, 1, 86,116,138,222,144, 22, 51,155, 80,228,205, 57,186,106,136,102, 49, 20,238, 65, 46, 55, 51, 32, 69, 4, - 13, 34,141,147,106, 93, 13,171,237,126,118,130, 33,165, 89,177,130, 18, 97, 66,226,196, 89,114, 45,102,106,166, 33,211,141,238, - 49,170, 61,114,112,171, 26,240,103, 97,174,181,170,129,214,146,115, 71,109,127,132,224, 80,212, 56,156,136, 6,206, 65, 89,112, - 6,172, 53,198,179, 70,200, 93,162,185, 54,227,191, 11, 23,111, 29,166, 5,147,133, 16,212,133, 25,162,111,136, 0, 5, 98,104, -142,141,118,159, 81, 37,245,133,115, 27,228,164,208, 23, 51, 54,215,163,153, 35, 84, 64, 84,232,144, 50, 10,103,154, 75, 13,131, - 96, 80,172,188, 56, 13, 24, 9, 59, 49, 40,176, 54,110, 38, 0,116, 50, 50, 42,174, 45, 39, 25, 32,188, 72,101, 46, 51,149,113, -242,203,171,171,241,185,178,208,173,131,245,122,181, 10,128, 1, 49,247,194, 93,151,135, 62, 53,205, 14, 19,139, 28, 30,172,135, - 46,175,186,238,112,189, 94,173, 86, 7,171,129,115,150,212, 31,172,215,253,234, 64,186, 62,165,238,240,246,189, 97,125,120,175, -206,143,222,253,174,187,215, 50,109,206, 47,174,182, 87,155,203,205,229,245,245,243,151,199, 79, 95,157, 94,109,183,175, 55,155, -253,118,187, 25,103, 33, 20,100, 71, 20,145,106, 32,238, 8,145,161, 6, 11,223,209, 17,113, 65,149, 52,195, 14, 52,209, 28, 2, - 27, 53,137, 54, 2,139,171, 18,135,123,147, 56, 33, 2,150, 18,148,164,118, 48,248, 34,225,128,165, 64,140,227, 71, 23,225, 75, -164,241,181,172,149,144, 12, 68, 59,217, 34,206, 61,142, 40,228, 8, 47, 77, 45, 74, 58, 86,191, 65,196, 70,110,171,226, 80,151, -184, 44,147,155,106,142,136,236,145, 19, 7,132,132, 70,214,224,187,224, 76,209,255,181,235,188, 33,144,141,220, 42, 17,180, 18, - 41,102,223,209,209,185, 52,201, 22, 18,169,133, 0, 5,102, 7, 50, 66,118,208,162, 6, 6, 70, 64,128,225,210, 32, 0, 34,116, -226,224, 57, 33,204,210,102, 42,209, 3,112, 3,202, 0, 49,122,203,217, 36,108,223, 26,180,242, 25,221,212, 1,208, 90,253,222, -174, 77,102, 15,148, 67, 12,214,153,150, 14,107,233,131,161,221, 78, 49,127, 9,132, 66,195,218, 52,166, 4, 53,228,100,236,164, -106, 81,171,182, 87, 62,200,141, 95,136, 8, 10, 36, 84,139,167,188, 62,184,125,247,155, 47, 62,123,246,236,233,249,249,185,187, -139,228,213,170,235,242,192, 34,110, 70, 76, 73,132, 66,187, 35, 12, 58,129,217,237, 91,183, 58,217, 85, 55, 53,155,166,113,158, -209, 0, 18,137,112, 7,110,106,154, 36,153,217,110, 63, 1, 57, 19,215,121,218,110,183, 14,216,229,220,137, 56,186,186, 78, 69, - 17,208, 85,171,107, 38,174, 90,186,212,203,225, 26,129,153,161,206, 37,206,146, 18, 28, 49, 7, 83, 43, 84, 14,111, 29,125,252, -206,163,223,252,209,143, 31,189,243,206,241,139,151,191,248,244,211, 95,126,241,249,102,179, 27,231,113, 46,179,153,109, 54,155, -121,156, 51,147, 57,198,220,198, 84,139, 90,202, 9,205,113, 66,106, 24,174,176, 9,144,185, 86,211, 64,187, 84, 43,128, 14,106, -200,136, 72,174, 86,230,226,234,156,155,166,202,205, 94,190, 58,121,247,157,239, 76,165, 94,110,182, 4,168,238,104,190,199,253, -225,193, 97,146,244, 71,127,248, 31,253,227,255,244, 63, 63, 56, 90,221,187,119,255,213,171, 19, 17,103,192,120, 98,114, 74,212, -200,245,128, 72,161,252,142,221,187,171, 11, 83,206,201, 17,231,121, 90,128, 29,206, 8, 4,192,142,138, 55,251,164,120, 39, 8, - 92,205, 65, 40, 64,129, 52, 87, 87,173, 96,110,100, 76, 4,238,243, 92, 0,161,134, 11, 24, 80,213, 8,208, 69,146,100,166,197, - 1,143, 46,140,251,192, 93, 47,189, 75,248,230,144,192,162,136, 48, 15,171,214, 92, 52,158, 76, 66, 68, 66, 85,117, 2, 20,172, - 65,113,137,238, 3,193, 99, 15, 10, 4, 26,188, 12,174, 22, 53, 50,128,213,196,157, 85,171,165, 32,226,220, 18, 21, 20, 41,153, -107,109,146,225,118, 6,223, 56,119,149, 21, 35, 50,199, 12, 13,147,224, 52, 53,246,121, 83,211, 44, 37, 61,160, 58,139,187, 33, -179, 56, 45, 0,118,114,196,128,110, 18, 71,120,100,155, 55,187,153,171,115,130,132,172,168,141,224, 73,139,193,144,212, 28, 48, - 16,160, 12, 54,234,118, 28,175,182,123, 52, 63, 90, 13,196, 36,140, 41,103, 2,226,196, 57,229,156,169,151,156,115,151, 19,119, -146,250, 85,238, 36, 31,172,250,245,122,117,216,245, 67,223,229,174,203, 93, 62, 24,250,156,187,220, 13,171,131,117,202,125,215, - 13,136, 60,172, 15,134,213,193, 3, 2,175, 90,107, 21,226,177, 76, 4, 54,207,243,171, 87,103, 63,255,236,211,111,158,189, 56, - 62, 61, 27,119, 99,213, 98,176,159,102,245, 27,106, 55, 0, 16, 8, 18,170,107,192,199, 57, 14, 28, 84,111,117,234,205,120,208, -192,123, 38, 5, 39,226,200,133, 54, 53, 53, 71, 0,117,207,204, 69,153,200, 35,212,138, 48,166, 46,173, 83, 36,112, 14, 5,162, - 6,134,207, 9,176, 58, 80, 67,236,128,187, 99,140, 98, 56, 56,225, 97,202, 52, 55, 11, 45, 15,186,183,143,213,205, 85,137, 72, -131,150,186,212,236, 0, 26,118,132, 0, 48, 48,177, 27,186, 43, 33, 3,130, 86, 69, 71, 5,131, 8, 11,114, 55,181, 70,111,113, - 3, 48, 87,138,216, 80, 47, 14,230, 16,224, 48, 48, 68,177, 8,222, 19, 6, 51, 48,192,132,209, 70,132, 82,220,212, 41, 42, 7, - 67, 17, 2, 51,115,136,177,146, 91,113, 5,105,125,135,108,161, 0, 0, 32, 0, 73, 68, 65, 84,184, 71, 67, 96, 8, 25,255,146, - 59,218,238,171,112,241,134,176,183, 5,151,198,172, 81,218, 20,101,193,124, 59, 16,134,101,180,141,234,205, 34, 79, 36,196,141, -109,187, 26, 94, 40,186, 49, 77, 53,197,170,135, 44, 30,150,180, 63, 0, 39,202,253,161, 3,164, 44,193,169, 3, 66, 20, 4,242, -105,103,132,155,191,253,229, 95,254,242,151,159,238,166,130,177,234,169,117, 26,199, 59,247,243, 81,215, 87, 45,243,172,251,237, -110, 44,101, 63,207,166,181,168, 10,194, 52, 77,115,173,196, 56,205,138, 14,194,140,132, 68, 70,146,136, 72, 68,194,184, 73,140, -106,186,185,190, 38,162,131, 97, 93,180,146, 67, 68,242,100,118, 9,178,146,164,158, 83, 74,121,158,107, 18,156,171, 86,181, 90, -235, 92,234, 60,205,234,150, 72, 50, 34, 39,118,164,247,222,251,240, 63,248,147,255,240,141, 7,111,237,246,151, 47, 30, 63,249, -197, 47,127,241,229,227,167,103, 23,175,167,185,160,112,153,117,183,219,158, 93,108,214,125, 71,196, 28, 82, 10,119,162, 48, 27, -169, 46, 20,190, 22,113, 8,110,106,204,132, 8, 66,194, 40,128, 40, 64, 34, 50,142, 83, 78, 20,241, 87,234,234,158, 92,221,221, - 88,120, 42,243,225,106, 93,212,198, 89,207,183, 87,105,191,251,147,191,247, 31,167,126,248,238,187,239,223,190,115,239,224,240, -246, 87, 95,253,226,127,252, 31,254,187,191,252,229, 95,221, 57, 60, 50,115, 53, 51,245, 26,167, 10, 84, 12,188,172,171, 8, 16, - 65, 80, 3,147,176, 35,152, 26,145, 44, 10, 89,119,192,112, 66, 19,179,215, 86, 65, 17, 71,178,161, 46,162, 18,104, 5,105,195, - 78,169, 27,238,231,210,231,100,142, 86, 21,208, 74, 53,228, 6, 13,159,107,217,108,118,111,220, 73, 57, 9, 32, 2,145,151, 26, -233,198,194,172,106,136, 48,171,129, 25, 33, 99, 91,251,248,130, 11, 53,128, 8, 64, 64, 55, 80, 13, 7, 99,243,210, 73, 34,100, -210,217, 57,228, 4,228,197,116, 81,241,135, 42,215, 17,145, 57, 19, 41,134, 92,164,217,158, 2, 71,130,112,147,156,237,100, 26, - 28, 45, 74,146, 56,161, 85,109,229,155, 89,181, 80,230, 52,203,247, 66,206,114,100,131,136, 79, 67,215,246, 69,241,235, 13, 40, -101,213, 90, 4,168, 25, 3, 84, 51,199,136, 60, 17, 39,180,234,140, 75, 10,230,141,158, 97, 9, 68, 13, 7, 37, 19, 17, 97,176, -131,133, 41,214,197,251, 50,219, 8,136, 59, 70, 22,225, 46, 39, 4, 39,150,190, 99,230,212,119, 41, 49,229,212,173,215,253,144, -211,208, 13,183, 15, 15,186, 46,247, 57, 31,172, 6, 78,105,189, 26,134,190,207,221,208,119, 93,183, 90,231,188,146,148,136,229, -104,125, 32, 41, 59,194,155, 15, 31,253,224,163, 31, 77,227,118,115,113,113,177,217,108,206, 47,158,159,157,188, 58, 62,249,230, -213,203,205,230,234,244,252,178,204,115, 53,219,205,197,171, 1, 97, 18, 70, 71, 98, 34, 66,172,230,130,168, 26,252, 74, 4,226, -112,158, 70,222,179,147,186,167, 80,112, 51, 21,179, 80, 50,129, 17, 48,154, 59, 82,236, 91,155,236,208,150, 31,203, 92, 35,163, - 77, 0, 1,136,110,226,197,224, 6,186,139,180,200, 79, 24, 29,141, 26, 60, 44,216,149, 55,250,118, 68, 68, 23, 64,116,171,238, - 64,204,170, 10,193,250, 1, 70, 2, 80, 5, 52, 3,250, 86,216, 77,168, 85, 9,128,152,151,104, 57, 0, 55,116, 39, 76, 49,221, - 5,141, 23,131,150,207,207,220, 75, 68, 52,186, 26, 2, 1, 51,184,130, 57, 49,152, 49, 58, 80,242, 27,109, 88, 51, 20,169, 26, -152, 1, 3,144, 99,149,166,114, 33, 92,200,201,112, 3, 10, 67,230,136,165, 14,161, 17, 18, 96, 83, 70, 54, 36, 27,186, 69,104, - 71,236, 71,130,157, 9,234, 36,172,177,206,130,197,217,122,131, 31,139,196,154, 24, 93, 49,199,206, 1, 35,199,104, 65, 7, 99, - 11,188,162,200, 21, 88,210, 55,226,166, 68, 47, 58,207,229,171, 95,254,249,167,159,125, 41, 57,247, 4,243,190,140,211,140,224, -132,124,241,228,235,187,135,183,193,253,197,233,235,253,180,119,135, 98,150, 8,205,125, 54, 80, 53, 20, 40, 69,193,189,235,134, -148, 18,177, 18, 50, 1, 22,213,105,156,162, 6,170,181, 24, 88,159, 7, 97,217,207,163,186, 77,134,185,203, 89,168, 86, 29, 58, -102, 22,117, 21, 17, 53, 45,117,222,237,170,130,154, 66, 45,165, 84,251,224,251,223,253,173,223,252,145,142,219,191,249,213,151, - 83,165,223,253,221, 63,248,232,147, 31, 51,210,217,201,139,175,190,250,252,233,211,231, 79,143, 95, 94,236,182,213,161, 2,142, - 87,215, 39,167,103,171, 46, 51,161,144,180, 36, 20, 55, 93,166,222,145,244,118, 99, 3, 23, 22, 68, 48,211, 36,105,201,189, 83, - 68,209,102,221,142,209, 37,249,162, 77,165, 56,238,156, 14, 86,221, 63,254,147, 63,250,223,255,159, 63,253,236,139,167,136, 7, - 63,251,187,127,244,201,143,127,231,254, 27,111,237,174,183,251,253,246,222,131, 55, 51,119,227,180, 19, 20, 71, 84,181,170, 21, -153,176, 26, 82,152,214,113,183,223,229, 36,224,216,155,185, 97, 16,157,204,129, 19, 89,243,139, 71,119,198, 0,198, 76, 6, 77, - 89, 28,247, 19,199,112, 48, 6,163,241, 73, 39,178,201,213, 52,150, 77, 99, 41,136,126,152, 86,202,232, 32,230, 74,206,153,211, - 52,239,107,181,106,181,162, 43,128,171,163, 66, 81,141,113,106,112, 75, 56,114, 95,155, 30, 43,244,137, 22, 98,118, 98, 1, 44, -129, 26, 39, 65, 7, 99, 36,116,143,180, 76,211,170,213,180,106, 16, 2, 29,221, 9,213, 53, 11, 49,146, 98, 5,160, 33, 9,163, - 42, 32, 58, 71, 73,238, 0,228, 6,238,156,196,172, 78, 83, 64,146,111,194,174, 9, 48, 60,158,205,243,101, 65,209,247,160, 50, -196, 10,177,233,230, 85,137,164,169,201,219,214,203,129,227, 35,112,207, 18,147, 69, 99,100,101, 4, 66, 7, 19,128,182,164,115, - 44,214, 64,205,140, 60,107,137, 31, 73,164, 25,183, 9,130,155,182,156,202, 54, 29, 70,226,182,225, 11,179, 32, 34, 49, 76,165, - 78,243,108, 1,196,210,154, 88,152,121,189, 90,173,251,174, 75,210,119, 41,231,156,187,180,202,185,207,121,200,121,181, 94, 15, - 93, 90,175, 86,235,190, 95, 29,172,130,179,192,156,239,220,189, 51, 12, 7, 8, 88,181, 2,178,164,116,247,141,251,119, 31, 60, -240,234, 63, 1, 55, 43,227,126,156,231,114,121,117,185,217, 92, 94, 93,110,142, 79, 79, 95,158,156, 62,125,249,242,228,236,226, -244,114, 51, 78, 83, 20,240, 36,108,224,130,132,140,113, 63, 45, 14, 98,136, 67, 52,130, 62, 74,109, 3, 29, 89, 64,130, 8, 40, - 68, 11,205,133, 28,156,188, 21,150, 49,101,139,185, 60,161, 67,176,135, 90, 43, 1,156, 36,166,243,137,152,163,173,138,201,116, - 28,236, 81,217, 18,163,105,169, 21, 91,134, 93,140,237, 20,195, 0,141,232, 54, 33,176, 1,121,128,245, 34, 33,137,200,220,153, -197,205,154, 27, 3,205, 85, 23,239,127,187,140, 45,104,201, 49, 14, 33,114, 85,112, 39,116,115, 52, 68,175, 74,216,164,144, 49, -211,162,144, 57,180, 23,191, 66,176, 13, 73,192,149, 24, 0, 73,171, 11, 64, 68,153,219, 18,153,181,160, 17, 2,220, 29,195,155, - 27,121, 0,222,180, 36,141,245,182,208,194, 41, 24,165, 49, 70, 15,107, 91, 67, 70,218,226, 0,163,230,132,128, 38, 41, 35,104, - 25, 77, 77,129,182, 32,103, 17,144, 33, 46, 70, 97,160,152,221,182, 89, 63,133, 30, 73,203,171, 23,143,193,234, 84, 76,213, 18, - 17,139,168, 57, 18,245,156, 75,153,111,223,186,245,144, 96, 42,117, 30,139, 67,115,138,207,165, 78,230,104,214,173, 58, 68,146, -224, 30, 97, 50,179,221,180,179, 98,200,236,142, 14,186, 26,214,171,110,152,117,154,230,169, 86, 69,194,148, 82, 98,206, 73, 8, -153,208, 13,161,148, 58, 78, 83, 81,173, 85,193,112, 53,228,183,190,115,247,131, 31,124,240,238,163,183,223,251,238,251,255,239, -191,249,183, 63,255,244,235, 55,222,250,222,207,126,246,135,247, 31,188,113,121,121,241,252,217,227, 47, 31,127,249,248,201,243, -211,203,215,103,103,151, 99,153,183,227,212, 19,226, 60,169,106, 74, 44,115, 60,161, 45,163,188,148,138,102,136, 80,204, 40,210, -175,154,199,143, 0, 81,193, 58, 64, 8,124,107,153, 24, 33, 39,170,166,238, 1, 92,137,150, 19,130, 42, 8, 64, 85,235,195,251, - 15, 62,254,232, 7, 10,248,195, 79,118,127,231,247,254,152,152,190,248,252,231,156,153,145,118, 87, 23,127,254,239,254,197,201, -171, 87,239,127,239,123,231,155,139,221,238,218, 81, 28, 17, 84,179,112,180,212,146, 18,206, 37,120,174,166, 86,162,250, 64, 7, -211,117,119, 48,169,109,199, 17, 16,144,165, 25,152,156, 66, 1, 69, 76, 84, 66, 1, 30,203, 72,160,229,160, 9, 98, 9, 26, 48, - 83,226,100,224, 99,209,161,106,192, 43, 8, 0,128,230, 50, 19, 81, 18,206, 57,117,156,138, 22, 7, 53, 52, 4,138, 3,190, 46, -185, 64,136, 24, 2,251, 88,143, 48,161, 11, 79, 85, 83,219,103, 66, 53, 37, 64, 65,172,213, 65,160,122, 21, 16, 7, 68,161, 37, -129,202,173, 24, 51, 90, 49, 23,100, 2,175,128,224, 67, 78,157,164,125,169,204, 8, 70,137, 96, 87,141,192,213,173,106,101,100, - 38,208,200, 45, 13,205, 7,133,166,195,170, 57, 1,168, 42, 0,166, 76, 96, 80,205, 58, 34, 17,132, 57,170,127,178, 72, 91, 10, -251, 58,144, 32,155,171, 45,216, 63, 48,104,174, 40, 68, 82, 47, 20,122,208, 48, 72, 32, 35, 36,225,170,238,160, 10,102, 0,140, -210, 18,145,155,149,188,129,158,111,184,221,130, 28,125,125, 5,167, 8,146, 79,204,222,236,154,128,230,224,213,180,104, 53, 3, - 7,155,198,145, 0,153,145, 56,245,125,238,146,112,112,238, 68,134,156, 82, 74,235,190, 63, 88, 13, 71, 71, 7, 7, 67,183, 94, - 31,158,158,190, 28,134, 33,119, 67,196,115,117, 93, 30,134, 30,156,115,215, 17, 11, 33,229,213,176, 90, 31,222,190,115, 55, 8, -248,213, 96,222,239,231,105,183,189,222, 94, 92,111,158, 62,123,241,242,244,228,217,139,227,215, 23,231,199,175, 47, 94,157, 95, - 68,184,146, 26, 9, 53, 76, 90, 40,241, 19, 67, 88, 53,132, 81,136,171, 86, 68, 32,194, 20, 73, 44, 17, 70, 68,120,147, 40,198, -141, 84, 24,228, 32, 52, 0, 14, 57,166,155, 35,170, 25, 49,113,131,226, 96, 78,172, 45, 78,202, 23,134,113,171,226,131,209, 27, - 80,129, 40, 8,128, 0,140,161, 97, 65,154,218,165,229,222,185, 18,182,176, 45, 22,114, 37, 85,109,235, 99,226,112,155, 55, 91, - 41, 81,208, 67, 90, 31, 28,154, 5,111,149, 81,112, 47,181, 70,187,128,213,144, 17, 53,242,170,204, 72, 24,128, 10, 40, 35, 7, - 67,200,221, 65,136,147, 8, 17, 54,185, 15, 97,211,171,132, 69,106,129,237,199, 94, 9, 2,251, 15, 30,233, 86, 77,210,190, 88, -162,226,235,113,129,249, 68,193,190,132,143,104,148,159, 45,180,199,173, 85, 66,110, 72, 76,148,227, 94, 92, 76,128, 49,225,191, -185, 58, 29,106,160,165,219,122, 25, 9, 41,229,243,227,159, 63,126,254, 82, 29,227, 5, 51, 32, 22,234,178,152,122,159,147,100, - 70, 55, 53,216,237,103,119, 55,175,234,110, 34,100,184, 62, 76, 17, 72, 49, 77, 19, 0, 86,175,117,170,101,156, 13, 16,208, 19, -146, 8, 13,253,138, 16,175,199,136,235,116, 97, 73, 89, 82,202,137,176,186,162,186, 90, 81,245, 88,192,190,253,157,183,222,122, -235,173,119, 31,125,231,209,163,119,190,243,240, 97, 55, 28,254,249,159,253,235,255,237,159,253,175, 87, 91,252,221,223,255,251, - 31,124,252,145,150,242,226,249, 55,199,207,158, 60,123,254,242,155,167, 79,159,159,156, 92, 94, 95,143,115,241, 50,157,159, 95, -222,187,125, 68,132,130, 72,190,180, 41,110,193, 23, 71, 70, 4, 98, 96,194, 57,145, 32,230, 96,239, 50, 3, 1, 8,210,108,154, -148, 16,157,132,201,205, 13,168,125, 52,128,142,230,192,200,184, 80,176,199,185,188,247,232,157,238,246,123, 31,252,228,173, 15, -192, 95, 60,123,252,111,255,236, 95, 50,165, 7,111,126,103,191,191,250, 87,255,230, 79, 9,169,147,180,234,134,239,190,247,221, - 95,252,226,231, 14,128,142,234,238,106,136, 52,149, 2,238,171, 46, 3, 17,152, 2,161, 56, 77, 53, 58, 80, 35,196, 94, 36, 26, - 97, 70,106, 88, 56, 52, 64,137,237, 37, 54,194,115, 32,106, 29, 1, 57, 84, 93,216, 44, 90,236,177,175,129,170,102,110,137,210, - 52,149, 74, 34,174,213,177,204,165,203, 29, 18,205, 90,201,191,165,203,198,120, 54, 56, 71,181,121,208,140,137, 67,221, 24,226, - 20,170,106, 28,118, 84, 10,148, 49, 39, 9, 9,252, 18, 44,217, 34,126,208,111,104,124,158, 4,157, 44, 92,154, 44,108,230, 99, -153, 29,169,153,196, 69,176,204, 72, 45, 36,220, 12, 12, 45,146,234, 8, 64, 29, 98,247, 83,106,141,111,187, 86, 75,137,193,201, -172,106, 85,167, 4,109,183,231, 17, 62,201, 20, 22, 9, 50,115, 64, 35, 36,213,182, 81, 32,102, 98, 14, 51,160, 3,146, 97,157, -103,179,138,144,131,222,179,204, 83, 33,117, 92,180, 68,218,178,162, 49, 50, 24,152, 35, 52, 91,174, 7, 64, 56,230, 73, 10, 30, -159,132, 81,117,227,130,232,176, 68, 77, 88,108, 29,201,201, 24, 89, 34,207, 32,165,177,214,185, 96, 53,215,221,190, 99, 41, 86, - 50, 51, 16, 49, 75,159,211,170,239, 87, 67,119,208, 15, 7, 7,195,106,232,134,110,232, 36,113,146,190,147,156,250,174,147, 62, -119, 73, 18, 11, 15,235,149,112,150,148,136,115,206,132,144, 88,100, 37,135,235,195, 59,111, 17,127,240,193, 71,228,182, 31,199, -221,118,187,217, 94,191, 62,191,184,188,220, 60,121,241,252,244,252,226,122,187, 59,191,186,222,239,167,253, 60, 86,211,162, 96, - 6,106,234, 0, 73, 8, 64,136, 82, 80, 43, 34, 30,189,160, 34,128,196,254,201, 1, 16,133,168, 90,108, 91, 64,150, 21, 46, 17, - 9,177,153,133,228, 12, 96, 33, 96, 97,155,237, 45, 27,164, 37,181,193, 35, 0,189,113,162,218,151, 3, 97,152,219,160, 5, 76, - 89,219,232,146, 59, 68, 30,113, 51,101, 0,152, 26,130, 3, 50,160, 11, 80,117,107,163, 9,102, 86,119,110,100, 98, 36,116, 69, -175,113, 90, 54,131,149,187,215, 82, 89,210,183,243,109, 10,254,170, 75, 12,175, 20,221,193,188,136, 18,152,137,199,227,205,228, -166,128, 76,139, 50,184,109,161, 27, 70,167,193,219,190, 37,138, 53,229,145, 7, 21, 18, 29,136,184,165, 43,181,214,102, 49,158, -181,196,113, 6,114, 88,240,128,113,113, 32,177,164, 28,122,136,184,139, 99,137, 71,230, 72,201,173,132, 15,243, 70,214,138, 14, -200,172,181,170, 78,183, 14, 15, 55,215,251,253,126,156,203, 92,107, 40,112,153, 5,175,167,110,232, 82, 41, 87,175,175,174,171, - 43, 90, 16, 1, 67,125,203, 72,153, 25,139,214,170, 74, 8,251,221, 56, 77, 83,117, 0,128,196,204,201, 51,115, 85, 43,101,106, - 3,100, 48, 17,202, 89,180,214,205,126, 86, 83, 65,236,251,244,230,253,187, 63,252,240,163,159,254,206,239,124,247, 7, 31,215, -105,203,156, 16,241,223,255,217,191,250,226, 87,191,122,118,124,241,157,119,222,255, 71,127,240,199,221,176,222, 92,158, 93,158, - 29, 63,127,252,228,155,103,207,190,122,250,236,197,201,217, 56,207, 86,244,122,187, 57, 90,245, 44, 40,194,166,206, 72, 36,100, -136,146, 90,190,149, 57,148, 90,197, 57, 72,167, 41,230,110,238,166,198,129, 97, 37, 12,196,146, 8,171, 66, 2,156,230,162, 86, - 1,169,170,102,136,137,135, 26,180, 66, 16, 9,126,248,209,199, 51,201,211,103, 95, 62,127,246,245, 95,252,213, 95,215,121,255, -206,219,143,142, 14,142, 62,251,244,175, 94,190,120,241,232,209,163, 97,232,137,249,173,251,111, 92, 60,120,243,236,242, 28,118, - 38,196, 69,103,145, 62,130, 39, 17,157,212,136,136,128,170,169, 16, 4,175,168,154, 38,201, 68,228,224,213,205,209,153, 57,144, - 46,141,213, 23,214,133, 24, 14,180, 16,238, 72,214,132,234,150, 76, 25,113, 50,205, 64, 76,116, 61,142,135,136, 97,106,139, 90, -136,144, 12, 92,205, 84, 45,167, 36,200, 68,162, 62,131,130,113,188, 75, 16,100,172,170, 45, 48, 20,151, 49, 35, 34,219,188,100, -196, 46,161, 81,113, 44, 38, 78, 22, 65,141,205, 53,233, 8,136,194, 30,130,238,155,228, 64, 4, 71,163,120, 81, 9,196,209,204, - 2, 69,128,134,140,130,137,104, 12,194, 53, 27,129, 25,144, 99,151,115,169, 5,192,154, 43, 31,121,154,103, 2, 72,188,100,158, - 16, 32, 48,121,147,146, 34, 2, 9,183,238,184, 41,131, 61, 2,183, 35,215, 20, 22,231, 61, 73, 66, 47,110, 74,145,167, 8,168, - 97,146, 69, 66,224, 86,183, 42, 50,123,133,136,148,111, 59,132, 26,224, 19,112, 95, 34,250,144, 48,200,230, 16, 97,120, 26,155, -191, 22, 95, 25, 90,146,224, 45,148,128, 59, 32, 18, 65, 85, 3,212,121, 42,202, 58,142,211,229,110,116,132,163, 97,117,112,216, -175,251, 85,151, 83,159,115, 78, 28,137,116,189, 36, 97,238,115, 94, 13,253,170,239,147,112,215,247,135,221,208,117,169, 27,114, - 78, 61, 49,231,174,235,187, 78, 56,115, 78, 11,225,157,214,195,122, 88,175,222,122,240,150,153,254, 12,126,199, 74,221,238,119, -187,235,237,213,118, 60, 61,127,117,118,113,249,234,236,252,213,217,217,171,215,175,167,221, 84,204,107,169, 85, 11, 0,115, 66, - 71, 23, 97, 50, 90,118,206,128,224,196,228, 8, 34, 82,107,141, 9,179,129, 5, 75,199,192,235, 52,249,162,244,178, 22, 10, 16, -138,117,108, 34,109,167,248,131, 16,151,255,211,104,198, 24, 3,108, 3,163,156, 96,137,154,102, 55,211,106, 80,193, 35, 54,189, -213,254, 68,161,186, 66, 39, 0, 36,171,222, 76,251,132,232,160, 80, 17, 82,132, 95, 70, 76,200,141,112, 62,182,236, 78, 56, 23, -195,106,204, 36, 76,106,102,166,129,110,247, 37, 8, 29,221,201, 17,205,160, 22, 89, 52,187,186,100, 34,195,146,157, 71,110,218, - 46,177, 16, 40, 45,109,202, 13, 40, 51, 56,246, 45,154,181,101,105, 69,245,111,191, 70, 60, 0, 71,242,198, 75,107,203,230, 32, -213, 97, 48, 32,144, 34,200,165, 41, 94, 91, 55, 96,203, 28,185,233, 70,155,182, 20,220,173,158,156,158,157, 92, 92, 9,128,176, -184,131,214, 49,240,126,196, 82,180,150, 93,157,199,253,229,213,182, 17, 57,213,153,129,129,164,203,128, 56,105, 85,173,227,126, - 52,247,237, 84, 45, 2, 16,136, 14, 14,214, 67,223,153,154,154,166,148, 23,153, 40,149, 82,166,105, 74, 73,134,220,191,247,238, -219, 63,253,201, 79, 62,250,232,163,219,119,239, 29,221,190,173, 36,175,158, 63,203,196,147,109,255,236, 79,255,207,207,126,241, -183,235, 91,111,254,193,223,251, 71,239,125,247,251, 69,203,217,139,167,175, 94, 61,121,241,226,213, 23, 95,125,243,245,179,103, -231,219,171,113, 63,127,231,222,157,205,197,197,181, 57,162, 4,200,218,106,204,193, 48,120,138, 45, 3, 60,254,234, 28, 98, 80, -118, 66, 9,116, 13, 68, 66,119, 24, 27, 80, 88, 70,157,106,213, 33,119, 10,174, 22, 68, 67, 68, 98,175,102,174,110,238,142,102, -112,184, 94,191,253,230, 27, 47, 30,127,250,213,151,191,124,249,252,249,135,143, 30, 12, 57,175,110, 61,156,116,126,250,252,133, -147,151,121,222, 19,247, 93, 62, 88, 29, 60,124,240,240,245,229,165,185,107,169,147,170,176, 1, 98,177,218, 33, 21,119,114, 27, -186,172,181,201,174,212, 65, 13, 4, 97,149,211,118, 42, 13,226,132, 64, 76,141,122,234, 81,190, 16, 51,151,144, 73,182, 90, 20, -153,136, 96,113, 96,151,234, 57, 57,250,126,154, 9,168, 75, 82,180, 38,226,224, 96,187,163, 32,207,141, 27,111, 49, 20,117,188, -209, 48,196, 99,103,173, 91,185, 41,120, 16, 45, 58, 60,187, 57,232,176,133, 73, 26,170, 22, 98, 81,117,171,170,234,138,142, 0, -218,158, 68,172,173, 14, 50, 0, 76,146,144,121, 30,107,173,154,136, 28, 41, 10,179,218,118,221,165,106,141,240, 38,152, 1, 29, -212,109,174,133, 0, 29, 8, 93, 37, 69,143,225,234, 96, 0, 41,164,244,230,180, 56,223,185, 49,171,188,225, 9,137, 98,132,175, - 8, 72,216,165,180,155, 39, 85, 21, 78, 96,115, 32, 6,110,118,134,170,150, 16, 42, 49, 33, 72, 64,126,192,155,218, 30,192,105, - 17,229, 47, 57,166,204,225,113, 15, 84, 26, 91,219,109, 9,136,217, 28,153,124,236,168,205,170,105,200, 24,152, 95, 37,230, 46, -231,185,106,172,171, 75, 85, 17,100, 34, 55, 45,170,103, 85,181,214,169,175,225,204,236,187,156, 18, 35, 80, 4,164, 8, 19, 17, -102, 73, 57,165, 46,167, 85,206, 41,165,126,200,235,126,232,186, 60,116,125,159, 19, 3, 96,238,250,148, 36,194, 78,186, 60,116, - 61,178, 32, 18, 75,252, 98,215,175,214,247,136,222,211, 71,115, 41,155,171,203,113,183,175, 90,231,185, 92, 94, 95,158,190, 62, -127,117,118,113,242,250,108,187,223,239,199,105,183,223, 79,181,132, 93,153,152, 32, 32,180,192, 76,136, 34,165, 22, 71,230,196, - 68, 24,254, 79,166,182,250,158, 77,209, 13,204, 9, 2, 0,185, 56, 66,233,134, 65,115, 35,233, 84,184, 33,209,199, 4,128,170, - 27,186, 57, 97,219,163, 64,139,138,197, 16, 57,199, 64,178,241, 72,109,113,252,181,165,177, 1, 16, 16, 35,178, 91,245, 27, 22, - 11,115,187,225, 27, 17,166, 69,224, 56,128, 43,104,211,222,131, 59, 88,213, 72,102, 55,231,170, 21, 93, 1, 65, 90, 77,141, 72, -204, 30,138,131, 5, 16,130,209,140, 99,172, 82, 99,120, 67,205,166,106,182,120, 86, 9, 99,185, 76,116, 67, 87, 88, 20,149, 75, - 11, 13, 10,106, 55, 94, 3,136,206, 28, 16, 9, 35,162,215,108, 94, 92,143,203,246,191, 49,229,155,133, 21, 29, 92, 45,118, 14, - 93, 63, 28, 30, 12,125,146, 59, 71, 71,166, 90, 77, 17, 96,156, 39, 36,210,106,238, 32, 41,111, 46, 55, 87, 83,205,136,197, 12, - 25, 17,180,154,237,118,251,185, 94,101, 97, 68,154,213,118,211,232, 14,125,215,221, 59,186,221,245, 9,137,208,161, 98,181, 82, -231, 82,193,161,154, 30, 12,253,155,111,220,255,248,195, 15,126,242,227, 31,223,191,127,255,240,246,209,176, 62,208,234, 70,248, -252,233,147, 97,117,132, 96,191,250,235,191,248,197, 47, 62, 61,187,216,253,224,147,223,255,248,147,159, 14,171,213,118,119,125, -117,250,242,248,213,179, 79, 63,251,252,139,199, 79,142,207, 47,199,253,126,183,219, 94,109,118,223,127,112,239,217,184, 85,112, - 32,207,194, 12, 88, 21,162, 76, 99,164, 68, 84, 98,113, 14,102,213,156,216,220, 56,110, 57,194,161,235,218, 80, 2, 80, 67,245, - 4, 22,214,205,128,189,138, 96,153, 27, 11,136,200, 67,164,133, 0,238,250,224,238,189,219,195,208,247,233,183,126,240,193,227, - 85,247,240,193,157,127,255, 55,191,120,248,189,183,182,219,205, 79, 63,249,237,111,190,249,162,212, 57,107, 46,165,100, 73,111, - 62,124,227,228,236,228,229,217,169,122,101,164, 82,212, 77, 9,160, 70, 94,135,182, 71, 55, 28,186,166, 26, 26, 62, 97,206, 82, -139, 3, 3, 48, 32,152, 35,146, 32, 2, 82, 85,107,110,212, 5,245, 7, 13, 68,228,145, 46,239,136,234,106, 36,232,110,128, 87, -227,136,216,103, 33, 67,220,207,133,137,170, 1, 16,218, 60, 71, 43, 92,172,130, 27, 19, 53,226, 69,108,116,154,154, 26, 8, 97, -154,231,185, 86, 9, 66,177,131, 87, 51, 7, 19,101, 70,195, 54,135,172, 85, 19,179,185,106, 85, 68, 39,247,190, 75,165,170,131, - 33, 80, 60,151, 72, 80,107, 29,107, 61,224,100,224,148,144, 72,204, 45,178, 40,173,214,102,161, 5,208,170,130, 75,105,239,110, -170, 10,102,166, 20,121,238,228,166, 80, 93,209,219,110,193, 91, 39,237, 13, 99, 69, 12,209, 53, 24, 58,122, 52,189, 81,231, 16, -160,112,138,156,100, 95,252, 34, 76, 64, 68,174, 26,191,221,192,137,168,106, 1, 67, 74,124,131, 89, 9,251,212, 66,124,197,152, -139, 70, 20, 30, 44,208,143,200,161,246,150,121,225,106, 10, 33,149, 10, 6, 32, 0, 53,168, 47, 55,109,191,121, 85,141, 19,206, -220, 8,254,127,166,222, 44,230,178,236,186,239, 91,195,222,251,156,115,239, 55,213,216, 53,117,117, 23,123, 96, 15,156,154,148, -154, 52, 69,137,140, 34, 89,163,165, 64,136,148,216,112, 98, 35, 1,132, 0, 1,140, 32,121,201, 75, 94, 2, 4,240,107,134,183, - 0, 2, 12,219, 72,140, 4,118, 98, 57,138, 68, 77,148, 41, 74, 28, 76,154,166, 66,182,122,238,170,238,174,233,171,250,230,239, -222,115,246,222,107,173, 60,172,125,190, 38,186,208, 15,141, 66,117,213,173,115,247, 89,251,191,254,255,223,159, 90, 51, 6, 51, - 51,139,138,136,156, 74,166, 64, 82, 36, 70, 78, 33, 16,227,106,181, 38, 98,255,252, 23, 49,245,139, 46, 16, 5, 14,125, 23, 83, -136, 41,165,141,161, 75, 41,165,232, 51, 60, 96,224, 33,117, 41,134,141,229, 50,246,105, 72,125, 23,135,152, 56,164,238,224,232, -104,127,127,255,202, 19, 79,220,188,121, 35,134,136, 76, 68, 65, 85,107, 41,165,150,211,213,122,119,247,209,201,201,225,193,209, -241,254,209,209,222,254,193,238,254,193,254,193,193,148,115, 22, 29,167,177, 40, 84,133, 72, 76, 72,204,236, 23, 52, 78, 6,136, - 49,114,206,138, 64, 70,172,136,213, 29, 49,136, 13, 17,215, 82,245,138,198,128,136, 20,218,231, 70,205, 20,104, 34, 45,145,161, -213, 99,183, 32, 70, 1,219,110,166, 21, 84,121, 59,145, 53, 71,189,103,140,212, 16,217,204,107,144,230,142,105,108,185, 78,112, -208, 77,123,117, 3,241,172, 63,178, 49,162,138,169,136, 35,108,172,250,123,165,165,141, 12, 33,152, 91, 74,125,226,249, 49,198, -165,155,239,157,254,224,125, 89,126,212, 58, 14,109,190, 71,250,128,222, 32, 60,103,152,183,230,128,179,102,126,108, 56,130, 6, - 26,155,171,187,189, 63, 93, 4, 64,230,247,137,139, 88, 98,170,128,179, 81,167,237,150, 13, 24,137, 73,106, 85,179,235, 55,158, -140,223,253,193,253, 71,143, 13,112, 49, 12, 23,206,109, 93,186,116,145, 1, 57,112,191, 92,162,232, 95,189,246,250,198, 73,175, - 96, 84,164,130,212, 92,171, 65,223,165,205,141,101,206, 50,150,113,149,167, 46,118,139,161,223, 88, 44, 76,245,232,244, 84,106, - 69, 4, 81,116,142,202,243,183,110, 62,247,212,205,151, 63,253,201, 23, 95,250,100, 55,244,211, 52,229,113, 13, 28,149,195,131, -247,223, 89,108,158,235,151,203,187,239,191,245,214,143, 94,187,115,231,222,114,251,234, 47,252,234, 47, 63,113,245,137,213, 42, - 31, 29,238,157,236, 63,122,239,189,119,127,248,250,235,183,239,222,203, 42,227,122,212, 50, 89, 21, 3,165, 16, 58, 78,135,211, - 81,201,213, 19,244,138,218,136, 69,160, 28, 56, 23, 4,179, 24, 34, 34,176, 25,130, 23,241,176, 78,121, 17, 35, 19,250,198, 92, - 77, 1, 73,149,192, 32,132, 0,168,204,228,199, 3, 1, 17,130,104, 69, 0, 10, 20, 98, 16,179, 39,175, 92,221,220, 90, 90, 76, -112, 98, 67,215, 49,210, 43,159,250,137,184,185,253,225,221, 59,183,158,121, 97, 88,108,148, 50,149, 16, 40, 12, 68,125, 71,195, -173,167,159,190,115,255,222,241,209, 49, 4,238, 35, 50,115,215,245, 37, 79,145, 8, 8,214, 83, 97,196, 34, 74,132,145,153, 57, - 0,145, 86,141,204,164, 86, 69, 33,160,154,145,170, 16, 53,187,140,105, 11,244, 32, 84,213,128,132,161,157,245, 6, 22, 3,229, - 9, 80, 12,169,229, 76,143,198,105, 49,116, 12, 72,136,235, 41,175,199,154,171, 94,218,222, 80, 81, 85, 43,185,213,194,121,161, - 18,158, 61,108, 4,205, 91,205,129, 85,192,196, 31, 82, 53, 0,194,169,148, 92,100, 72, 48,137,153,163, 12, 68,171,152,248, 68, - 33, 90,160, 86, 85, 36, 43, 82,171, 59,156,145,209,192,148,198,162,170,218,121,149,152,153,122, 34, 15,128,144,165, 86, 36, 52, -119,180,155, 1,162, 0, 24,178,104,102,128, 64, 84, 76, 74,177, 24, 81, 43,170, 25,113,112,190, 74,160,153, 20,110,224,181,233, -218,180, 19,144,217, 62, 89,205,198, 41, 11,181, 33,160,152,170, 40, 0,130, 43, 65,136, 6, 48,169,129, 72, 21, 85, 53, 66, 5, -195, 8,168, 51, 24,196,203,122,136,192,172,154,121,192, 8, 16, 28,157,137,228, 0, 0, 48, 49, 19, 81, 39,177, 41,128,187,213, -102,209,138, 60, 2, 38,128, 10,200, 76, 85,140, 16,177,130, 85,175,109,171, 0,177,154,138, 86,223, 13,146,215, 73, 58,116, 9, -160,150,154, 75, 17, 25,171,234,233, 84, 16,161, 99,222, 90, 46,140, 99, 32,244,100,114, 66,142, 28, 98, 10,125,234, 82,224, 20, -152,163, 95,138, 56,134,208,119, 93,159,210,176,236, 4,232,248,232,248,202,197,115,227,201,226, 94, 25, 67,232,250,190, 95, 46, - 54,251,161,163,148, 22,177, 59,183,115,254,234,213,107,181, 10, 24,148,156,205,106, 45, 50,230,188, 26, 79,243, 52,126,120,239, -225, 95,191,247,238, 59,239,221, 57, 56, 60,200, 69,213, 84,154,232, 66,128,136,200,169,163, 98,101,150, 68,196,196,144, 3, 27, - 74,123, 88, 9,145, 20,102, 59, 84, 11, 98,181,154, 17,103, 21, 89, 85,207,111,121,242,209,154,235,209,115,160, 86, 85, 26,150, -151,208, 7, 8,100,179, 98,226, 3, 10, 17, 3, 25,145, 83, 31,204, 8, 64,220,150,128,102, 14, 55, 84,164, 90, 36,240,217, 37, - 21, 60,245, 6,228,125,233,134,100,236,249, 88,113, 23,103,195,222,184, 27, 93,125,113,235,101,167,103,130, 9, 0, 2, 27,233, - 28, 4, 68,244,106, 7,247, 98, 99, 91,200,182,127, 33,179, 63,185,243,127, 52, 34,244,216,246,220, 44, 77, 90, 42, 68,155, 1, -113, 49, 32, 1,161, 57,229,192, 42, 84,197, 64, 31,189, 51, 8,193, 64, 68, 13,176,150,178,117,238,226,114,115,145,213,114,145, -147,213,234,228,244,164,139,253, 98,209, 41, 64, 8, 92,171,189,183,251,240,222,238,158, 39,252, 93,233, 76, 49, 84,178,253,189, -195, 85, 25, 3,113, 23, 83,138, 73, 85, 31,237,239,231, 82,212,172,235,210,197,157,157,231,110,221,124,250,214,205,207,124,242, - 51, 55,159,190,149,250, 84,204,166,213,180,127,184,175, 85,250,229,166, 2,222,127,255,131,205,243,151,215,235,211,111,254,197, -159, 61,188,119, 47,215,240,212, 75,159,251,212,167, 63, 27, 98, 56, 57, 57, 57, 61, 57,218,189,123,231,173,183,222,122,253,221, -247,246,143,143,166,154,115,206, 7,143,119,183, 54, 22,165, 86,100, 38,164,173,173,173, 71, 71, 39,204, 20, 42, 68,138,163,101, -255,150, 82,104, 32, 38, 81, 43,181,228,154, 99, 76,171,169, 46, 7, 70, 36, 5, 68, 14,203,190, 19, 83, 3,255,139, 48, 14, 64, - 66, 2,192, 10,203,110,113,202,167,185,120, 24, 3, 9, 67,151, 12,193,138, 8,152,221,188,121, 29,152, 85,229,228,248, 52,117, -195,198,246,230,202, 22,167,185,174,215, 99, 63, 12, 59, 91, 91,251,251,187,139,110,168,165,148, 88,134,110,216, 88,110,189,240, -236,179,223,252,238,247,242,148,193,176,239,250, 82, 4,137,200,154,213,137,252,193, 51, 16, 53, 21, 5, 53, 10, 36, 89,134, 62, -173, 86, 35, 2, 38,142, 99,201,137, 73,114,169,162,136, 32, 96,243,196,104,234,200, 61, 50,173, 78,191,182, 10, 0,222,160,134, -128,136, 99,201,227,148,185,239, 87,211,116,114, 58,114,224,245, 52,238,238,203, 88, 13, 9,157,188, 8, 58,155, 67, 90,187,131, -122,173, 50,154, 97, 84, 82,175, 19,109, 88,119,247,236,159,142,171, 69,159,136,217, 20, 48,180, 10, 38,240,148,134,146, 33,121, - 29, 19, 4, 91, 79,197,251,160, 19, 33,128,121, 95,121, 45,106, 96, 72,152,136, 68, 32, 4, 32,107,212,120, 85, 45, 34, 6,202, - 16, 26, 57,157,200,192,136,130,230,214,154,233, 53, 93,129, 73,196,102,216, 82,147, 49,219,103, 9,136,170, 30,133, 53, 49, 5, - 64, 54, 99,212,170,142,209, 7,195,153,166,173, 2,144,152, 65,132,192,140,200,181, 21, 83, 32, 68,101,242, 24, 21,184,177,218, -107,164,145,154,150,224, 34, 60, 0, 34, 8,104,128,128, 0, 12,192,212,108, 21,179, 73,186, 17, 97, 61, 70, 32, 96, 80,197,131, -233,166, 82, 85, 20, 72,153,102,227, 53,154, 25, 49,171,154, 48,165, 16,106, 45,129,189, 45, 4,137,130,155,117,221, 12, 2, 0, -162, 80, 68,160,148, 85, 21, 3,228,192, 17, 48,164, 20,188,237,135,200, 43,207,250, 46,116,177, 15,140,204,236, 21, 17, 69,181, - 15,241,116,181,186,247, 96,111,177,236, 23, 93, 55,120, 8, 43,165, 97,185, 12, 33,109,108, 44,186,110,209,197, 33,116, 97,216, -232,145, 34, 18, 16, 32, 6,234,210,240,138,232, 47,214,124,124,116,116,122,122,242,240,241,238,163,221,189,123, 15,239,223,127, -244,104,247,209,254,241,233,169,152,228,226,110, 37,194,166, 15, 55,108,187,203, 22, 31,201,215, 86, 93,136, 80, 69, 17, 1,246, -208, 15,162,143,227,234, 55, 47,183,160, 16,225,220, 12,228, 84,122, 64, 69,191, 48, 33, 32,105,109, 27, 22, 51, 69, 99,161, 74, -129, 33,207,240,225, 38,142, 32, 24,144,145, 89, 5,176,216,113,235,125, 50, 35, 95,242,138, 48,176,239,219,180,121, 33,205,204, - 2,121, 99,224,204,181, 62,163,152, 57,242,161, 89,101,230,173,250, 89,187, 30,186, 92,101,106, 10,200,216,168, 82,106, 64, 72, - 30,175,105, 56, 1,105, 13,136,142,249,157,243,200,166, 2,212,140,165,132,145,187,222, 97,111, 20,135, 58,174, 64,213,130,192, - 71,114,144,183,166,159, 97,152,173,223, 60,247,236,179, 79,255,209,159,125, 39, 34,230, 90,166, 41,175,242,158,152,118, 49, 2, -218,193,209,106,204,121,204,213, 7,127,246,223, 17,193, 88,115, 21, 93,244, 61, 3,137,234,225,201,169,104, 61,183,181,249,226, -205,235,207, 61,251,220,203, 47,189,248,212,199,158,222,217, 62,199, 49, 18,197, 92,166,211,131,131, 90, 42, 35,244,203,205,227, -195,189,213,209, 81,236,187,245,233,241,234,232,240, 47,190,254,181,135,123,167, 79,221,250,248,103, 63,249,202,229,171, 87,180, -148,195,189,199, 39, 71,123,247, 63,184,243,250,155,111,189,119,255,254,106,189,158,166, 92,214,171,142, 3, 24, 16, 49, 51, 67, - 41, 85,100,174,108, 86, 3, 8,228, 93, 87,160,214,118, 97,162, 21, 25,167, 49,151, 90, 77,211, 88,242,114, 57, 48,128,136,136, -106,100, 14, 20,192,128, 3,250, 34, 62,112, 12, 64,165,148,192,204, 33,154, 76,202,164, 38, 41, 80, 12, 72, 72,104,214,247,221, -173,155, 79, 2, 19, 25,158,174, 86,139,205,205,126,177, 44, 43,235, 88,175, 94,189,190,216,220, 89,110,110,191,127,247,253, 29, -201, 54, 66,225,152, 56, 4,230, 27, 87,174, 93,189,252,193, 59,239,191,111, 49, 33, 96,150,156,136, 38, 51,118,204,128,128,131, - 33, 43,129,138,230, 60,161,104,138, 41, 16,134, 64,109, 97, 9, 64,136,130, 24,252,203,210, 70, 73, 83, 5, 83, 80, 18, 51, 46, - 42, 0,182,104,133,234,218,130,181, 8, 36,118,178,158,138,143,123,140, 0, 32,170,199,211,218,249,138,126,248, 18, 35, 43,206, -194, 94,235,133, 86, 0, 67, 72,126,211,116,239, 45, 97, 96, 80, 63, 89, 16, 68, 13,205, 98, 64, 51, 8,236,105,219, 80,173,136, - 74,138, 44,134,213,193, 15,238, 57, 65, 82, 39, 60,169,115,228,155, 28,132, 76, 56,195,117,136, 2, 81,105,119, 98, 55,127, 25, -145,161,137, 50,162,170, 22,169, 49, 4,247,222,160,130,231,212,129, 19,149,181, 52,128, 95, 59, 79, 85,221,242,172,224,183,126, - 53,171,146, 33, 19,147,123,172, 26,179,219, 20, 48,186,129,116,222, 71,180,254,132,102, 77,214, 54, 93, 82, 96, 45, 5,196,113, - 33,228, 40, 24,117, 25,118,102,255, 21, 85,102,178,143, 82, 60,174, 46,195,220, 61, 11, 16,253,134,174, 28, 8,170, 49,218,186, - 26,184,133,217,183,228,170,110, 54,244,229,191, 19,170, 13, 64,212,237, 43, 13, 92,228, 88, 72, 1, 33,135, 72,160, 2, 82, 10, - 88,205,220,195, 87,179,151, 44,219,186, 86, 38,204, 85, 85, 37,134,144,186,212,197,216,197, 16, 83, 66,131,190,227,253,227,163, - 46,198, 52,116, 29,115,223,245,125,159, 82,136, 27,139, 97, 72,221,114,232,251,190,239, 98,183,216, 88,196,148,250,174,143,169, -139, 93,191,185,185, 81,115, 53,192, 16,195,114,251,220,230,185, 11,215,158,188,165,181,138,212,113, 28,143,142, 15,247,247,247, -247, 15, 14, 15,142,246,119,119, 31, 98,191,121,120,188, 70,176, 16,152,153, 28, 91,211, 28,101,141, 29, 22, 28,235,142, 40, 70, -174, 73, 43,216, 44,226, 32,152, 17,181,180, 65,235,101,163, 70,241,194,134, 19,243, 22, 60, 85, 66, 18, 84, 4, 67,140, 70,134, - 76,132, 84,161, 54, 3,142, 53, 60,229, 25,185,161, 57,246,253, 96, 3, 49, 48, 98,140, 20,164,170, 2, 48, 32, 18, 5, 34, 21, - 65,166,208, 98,194, 38, 54,163,115,220, 51,237,135,126,179, 43,254,120,223, 96, 91, 83, 17,124,180, 61,248,104, 42,104,177, 44, - 59,107,228,112,199,100, 64,146, 89,194, 98, 48,109, 65, 14, 64, 52,197,192,196, 4, 34, 24, 98,236, 7, 45, 89,107, 54, 32, 5, - 65,199,141,249,114,164, 58,223, 16, 9,169, 27,134, 11, 59, 23, 98,236,151,139,197,149, 33,109,116, 49, 79,101,148,188, 26,235, -123,119, 63, 16,145, 46,112,100,246, 82,217,192, 76, 33,212, 92,142,199,124,186,158, 96,140,145,124, 70,241, 9, 0, 0, 32, 0, - 73, 68, 65, 84,233,242,249,229, 75,207, 61,245,249,207,125,238,147,159,250,204,133, 11, 23,185, 11,136,193,204,114,201,164,128, -108,134,150, 87, 99, 72, 41, 12,221,193,238,131,216, 15, 93,138,239,191,247,222, 95,191,254, 67, 93,143,213,250, 87,255,198, 23, -158,125,254, 5,238,120,125,116,116,116,176,127,184,255,248,221,247,222,121,247,253, 59,251,199, 39,121, 42, 82,202, 56,174, 8, - 20, 9, 82,224,200,212, 7, 94,137,157, 73,165,162, 80,139,204,150,126, 64, 0, 98,116,195, 25, 33, 2,210, 60, 15, 58, 15, 67, -205,205,181, 0, 28, 8,157, 71,130, 4, 64,160,158,138,131, 16, 40,198,128,140, 0,204,142,117, 70, 52, 0, 5,221, 26,134, 39, -206, 95,208,170, 38,120,114,124, 60,108, 44, 98, 76,108,143,233,248,136, 48,254,201,239,253,239,180, 62, 90,244,189,170, 89,208, - 41,143,204, 33,133,180, 88, 44, 95,124,238,227,183,239,221,171,181, 34, 35, 1, 36, 14,185, 86, 21, 21,239,124, 0, 27, 82,152, - 86,133, 16, 2,113,198,194,104,129, 83,138, 82, 1,179,151,107,136, 3, 91,216, 7, 13,155,241,239,216, 38,111,119,229, 98,253, -136,147,126,230, 30,161,169, 86, 47, 73,240,149, 14, 51,129, 18, 5, 58, 89,175, 87,171,156,186, 48,191, 68,218,178,255,172, 84, -217, 76, 75, 21, 16, 83, 2,149, 51, 11, 24, 68, 78,203,110,225,219,165,172, 22,208, 16, 24, 68, 25,131, 89, 14,115, 0,157, 1, -181, 10, 6, 79,149, 66, 8,172,181, 34,179, 2,136, 25, 59, 81, 67,212,189, 38, 85,196,157,112,206,232,243,218, 11, 98,247,226, - 33,114,152, 74, 65, 0,102, 18,105,208,226,162,181, 84, 81, 45, 56,127, 67, 60,230,205, 8, 0, 22,128,156,186, 80, 84, 1, 13, -153,252, 68,175, 38,140,108,109,183,142,162,170, 89,176, 65,182, 1, 12, 74, 41, 4, 32,164,196,172,181, 17,230,231,130, 19,108, -133,232, 31, 85,228, 72,104,142,127, 72, 68, 76, 92,154,247,200,121,226, 51, 82, 4,144, 61,199,211,176, 11, 8, 45,123,196,117, -173, 72,140, 10,226,110, 40, 17, 39,185,231, 82,218,201,101,192, 12, 96, 86, 12, 52,215, 90, 4, 9,202,172,236,139,129, 9, 9, - 40, 53,110,163,187, 69, 5, 49, 17, 3,136,248,211,158,139, 20,209, 34, 58, 81, 94, 14,139, 40, 58,149,146,214, 33, 48,187, 50, - 17, 3,197, 20,186, 24, 83,136, 30,194,234, 82, 26,186,174,139,161,239,135,161, 31,250, 46,110, 44, 23,195,208,111, 46, 54, 66, -234, 66,228,161, 31, 82, 26, 66,138, 93,191, 96, 14,169,235, 54,134,197,198,185,243,151,175,220, 80,201,160, 54,214, 58,141,235, - 7,251, 43, 1, 69,212,104,171,229, 16, 83,196, 46, 68, 10, 24, 8, 84, 81,124, 53,217, 74, 95,125,250, 36,115,132,128, 79,190, - 0,170, 78,188,157,115, 76,224, 93,118,164, 34,126, 82, 34, 6,195, 98, 96, 76, 84, 69,144,140,128,180,152, 56, 80,167,122,207, -163,249,243,214,108,252, 30, 70, 53, 99,102,213,230, 58,246,153,155, 24, 77, 26,100,173,148, 66, 8, 38, 16, 0,205,164, 52, 30, -153,219,166, 4, 40,204, 85,184, 28, 64,218,209,143,179,231,221, 37, 54,215, 76,188,160,206,128, 77, 5,145,193,140,168,209,224, - 41, 18, 33,214,226, 10, 59,250, 29, 4, 65, 90,248,101, 54,227,104, 45, 0, 29, 14, 29, 99, 66,107,247, 93, 3,241,203, 17,250, - 13, 88,221,203,213, 58,166,191,243,245, 63,254, 39,255,219, 63,255, 96,239,120,209,199,190, 31,182, 55, 23,125,140,162,117,255, -240,120,181, 94,249, 37,177,133, 97, 5,114,173,117, 53, 78, 83, 57, 93,175,171, 64,223,197,223,254,207,254,246,151,191,244,133, -237,243, 23,185,235,215,167,167,211, 56,214,169, 96, 0, 98, 98, 12,128,160,117,170,181,164,229, 50,246,195,222,253,123, 91,231, - 46, 20,149,175,127,253, 79,198,211,147,211,211, 92,113,249,202, 23, 63,123,229,202, 53,131,122,116,112,124,116,240,248,195,247, -239,220,253,224,206,155,239,127, 0, 2, 67,162,213,241, 88,107, 61, 61,205, 27,125, 56, 29,215,185, 10, 24, 22, 67,138, 28, 99, -152,114,110, 17, 1, 39,216,182,173, 23,184, 0,114,182,153,142, 33,136,170,154, 33,177, 58,170,199, 4,209,136,208,225,203,196, -164, 0, 20,121,145,186,147,211,245, 56,142,193,209, 87, 6,238,181, 5, 69, 32, 20,160,107, 23, 47,158,223,217,230, 16,179,148, -113,156,128, 8, 57,112,234,227,144,167,147,227,144, 15,111, 92,222, 1,182,135, 7, 71,129, 67, 45,181,134, 41, 32, 83, 76, 87, -175, 92,254,212, 11, 47,188,249,238,187,196, 0,102, 49,242, 98, 24, 20,237,232,248,100, 42, 18, 41, 4, 74,219, 11, 50,196,170, - 26, 66, 36, 0, 53, 75, 33, 5, 67, 1, 67, 9,100,234,183, 46, 6, 40, 98,103, 81,106, 59,219,216, 56, 70, 64,181,182,193,160, -165, 36, 16, 77, 76,146, 49, 32,154, 87,189, 35,100,173,137,162,153, 26, 9, 26,131,170, 17,219,204,167, 6, 3,242, 53, 63,243, -114, 99,227,224,232,144, 17,144, 64,197,103,198,112, 86,243, 8, 8, 37,103, 69,234,135,174,102,169, 82,204,212, 20, 74,206,234, -121,116, 2, 84, 82,109,213,196,128, 64,106,171, 41, 99,128,200, 9,152,165, 72,223,241,148, 53,198, 88, 69,156,129, 32, 13, 38, -131,193, 25,168, 98,142,142,226, 64, 17, 81, 12, 85, 0, 64, 3,114, 5,173,106, 78,120, 85,171,168,209, 12, 74, 21,117,174,121, - 53, 0, 76, 72,147, 40,134, 16,124,208, 5, 86, 53, 86,169, 14,155,103, 53, 0, 32, 7,112, 10, 26,136,148,158,147, 81,176, 70, - 54, 52, 4,159, 38, 28,119,166,228,122,171,218,143,117,216,121,188,172,101,125,221,225,102,179, 81, 14, 26,174,167, 69,229, 67, - 72, 51,226, 79, 83, 12, 49,176, 95,233,189,196,195, 91, 79, 13, 64, 85, 9,168, 50,138, 65,154,239, 1, 78,143, 10, 76, 69, 20, -196,136,221, 99,225,130, 20, 40,130,170, 17,161, 26,154, 21,117,199, 54, 57, 3, 94, 17, 3, 0,138, 26,177, 17,154, 86, 85, 50, - 13, 52,173,166,169, 78,206,102, 88, 14,131, 2,214, 34, 67, 23, 98,140, 93, 74, 49,112,100,238, 83, 74, 41,246,125, 55, 12,253, -198, 98, 99,209,197,190,235,151,139, 97, 99,185, 57,244, 41,164, 52,244, 67, 23, 83,236,251,174,139, 28,250, 16, 34, 49, 15,203, - 97,177, 92,218, 5, 43,181, 74,214,211,233,244,184,200,116,184, 98,172,129,172, 75, 76,104, 41, 80, 0, 8,193, 2,161, 2,163, -136,187,104, 85, 42,152, 63,173,174,206,179,169,205,182, 25, 66, 82, 40,254,140, 59,207,178, 52,184, 37,160, 47,114,125, 91,219, -162,235,124, 86, 60,101, 20, 72,205, 64,218,246,141, 40, 52,114,157, 49,153, 99,201,218,137,215, 18,174,110,200, 7, 11,190,212, -117,137,199,107, 71,126, 44, 60,130, 42,245,172,213, 9,200, 95,249,190, 5,118, 77,161,189,146, 64, 60, 8,127,150,199, 5, 1, - 72,203,142, 82,210, 71,135, 31,197,161,156,207,143, 60,247,122,184,226, 35,150, 43, 45, 55, 67, 72, 82, 39,205,197,196,165,127, - 68, 48,213,218,186, 83,196,186,197,178,172, 79,254,213,239,254,222,159,252,249, 55,223,120,255, 94, 8,233,250,133,115, 67,207, -187,123,143,214, 83, 77, 41,113,160, 24, 34, 1,100,147, 44,181, 78, 53, 4,222, 30,250, 7, 7,107, 5, 74,221, 48,112,248,123, -255,241,111,254,230,111,254,135, 39, 99, 62,157, 38, 91,143,181,102, 4, 98,138,104, 8,130, 2, 21,212, 56,134,245,225, 94,183, -220, 62,125,120, 63,198,240,206,219,111,188,241,195, 31,140,171, 41,246, 91,151,175,223,122,230,185,231,187,110,200,227,250,244, -244,104,239,193,253, 59,183,223,189,125,247,222,238,227,199, 23, 46,236,252,242,151,191,120,184,247,240,159,253,203, 63,150, 22, -119,103,191,161, 3,129,204, 8,105, 63,238, 17,177,235,152,155,105,205, 98,160,234,121, 22,175,190, 33, 66,162, 34,210,224,213, -237, 44,244,240, 46, 48,130,170, 56,195,107, 42, 82, 72,151, 67, 7,132,165, 40, 52,246,121, 11,239, 40, 40,170, 94,127,226,210, -176, 88, 2,112,169, 39,235, 60,185,121,137, 57, 46,150, 27,235,245,234,217, 23,158,123,231,173,119,158,121,234,169,189,147,215, -196, 52, 49, 77, 37,135, 16, 82,133, 62,245,159,124,241,229,156,203,131,199,143, 17, 3, 34, 86,173, 93, 76, 23,182,183,198, 90, -199,245, 58, 75, 97, 36,119,242, 32, 98, 35, 5, 17,110,117,139,163,113,157,157,148, 81, 52, 48, 86, 5,102,211,218,158,152, 24, -147,255, 97, 34,243,164, 69,213,220, 10,233, 16, 68, 4,164, 64,226, 55,133, 51, 59,151,226, 56, 21,167,180,183, 64, 3,243, 92, - 12, 65,160,154,107,113,110,177, 84, 89,141,167, 45, 11, 46,149, 17, 77, 8, 16, 68,140, 25, 66,224,128,152, 11, 24, 88, 45,162, -106, 82,213, 11,175,252,227,102, 34,169, 16, 2,120,139,152,169,137, 89, 8,205, 1, 15,140, 86, 4, 25, 69, 32, 75,217, 14,132, - 8, 35,181,110, 73, 96,215,143,177,148, 98,104, 6,148, 2,213,138, 58,151, 32,128, 66,136,113, 90,157,142, 37,119,204, 51, 64, -219,175, 32,104, 85, 49,249, 9,172,196,104, 85,129,180, 84,224,192,102, 38, 82,115, 21, 55,211,177, 18, 2,155,170,129,154,106, - 98, 54,138,226, 62, 59,153, 41,232, 6,128, 26, 17,149,168, 74,235, 66, 6, 80,155,193,181,224,140,243, 86,155, 77, 74,134,115, - 6,199,124,231,235, 95,117,228, 64,168,222,249,192,205, 13, 29, 56,148, 90,141,176,168, 85,133, 24,217,239, 90,204,232, 94, 88, -149,106,192, 70,205,253,205, 72, 4, 20,129,178,170, 18,249, 75,148, 42,198,192, 42, 85,196,140, 80,196, 2,187,133,202, 39,128, -179,151,141, 33,128,138, 82,236, 1, 10,113, 3, 24, 6,102, 85, 53, 83,169,146, 69, 15,142,143, 3,211,162,239, 2,115,145,202, -196, 93, 8, 33,134, 24, 99,223,167,101,215,167, 46, 49,113,159, 82,223, 58, 78,226,214,114, 57, 12,253,114, 88, 14,139,190,239, -250,141,197,178,235,251,152,186, 20, 35,167, 62,198, 46, 48,239,108,108, 2,162,200, 54, 0, 86,209,146,203, 84,166,147,117, 70, - 19, 21,141,164,129, 17,161,166, 0, 12, 76,224, 55, 11,100, 12, 4, 34,160, 0,232, 73, 14, 5, 53,191,236, 1, 32, 96, 45,202, -158,160,101, 86,135,109, 32, 3,212,118, 19, 21,109,189,211, 1,139, 2,250,192, 79, 72,110,160,243, 73,170,153, 12,145, 61,199, -174,224,179,181,223, 42, 60, 31, 23,126,124,159,226,179, 82,243,235,195, 89,161,161,157,225,225,177,149,192,105,123, 28, 63,202, - 93, 0,249,123,218, 35,209, 98,132,152, 87, 25, 86, 69,177, 81,213,154,162, 32, 45,166,217,206,108, 83, 0,168, 83,134,184,158, -100,146,113,173,146,141, 0,129,193, 23,173,102, 0, 12,148, 22, 27,139, 58, 30,255,238,191,248,231,191,255,245,111,223,223,125, -244,228,149, 75, 87,207,157, 83,162,191,251,159,254, 39,122,248,224,247,254,240, 15,127,248,206,135, 53, 67, 45,202,140, 12,112, - 97,123,249,241,231,158,121,229,211,175,188,244,242,203, 95,251,131,127,245, 59,255,215,159, 46, 22,139,197,114,241,179, 95,249, -153,195,227,163,169, 40,130, 6,198,237,157, 29,173,178, 30,215, 90,107,173, 37,164,168, 98,199, 71,135,181, 76,125,205,143,247, - 31,223,187,115,103,117,114, 20, 49,225,246,185,143, 61,247,210,197,139, 23,145,104,117,122,116,184,247,232,238, 7,119,222,185, -243,222,189, 7,187, 99, 41, 95,248,220,167,127,246,167, 94,125,226,242,133,175,126,245,171,134,152,124, 86, 36,208, 42, 76,196, -110, 90, 7,231,245, 75,203,143,207,165, 98, 42,128, 64, 41, 80, 0,118,174, 3, 49, 70,226,117,173,244,145,169,180,137, 26,158, -130, 39, 98, 81, 3,130,192, 92, 74,166,212,153,128,168, 34,145,103, 36, 35,205, 17, 74,132,103,159,190,153,186,142, 67, 24,167, -105, 53,174,201,147, 21, 72, 16,121, 88, 12,100,112,237,169, 27,111,252,232,205,203, 91,155,247, 14,142,186, 5, 33, 96,174,165, -235,122,100,234,251,238,229,231, 95,122,248,237,111, 0, 97, 8,193, 12,198, 60,109, 44,150, 9, 33,103, 46, 42, 33,134, 64, 84, -196, 84, 37, 49, 3, 34, 41, 12,125,199,132,235,113,116,204,104,187,233,213,179, 10, 6, 21,169,134, 24, 76,153,153, 77,209, 95, -131, 70,232, 70, 99, 68, 2, 71,235,121, 57,152,170,138,197, 96, 42,243, 42, 10, 25, 60, 15, 98, 4, 8,106, 76,220, 69, 20, 17, -151,114, 24, 40,144, 91, 29, 0,136,141, 10, 54, 62, 27,149, 82, 67, 12,102, 86,155, 69,193, 16,160,138,197, 72, 14,253,225,200, -193,247,215,134,102, 80,197, 84, 84,201, 8, 64, 21,173, 42, 7, 42, 5,138, 84, 52, 44, 69,192, 32,113,168,156, 85, 17, 20, 24, - 13,145,156,201, 14, 6,162,202,204,173, 50, 4, 17,136,178, 72, 41, 5,206,112, 82, 51,105, 91, 93,181,182,182, 11, 3, 38, 3, - 9,196, 98,213,185,208,162,162,166, 82, 21, 0, 42, 88,136, 0,132, 80, 27, 80,176,197, 88, 68,146,251,246,154, 3,143, 16,200, - 64,208, 67,195,115,131,181, 41, 40,250,250,167,109, 0,213,144,180,253, 76,223, 82,179, 2, 2,198, 0, 62, 48, 82, 96, 6,204, - 42, 96, 38, 34,213, 0, 56,200, 56,249,197,159, 80, 3, 55,194, 41, 19, 86,169, 85,180, 75, 4, 6,206,143,137, 41,168, 1, 6, -244,152, 76,195,178, 83,131,254,180,158, 44, 70,102, 34, 51,113, 49,246, 44, 85, 67, 13,189, 76, 14,240,111,155, 29,159,135,149, -208, 87,130, 54,247,131,130, 34, 76, 99, 1,203,107, 64, 12,206,105,212,190,239,134,126,240,237,151,147,241, 67, 8, 93, 8, 41, -121,182, 54, 13, 67, 90,246,195,230,230,198, 48,116, 27,253,114,177,232, 67,136, 33, 82,138, 67,236, 98,215, 59,165, 34, 14, 67, -183, 92,110, 35, 50, 82,144, 50, 22, 17,171, 50,150,241,184,228,105, 26, 29, 19, 23, 73,186,200, 41, 2,145, 5,162, 64, 32, 82, -124,155,104, 6, 94, 4,198,132,160,100,100, 90,107, 51,197,107,171,243, 64, 67,116, 11,141, 35, 3, 20, 5,209,179, 90,214, 32, -148,142,105,129,121,187, 47,132,200, 1, 76,156, 63, 8, 38, 18, 40, 32, 67, 0, 51,138,140,181, 45, 93, 0, 20,136,144,192,155, - 43, 85,219, 11,216, 31,186,217,158,239,221,194,243,171,105, 94,188, 54,245,198,171,254,128, 65,180, 89, 34,129, 0,213, 13,181, -224, 94, 76,192,179,254, 64, 3, 83,168,117,125, 10,106,134, 98,173, 48,170,130, 54,242,188,106,237,135,205, 59,111,254,232,119, -126,231,159,124,239,245,183,158,122,242,234,111,255,194,111, 97, 89,255,213,155,183,127,229,215,126,253,197, 23, 62,206,225,147, - 31,127,229, 39,111,191,249,218,201,193,241,122, 28,179,212,237,157,115,183,158,123, 97,231,220,185,106,134, 72,191,242,171,191, -252,151,223,251,193,107,239,239,165,190,207, 57,199,116, 65,117, 84, 51,205,229, 95,252,254,255,253,236,115,207,191,244,194,173, -131,131,227,197,214, 14,167,248,240,246, 59, 59, 23,174, 96, 56,247,253,191,248,250,238,195,187,169,235, 67,218,216,216,185,126, -253,230,173,141,205, 69,158,198,253,189, 71,187,247,239,190,251,214,155, 31,220,191,187,127,188, 58,191,179,241,247,255,214,175, - 62,243,244,211, 83,206,121, 42,227, 52, 25,114, 76,168,160, 96, 54,141,217,123, 56, 75,206,129, 90, 70,128,145,152,112,156,154, -129, 34, 50,133,200, 72, 28, 18,139, 24, 34, 34, 82, 85,143, 76,183,207,160,249,144,192, 35, 47,115,150, 29,140,137,187, 20,213, - 12, 24,106,173,126,102, 4, 38, 17, 1, 11,165, 26, 1, 62,113,241, 98, 26, 6,128,224,165, 43,226, 68, 42, 4,164, 46,117,253, -201,225,254,229,243, 23,118, 47, 62,188,254,196,181,227,215,254,250,100, 61,110, 14,139,105,189, 74, 49,109,198, 24, 67,186,252, -196,249,171,151,158,120,244,120,223,196, 60,236,105,166, 33,196, 20,226,209,170,244, 1, 13,136, 35,104, 49,245, 71, 4, 96,170, - 83, 31, 82, 23, 35, 48, 69,211,140, 12, 80,207, 34,207,158,123,149,106,150,130, 35, 50,201,188,208,238,163,174,221,179, 55, 96, -155,108,137, 93, 14, 78,196,110,169, 60,235,107,112,155, 54,162, 49,160, 17, 33, 3,136,170,104, 43,253, 48, 83,169,168, 58,215, -232, 40, 0,213,246, 52, 27,128,198, 64, 38,140,156,189,111, 47,134, 96, 94,155,224, 55, 81, 49, 13,134,132,126,248, 34,129,170, - 41,180,208,122, 8,140, 8,185, 10, 16, 17,113,151,226,170, 28, 85, 64,209, 82,107,112,100, 68,235,174,119, 75,107, 81, 96,212, -154,205,128,153, 60,133,164,230,110, 71, 84, 19,255, 77, 53,154, 92, 51,174, 0,121, 81, 23, 65, 12, 92, 49, 16, 3,122,221,132, - 2,205,221, 56, 2, 72,158, 68, 71,223,145,178,153,128, 26, 50, 97,109, 20,147, 54, 43, 56,223, 48,251,118, 22, 65, 45, 6, 36, - 67, 85,209,217,191,224, 5,135, 24, 60,223,101,236, 59, 0, 53,138, 12, 80,137, 41, 79,197, 68,196, 45,170, 51,183,146,136, 9, -160,138, 68,142,168, 10,103,211, 31, 57, 77, 22, 69,107,201, 10,228, 46,192,150, 89,156, 11,189, 92,179, 64, 0,168,214,204,209, -158,128, 86, 51,171,198, 78,214, 69,240, 48, 67, 34,133, 0, 30, 3, 50, 49,140, 6, 77,239, 68, 81, 97,114,137,207,207, 25, 64, -130,170, 42, 85, 78, 78, 87, 68,148,107,206, 85, 35,113, 63,116,151,206,109, 33,176,128,197, 64,145, 99,140, 33,133,212,199, 24, -187,180,236,251,237,205,173,229, 70, 63,196,142, 3, 35, 66,228,216, 47,210,178, 95,246,139,126, 88,116, 41, 45, 23,139,205,148, -122, 94, 14, 75,221, 70,132,170, 57,231, 98, 85,199,156, 75,205, 39, 99,145, 50,197, 72, 68, 18, 48, 37,200,204,254, 7, 33, 13, -168, 89,208,154,175,169,129,230,164, 69,158, 68,149,144,188,207,171,149,224, 57, 54, 1,154,149,211,204,206, 18,166,109, 4,242, - 93, 41,182, 34, 17, 23,111, 81, 41,168, 87,125,160,255,186,194,254, 41,214,150, 29,197, 25, 91,216, 32,144,243,187,125,110,183, -108,149, 86,115, 60,206, 87,178,132,238,134, 52,108, 47, 19,152,205,252, 60,199,154,170,156,109,131, 1, 16, 60, 99,210,194,138, -132, 40, 14,200,157,123, 92, 8, 1,203,250, 56,245,241,191,254, 7,255,197,173,171,151,239,222,187,247,228,211,207,253,194,175, -157,239,134,110, 92,175,213, 86,204,233,233,151, 62, 27,157,173, 8,102,138,162,117, 53, 77, 82, 11, 17,109, 93,185,245, 15,254, -243,191,243,223,252,247,255,227,233,234,244,255,253,227, 63,253,236, 39, 95, 42,130,159,251,220,103, 36,223,251,199,255,244,159, -246, 59,151,255,167,255,225,191, 91,110,109,173, 87,167,135,239,221,223,190,244,196,219,111,191,254,163,127,251, 29,102,190,112, -254, 34,198,157,107, 79, 63,191,177,185,137, 96, 7,251,123, 7,251,143,239,222,121,239,237,247,222,185,247,112, 87, 84, 94,125, -229,147,127,243,103, 94,221,216,220, 90, 79,197,212, 44,161,168, 34, 64,136,140,128, 82,235,106, 53,213,118,238, 89, 8,196, 68, - 69, 20, 8, 57,132,144,170, 19, 5,129,177,148, 42,110, 51,197,214,199, 85,205,205, 3,142,140, 80, 5, 19, 80, 16, 52,160, 92, - 74,149,138,216, 57, 11,105, 72,105,204, 18, 56, 0,130,152, 36,138,236,145, 52,194, 44,229,252,246,206,205,235,215, 49, 68, 35, -242,121,149,137, 0, 8,144, 17, 45,164,190, 31,134,227,189,189, 39,175,221,184,127,255,193, 79,188,244,241, 63,249,246,247,106, - 21, 99, 90,175, 87,139,126, 48, 3, 19,252,204, 39, 62,241,198, 59,111, 3, 40, 65,244, 45,110, 36, 90, 19, 45,187,164, 42,235, -177, 50, 3, 83,224,192,101, 42, 28, 89,115,181, 62,244,125,183, 90, 77, 14,200,117, 82, 47,153,103,107,124,156, 0, 48, 99, 10, - 49, 4,127, 13,183, 64,135,129,154, 34, 82,138,129,145,138, 8, 32,170, 88,129, 26, 2,197, 46,194,169, 87,120,205, 17,144,185, -212, 91,125,152, 48, 36,192, 82,179, 9, 24, 65,160,160,104, 21, 49, 48, 57,102,151, 16, 34, 81, 49,245,174, 15, 19,169, 82,217, - 67, 32, 64, 98, 42, 34,179, 82,239,100,142,143,186, 99, 77, 13, 2, 4,223, 55, 68,102,230, 42,165,170,106, 85, 1, 68,173, 4, -172,162,162, 21, 12, 8, 65, 90,234, 16,173,168, 21, 53, 50, 96, 38, 14, 63, 6, 88,242, 36, 3,144, 59, 60, 17,193,196, 9, 31, -170,138,128,165,138,235,117,165,228, 90,164,148, 60,229, 9, 48, 32,182,214, 89,108,162,138,123,215, 12, 69, 20, 98, 35,135, 96, -115,196,129,153,137, 90,160,102, 90, 51,210,179,148, 13,145, 10, 84, 80, 81,117, 0,149, 57,181, 6,140,252, 31,157,213, 90, 48, -166,198,171, 51,132,192, 44, 50, 19,148, 1, 65,161,138,132, 24, 92,208, 71, 34, 7,110,183,242, 57,103, 99,182,208, 2, 55,254, - 56, 16,162,162, 42,152, 19,244, 76,171,112,138,238,181, 63,235,144,240,151, 56, 49, 19,133,162,170,106,165,136, 74,145, 86,188, -225,230, 90,109,233, 47,104, 8, 73,231, 46, 82,211, 32, 56,144,231,129, 49,197, 40,106, 1, 39, 36,132,170, 0, 84, 76,173,202, - 56,214, 72, 4,136, 83, 41,155, 41,254,250, 87, 62,151, 49,221,125,240,120,255,160, 76, 66,102,150,186, 20, 57,116, 33,118, 41, - 12, 67,223,245,221, 34,166,229,114, 99, 88, 14,142,200, 31,150,155,129, 83,215,247, 41,198,174,219,100, 14, 64, 40, 34, 42, 90, -107, 45,181, 20,201,171,156, 81, 4, 64, 8, 20, 13, 9,148,164, 32,149,198, 45,168,138, 72,100, 6, 4, 34,218,162,163,190,180, -213, 51,129,254,172,107,188, 77, 27,230,109,213, 32,179, 17, 1, 12,140,220,118,105, 18, 60,209,214,100, 76, 36,243, 48,147, 57, - 89,179,133, 85,189,182, 4,129,253,252,118,138, 72, 43, 74,161,134,158, 60, 75,132,159, 21,188, 54,195,101,107,150,247, 34, 10, - 3, 32, 19,223,156,180,222,173,185,175,182,109, 22,253, 91, 1, 30,216,111, 96, 32,155,214,171,103, 94,126,245,191,125,225,149, -191,126,237, 7,247,119,247, 95,254,244, 79,110, 44,135,170, 50,142,147,183, 18, 87, 44, 58,213, 2,100,166,200, 33,116, 61, 96, -226,224,206,127, 57, 62, 58,124,230,149, 47,253,214, 47,127,247, 31,253,238,159,255,254, 31,253,241, 31,126,245, 15,179,216,171, -159,127,245, 23,191,252,234,149, 39, 46,221,123,116,244,143,255,217,255,249, 91,191,254,139, 23,111, 60,253,232,254,251,223,253, -203, 63,189,255,225,189, 39, 46, 95,234,250,115,221,246,149, 75, 79, 92,235,250,174,150,114,240,248,193,189,123,239,223,190,253, -222,238,227,199,123,135, 39,215, 46, 95,248,229,159,251,210,179, 31,187, 89,170,230,162, 78,196, 68,179, 82,106, 10,148,115, 77, - 41, 36,194,172,245,172,101, 48, 48, 25, 88, 41,237,238,201,173, 65, 17,180,150, 24, 67, 3,255,155, 34, 82, 23, 66, 36, 86,212, - 62,244,129, 99,169, 83,104, 95, 16, 99, 4,171,194,205,160,107,102, 54,149, 82, 69,137, 33,133,120,108,107, 5, 19,149, 62, 6, - 38, 86,213,203, 23,207,159, 63,183, 35, 83, 33, 2,198, 48,229,105,115,103,203, 84, 65, 77, 16, 8,121,216,216,180, 90,203, 84, -164,212,229,230,198,243,183,110,190,115,251,195,197, 98, 89, 76, 79, 86,171, 24, 34, 18,239,108,109,253,244,171,159,255,198, 55, -255, 98,123, 43, 54,245,192, 32, 32, 64, 8,129, 40,151, 34,106, 8,213,170,155, 45, 96, 18,149,245,180,209,119, 57,231, 50, 9, -249,133,147,192, 61, 26,230,136, 20,176,113, 44, 33,250, 24, 73,128, 21, 20, 20,154,255, 29,205, 59,136,173, 93, 37,153, 0,141, -209, 57,122,168, 8, 10, 16,230,154, 75, 34,246,206, 25, 19, 80,118, 86, 95, 40, 50,169, 0, 70, 34, 79, 85,181,251, 99,123, 84, -221,196,227,140, 86,105, 59, 68, 48,192,192,172,136, 80,108,102,216,168, 8,169,153,170, 32,177,182,154,224,198,171,100,162, 92, - 85,179, 0, 66, 32, 46, 82,189,140,147, 57, 80, 64, 18, 82, 21,100, 16, 5, 37, 85,246, 29, 43, 16, 49,205,236, 67,111, 74,246, -111,107,169, 10, 34,149, 24,209,178, 42, 97, 8,204, 14, 58,103,162, 92,203,152,199, 92,171,168, 17,123, 2,201, 47,206,216,240, -147,165, 26,154, 40, 16,104, 83, 7,207,112,164, 45,173,138, 17, 24, 84,193, 85, 43, 5,211,202,177,243, 83,180, 81, 74,253, 92, -197, 89, 70, 69, 52,102,127,206, 98,100, 64, 44,165,118, 41, 65,107, 28,157,155,127, 8, 0,173,170, 52, 10, 35, 34,128,149, 70, -196, 68, 64,114, 88, 5, 51, 17, 18, 83, 69, 68, 82, 84, 95,181, 16, 11, 84, 81, 0,226, 6,253,113,190, 2, 34,136,186,127,158, -185, 25,233, 69,106, 27,100,165, 86, 17,108,165,135,164,222,129,171,166, 86,129,146, 17,241,172,107,185,132, 65, 45,253, 6, 48, - 43,165,208,168,194, 36, 85,171, 40, 24,184, 48, 82,115,205, 50,254,212,167,159,187,122,235,217,245, 52,174,199,114,122,188,126, -184,247,248,195,135,251,123,135,167,123,251, 7,187,143,243,186,136,153,197,212,117, 41,244, 93,183,217,247,195, 98, 88,246,125, -223,165, 97,177, 92,244, 93, 76,221,114,177,164,190,235,187,129, 41,246,125,223,117, 11,224, 77, 19, 99,131,177,142,106, 88, 74, -169,146,167, 34, 90, 39, 68,144, 58, 89, 89, 71, 54, 68, 75,232,208,117,243, 59, 93,179, 45,169,129, 10, 4,114, 52,142, 65,115, - 34, 25,176,104,109,101,115,158,178, 82, 80, 85, 36, 2,162,128,128, 69,132,137,153,169,170,128,130,170,178,211,149, 13,124, 89, - 67, 62, 96, 40,152,168, 57,132,221, 90,119, 54,158,189, 5, 26,150, 20, 26,239,114,174, 69,129,179,194, 66,151, 25,208,218,143, - 25, 23, 14, 14,178, 35,112,158,131,186, 6, 68,193,177,213,136,132, 70,156,210,241,241,254, 15,190,251,189,141,157,115,159,251, -201, 87, 13,235, 84,203,204,198,153,111,158, 94,206, 24, 6, 32,103,181,144,212,104,160,104,102, 90, 86, 99,249,165, 95,253,141, -239,252,240,141,187,143, 86, 28, 35,146,125,251, 91,223,250,254,191,249,158,129,113,160,127,251,253, 31,156,219,217,250,248,173, - 15,238,190,247,218,176,216,186,126,243, 41,142, 59, 91, 23,175,158,191,120,145, 0,215,167, 71, 15,238,222,126,231,157,183,111, -127,248,225,222,254, 33, 16,126,254,149, 79,252,252,151,127,114,115,115,123, 61,121,105, 17,181,148, 31, 65,158,166, 24,226,225, -201, 90, 85,226, 48,152, 41,187, 85, 0,204,251, 67,166, 60,133, 46, 34,162, 84, 11, 33, 40, 32, 83, 64,226,200, 65,181,130, 98, - 96,114, 87,104,136, 36,210,212,217,234, 14, 86,244,190, 48, 43, 85,212,140, 1, 35, 51, 50, 30, 29,158, 94, 46, 59,232,188, 67, -116, 53, 27, 66, 32, 51,187,184,115, 46,198, 80,242,180, 30, 79,246,246,119,223,191,123,119,235,194, 19, 59,151,119,238,221,185, -131,200, 64,132, 16,226,198,210,224,244,227, 47, 63,255,253,239,255,224,202,249,115,239,222,249,176,214, 26, 82, 55, 78, 99,138, - 9,204,166,105,122,230, 99, 79,223,127,240,225,238,238, 94, 86, 97, 33,226,192, 28,170, 76, 10,132,196, 82,115, 31, 98, 11,214, - 2, 35,192, 88,166,190,227,154,101,202, 25,200,133, 83,252,104,199,167,170, 38, 89,129, 25,125, 34, 97,102,255, 25,238, 65,100, - 66, 84, 50,240, 64,157, 87,240,144, 17, 73, 85, 69,136,115, 13,152, 63,128, 14,109, 2, 85, 10, 96, 98, 30,162,159,125, 71,222, - 75, 57,183, 53,207,221,237,162,115,108, 17,155, 3, 65,205,136,152, 17,115,123, 29,107, 35,234,177,247,142, 49,128, 16, 50,219, - 28,212, 2, 64,194, 68, 93,145,181,181, 22, 40,152, 59,229,209,249, 22, 64,126, 86,138,123,164, 4, 32,130,113, 83,164,244,163, -248, 31,162,106,157,239,187,138,192,206, 77, 65, 38, 70,100,166,106,170,138,235,105, 34,112,142,136, 1, 67, 8, 81,212,121,136, - 13,166, 70,212,250,212,200, 26, 49,202,212,245, 89, 52, 20,132,208,228, 44,112,203, 49,169,130,128,249, 16,222, 12,203,237, 80, -215,143,216, 53, 6,140,200,196, 34, 66,136,129, 57,134, 16, 57, 76, 86,218,155,190,217, 94, 3, 25, 76, 83, 81, 80,238,153, 12, -144, 40, 24,152, 33, 35, 4,100,116,148,184,153,127,193,209,213, 52, 80, 52,227,118,247,159, 75,239,230,238,103,159,242,108,126, -167, 58,245,147, 9,165,106, 76,177,193,149,206,196,131,234,114,131,153, 40,177, 54, 44,168,191,223,212, 0, 41,163,133,179, 44, - 60,249,219, 17,230, 93,189, 54,184, 21,232,208,119,160, 80,170, 76, 89,170, 90, 63, 12,203,141,141,235, 79, 94,121,197, 84,173, - 78,171,233,248,116, 58, 60, 57,121,180,119,252,225,195,199,199,199, 39,187,135,235,119,246, 30, 49, 16,135, 24, 99, 92,116,221, -194,219,202,151,139,148,226,144, 82,223,117,203,205,229, 98, 24,210,176, 72,161,139,169, 15, 93,159, 98,232,187, 4,184,129,128, - 34, 86,107, 45, 82,242, 84,171,140, 83,169, 71,199, 7, 90, 39, 64,136,100, 41, 98,112, 8, 49, 35, 4, 0, 52, 45, 2,166, 72, -212, 80, 4, 88,207, 42, 0,219,180,220, 4, 31, 3,128, 0,136,204, 76, 68,126,115,159, 9,115,220, 70, 35,156,231, 29,153, 93, - 59,218,218,151,124,213,238,113,190, 51,111,109,251, 63,209,252,138, 4, 35, 10,205, 86, 43, 98,118, 6, 28,155,127, 7,168, 72, -212, 26, 16, 68,103,205,198,213,212, 38,189,246,203,197,157,183,223,124,251,173,183,158,121,241, 19, 79, 62,121, 45,143, 43, 95, -214,158, 81,233,231, 87, 10, 35, 48,119, 29, 84,209, 42, 6,162,102, 4,164,136,104, 92,166,245,112,254,210,223,255,143,126,243, - 31,254,207,191,179, 22, 93,164,196,220,155,217, 84,242,141, 27, 79,126,229,179,207,125,255, 7, 63,250,179,127,253,173, 95,249, -247,254,198,206,133,235,214,111, 95,190,116, 61,245, 73, 74,126,252,104,247,253, 59,111,191,249,246,219,247,118,119,143, 78, 86, - 79, 95,187,250,115, 95,249,252,167, 95,122,174,212,114,186, 58, 37, 10,115,166,205,119,100,178, 94,143,200,188, 92, 14, 71, 39, - 71,181,202,233, 58, 15, 93,231,238,211, 20,152, 9, 77,133,160, 99,226,214, 96,228,141,110, 78, 89, 3, 82, 53, 36,244,122, 7, - 12, 4, 94,107,197, 8, 98,232, 41,149,192,222, 63,153,115, 65,194, 46, 69, 70,220, 24,122, 96,170,181,133,142, 20, 32, 48,130, - 97, 49, 91,110, 44,106,173,167,235,227, 71, 15, 31,188,245,238,237,199,135, 7, 8,244,196,141,155, 15, 62,188, 75, 76, 42, 80, -115, 9, 28,180, 11, 96,112,225,220,249, 71,187,123, 23,183, 54, 31, 31,175,153, 43, 48,143,101,138, 28, 0, 56, 97,248,244,203, -159,250,218,159,255,185,100,169, 38, 68,152,107, 33,196,113, 26,183, 55, 55,145, 81,234,156, 53, 2, 52,208, 24,120,154, 74,107, - 66, 96,140,214, 40,218, 8,173,141, 26, 12,171,213,226,216,237, 90,141,216,137, 67,220, 28, 6, 8,100,181,109, 35, 20, 16, 11, -152,214, 26, 66,192, 89,125, 64, 98, 83, 81, 51, 84, 65, 32, 81,233, 3, 23, 53, 38, 48,163, 42, 2, 86, 20,185,170,204,104, 87, -223, 58, 16, 50, 5, 98, 53, 13, 33,204,132, 16,106, 4,120, 66, 41,102,232,133,179,254,155,225,102,227, 84, 96,106, 21,172,126, -234,161,145,128,198,192,165, 0, 40,136,148, 38,103,122,115,182, 59, 14,169, 49, 19, 68, 53, 56,106,194,209, 54,102,222,227,201, -164, 76, 92,109, 38,250, 50,204,210,100,107,229, 16, 53, 98,246,202,181,128,220,113, 90, 75, 70, 3, 66,176,106,238,170, 79, 93, -170,181,186,202, 31,136, 82,164, 81,102,212, 19,179, 25, 4,162,224,172,121, 98, 36, 6, 19,103, 57,240, 76,140, 34, 0, 80, 84, -242,165, 50, 34, 24, 3,180,194, 59,166,152, 82,169,153,145,186, 46, 96,235, 33,108,118,108,114,167,188,170, 51,143, 3, 49, 26, - 98, 64, 82,183, 92,205,104,251,249, 64,245, 39, 95, 91, 89, 13,147,191, 97,173, 32, 50,130, 6,240, 96,143,182, 68,156, 19, 6, - 65,179,216,130, 76,138,136, 10, 51,199, 24,171,106, 85, 37, 52, 84,117,127, 18, 82, 19, 49, 28,179, 37,109,249, 55, 7, 42, 20, -204, 26, 86,104, 61, 77,139,190, 35,255,249,160,129,195, 36,226, 60,122, 68, 70,175,112,143,132, 2,102, 86, 74,157,114, 65,201, - 70, 68,200,155, 91, 27, 59, 59,155, 79,223,184,246,121,198, 42,186,154,244,240,248,120, 92,173, 30, 62, 58,216, 61, 56,124,184, -123,120,120,124,112,247,116, 92,151,194, 28,250,174, 95, 14,105,115,185,185, 92, 14,203, 97,232, 82, 26,186,126, 88, 44, 83, 23, -134,197,208,117,203,174, 31, 82,215, 19,112, 23, 40,198,222, 44, 33, 80,222,220,200,185,104,149, 42, 53,151,188, 42,197,106,182, - 73,188, 27, 9, 76, 99, 0,174, 26,216,156,253, 82, 77,212,239,106,106, 82, 13, 9,204,212,241,224,161,225,109,204, 92,196,161, - 48,135, 19,218,150,135,156,216,212, 40,187, 13, 97,102,115,183,121, 75, 91,180, 80,107, 35,103,122, 95, 65,107,197, 85, 85,106, - 0,119,100, 50,177,138,192,134,128, 76, 86,107, 3,190,123, 45, 57,147, 67,225,103,224, 59, 48, 49,199,244,198, 15,255,234,225, -131,135,175,254,212,207,116,137, 75,206,134, 4,218,172,198, 51,163,222,121,109, 94, 83, 9, 16, 9, 74,213, 42,166,128,236, 55, - 53, 5,179, 92,234,203,159,249,201,255,242,239, 62,252,135,255,235,255,177,151,243,206,114, 25,136, 33,132,251, 15, 31, 28, 30, - 94,255,249,159,121,245, 15,254,236, 59,255,207, 55,190,251,219,127,239,179, 55,159,186, 89,242,180, 62, 57,122,112,247,246, 91, -111,188,245,246,157,219,143, 14,247, 9,249,151,190,252,133,159,253,210, 79,132,190, 91,229, 2, 10,196, 13,209, 0, 72, 14,154, - 55,228,213,122,146, 42,121,202, 76, 52,230, 60,149,186,189,177, 65,132, 32, 16, 34, 35, 50,135,200,132, 69,106,140,158, 20,176, - 0,160,162,185, 22,239, 30, 34,140,162,121, 44,117,171, 27, 86,148, 25, 81,213,204,180,245,225, 26, 30, 28,175, 78,115,174,213, -140,180,170, 33,240,162, 15, 42, 98,104, 96, 45, 36, 76,140, 41, 5, 50,189,114,241, 2,160,173, 78, 78,239,222,223,253,224,225, -195, 90,100,125,186,218,220,222,222,220,218, 58, 58,216, 39, 38, 66, 82,163,148,250,147,253,131, 11,231,207, 1,234,133, 75,231, -190,246,157,191,202, 37, 39, 76,171,213,233, 98,177, 17, 13, 5,117,107, 99,235,250,213,171,111,220,126, 39,105, 96,228,162,182, - 96,142,172,155,195, 32, 85,214,182,134, 92, 2, 71, 23,185,167,169,174,171,228,154,137, 8,148,137, 25, 9,173,162,129, 21, 81, - 50,237, 82, 44,103, 45,155, 33, 0,179,167, 90,154,195,198,140, 0, 2,250, 35,230,101,155, 85, 13,163,202, 76, 59,106,253,212, - 4,216, 78, 46, 70,111,148,103, 38, 66, 96,130, 82,220, 52, 66,190, 51,114, 54,125, 96,170,185, 84,151, 4, 0,138, 86,107,239, - 79, 84, 21, 85, 96, 34,109, 88, 21,112,202,143,155,187,131,119,199, 49, 17,153, 20,147,128, 0, 86,165,189, 57, 12, 21,125, 49, -168,196, 13,154,128,109,131,170, 10, 4,132,104,170,226, 59,238,179,158, 3, 48, 3,106,141, 58, 0,200, 52, 3,245, 12,188,238, - 10,207,244, 42, 32, 96, 68, 4,168, 62, 14,152, 53, 24,167, 17,136,154, 25, 19,154,161,145, 67,113,153,200, 28,181,143,140, 64, -134, 14,161, 67,107,225, 82, 3,172, 32,145,189, 95,154,170,169,206,226,181, 91, 43, 9,185, 54,243,143, 74,173,104, 94, 82,224, -197, 18,138, 0, 8, 1,160,120, 12,157, 34, 17, 6, 3, 77, 49, 96, 35, 27,160,255, 10, 6,216,156, 22,136,134,216, 90, 62, 21, -152,201,204,136,141, 42,130,130, 48, 0,114,155,250,112,238, 97,199,134, 74,241,211,219,187,166,249,204, 60,237, 6, 28,192,170, - 34,136,192,192, 16, 8,218,237,133, 0, 1,188,174,143, 60,159,133,214, 66,255, 85,100, 44, 37,165,228,119, 93, 3, 80, 45,166, - 74,148, 20,129,108,182, 50, 33,129, 26, 81, 48, 80,228,132, 72, 98,130,166, 42,168,106, 80, 12, 12, 24,233,220,206, 14,157,219, -190,113,253, 18, 1, 17, 71, 83, 59, 58, 62,126,255,254,195,253,253,227,187,187,143,223,253,224,193,254,254,227, 10, 24, 57,165, - 24, 99,138,139,161, 31, 82,215,165,184, 92, 44, 22,253,176, 88, 14,169,239, 23,221,144,186, 94, 74, 9,137, 56,164,148,250,190, - 11, 68,189,225, 0,136, 62, 19,228,169,230, 60,213, 82, 4, 85, 40,173,203, 88,243, 24, 44, 7,208, 64,144, 98,240,155,165, 33, -149,170, 72,234,212, 85,212,234,163,114,245,236,164,206,205,226,205,107,131,118, 54,119,183,157,183,232, 71, 96, 27,175,121, 66, -242, 22, 56,199,251,157, 45,122,253,110,136,206,128,245,250, 52, 36,255,182, 89, 21, 0,116,220,121,195,204, 56,151,187, 29,219, - 22, 99, 87,167,252,163,255,239, 91, 99,145, 87,191,244,101,144, 92,114, 37,246, 10, 94, 7,164, 10, 48,183, 11, 41, 34, 18,113, - 8, 96,104,181,182,168,173, 3,173,213,187,132,166, 50, 78,218,117,175,124,241,103,255,171,146,255,151,127,244,187,170, 86, 16, - 82,215,125,226,169,107, 55,174, 93, 44,180,245, 83, 95,252,242,239,255,241, 87,223,124,239,157,167,110, 94,127,252,240,238,135, -119,222,251,209,235,175,127,248,240,193,106,189,190,250,196,165,223,248,165,175,124,250, 19, 47,172,214, 57,151, 2,134,134,228, - 34, 44, 48,207,105,114,116, 86,236, 48, 12,143, 15, 14, 61,107, 84,107,109,226, 77, 0, 19, 99, 34, 51,139,129, 79, 78, 87, 6, -200, 28, 74,169,216,166,249, 14, 0, 0, 32, 0, 73, 68, 65, 84, 0, 48, 78,147,136, 18,177,223,241,167,169, 78,181, 44,210,230, -209,201,236, 65,110, 62,101, 0,213,117,201, 0,166,100, 94, 86,141, 40, 7,167, 83, 21, 56,157,214,170,194, 5,121, 24, 8,105, - 53,213,141,197,242,201,107, 87, 84, 1,205, 98, 8,170, 16,152,137, 3, 32, 94,190,254,228,234,248, 88,193,136,130, 72,145, 90, - 56, 17,102,187,114,229,218,135, 31,124,120,237,252,246,237,251,123, 93,234, 8,105,202, 35,165,193, 4,250, 56, 60,251,177,103, -222,124,239,109,191,246, 91, 41,194,174,240, 88, 85, 25, 82, 55,230, 73,209,186, 20, 77,109, 28,143,195,153,255,206,107,177,154, -185,202, 26,246, 24,169, 39, 96, 14,140, 88,221, 84,219,142, 60,156, 67, 72,104, 77, 43, 55,143, 73, 80,112,182,109,243,201,105, - 59, 51,204,136,177,181, 88, 0,128, 4, 10, 85,177,212,234,187,110, 59, 11,182,146, 17, 16, 32,156, 78, 83,173,149, 40,148, 42, -162,160, 85,213,212,115, 73, 6, 90,179, 2, 96,241,230,179, 51, 72,151,106, 53, 75, 8, 0, 32,197, 28,245,104, 4,145,156, 56, - 8,129,200, 2,174, 38,149,230, 3,113, 79,112, 75,214,170, 88, 11, 95, 55, 49,209,192, 76, 92,122, 80,160,128, 8,214,165,132, -222, 44,104,138,166, 78, 71,160, 64, 10, 38,165, 26, 66,138,254,110,145,150, 65,197,136, 48,193,124,192, 25, 88, 0,102,100, 53, -160, 16,163, 89,169,238,255,116,132, 84,187, 63,185, 66,234, 83, 87,171, 53, 69, 48, 85,241,244, 92, 19,236, 17, 76, 57,250,202, - 25, 99, 74,136, 24,136, 67,160, 82, 73, 5, 20,194,153, 48,163,230, 44,115, 32, 2,164, 64,129, 61, 69,217,228, 47,194,224,134, - 74,153,243,239,238,109,132,134,229, 34,140, 38,213, 85, 51,178,118,136, 0, 96, 68, 42, 46,113, 49, 0, 2, 35,198, 20,171, 56, -218, 11,220,217,195, 78,152,117, 6,150,123,230,137,204, 76, 84,197,188,189, 22, 27,201,171, 26, 48,113, 32,132,136, 48,130,225, -184, 94, 7, 64, 41, 5, 0,106,117, 82, 10, 1,128,214, 90, 91,219,164,249,220,216,108, 38, 0, 96, 66,232,207,114,101, 10, 85, -231, 21, 40,130,138,130,175,121,167,108, 90,135,174,123,249,217,167,136,136, 3,155,192,233,106,117,255,225,222,251, 15,118,239, - 62,124,180,127,116,180, 58, 62,126, 92, 30,139, 40,133,200, 68, 49,134, 46,117, 67,223,111,110, 44,150,221,178,235,220,176,223, -245,156, 32, 82, 23, 83, 76,125,138,129, 99,136, 93, 23,227, 34, 50,149,170, 99, 30, 49, 46,214, 57,173, 78,215, 42, 50,141, 35, - 83,141,108, 93, 64, 4,101, 20,196, 8,170,193, 68, 76, 75,153, 50,167, 14, 66, 12, 68,160,234, 9, 44, 66,171,165, 58, 54,217, -119,252,168,115,105,136,175,216,231, 71,198,159, 29,155,137, 60,115, 23, 8, 50,162,168,163, 15, 0,189,165,207,188,227, 27,206, -194,132, 14, 62,155,105,242,134,104, 76, 33,245,253,189, 15,110,191,245,214, 91, 79, 92,125,242, 83,207,220,146, 90,196,129, 14, -170, 68,173,248,219, 95,203,205, 84,103,134,254,212,250, 0,230, 64, 31, 4,145,106, 90,165, 86, 51,236, 54, 54,215,171,211, 85, -169, 63,253,115,191,246,151,255,230,181,239,191,249,225,185,243,203, 47,125,230,197, 39,175,223,192,180,179,125,233,218,147, 79, -222,184,245,236,115,223,254,214, 55,191,243,205,111, 60,122,116,239,157,247,239,222,223,221, 77, 49,252,205,159,254,194, 87,190, -248,202,206,206,198,241,233,137, 9, 57, 55, 10,193,152,216, 89, 75, 51,107, 15,204, 32,231,130,102, 8, 18, 2, 29,159,172, 17, - 33, 5,114,173, 53,134,212, 26, 65, 9,203, 52, 30,156,172,159,189,114, 65,204,200,231,127, 0,118,118, 23, 82, 85, 72, 28,136, - 24, 72,207,116,198, 0, 8, 8,147, 72,171, 9,118, 78, 91,155, 78, 3, 34,104,181, 44, 85,170, 25,209, 82, 58, 2, 36,198,157, -115, 59, 0,104,104,165,214,245, 56, 10,104,169, 19, 24,108,110,109,159,191,120,241,209,131,251, 30, 37, 83, 0, 14,105, 26, 87, -177, 22,209,122,253,210,229, 49,215,199, 71,167,203,197,162,230, 98, 93, 87, 4,166, 90, 46,156,191,240,226,115, 47,253,245, 27, - 63, 52, 84,100, 38, 3,231, 65, 86, 21, 14,129,152, 83, 96, 21,157,242, 20, 83,164,166,146, 35, 18, 86, 49, 62, 51, 91, 48,197, - 64, 8,192, 68,103, 65,182,249,184,110,231, 49,205, 20,106, 36,240, 24, 53,120,220,135, 8,204,136, 49, 96,155, 70,125,211, 91, -192,203,118,168,157,100, 76, 14, 67, 7, 36, 21,209,246,242,100, 85, 37,164, 46, 6, 53,161,179,248, 44,136, 15, 46, 49, 34, 88, - 28,167,170,214,120,185,222, 17,232, 99, 10,131, 49, 48, 18,120, 86,209,237,227,103,125, 33,106, 6,140, 86, 61, 58, 2,106,202, - 4, 69, 45, 17, 89,169, 13,186, 99, 58, 0,136, 32, 35,213, 25,240,109,160,166, 22, 18,171, 97,159, 72,170, 77, 69,212, 32,250, - 90, 81,193,200, 98,136, 37,103, 49,175,254, 1,114,235,154, 9,130,183, 0, 97,196, 48, 89,241, 87,130, 33, 84,173, 0, 16,136, -196,148,137,138,202, 89, 3,179,155,233, 2, 17, 16,144,153,137,113,194, 58, 59, 74,103, 74, 9, 32,145, 26,136, 89,240,205, 37, - 81, 66,119,121, 85, 21,181, 90,205, 89,194,128,236,126,156,217, 92, 17, 40, 84, 45, 58, 85, 71,209,104,129,172, 82,212, 84, 5, -252, 4, 80,107,186, 79,187,227,152,162, 81, 96, 0, 20, 85,213, 25,170,131,138, 94, 72,171, 96,218,160,184, 72,100, 82, 35,181, - 46, 51, 19,136,145, 75, 21, 36, 12,136,168, 86,177, 38,140,110,236, 83, 80, 4, 34, 34, 0, 82,200,136, 17,220,138,225, 95, 52, -194,177,150, 15,118, 31, 46,151,155, 1, 64,212, 11,183, 81, 9,130, 97, 36,110,142, 44,152, 95, 68, 72,190,253, 50, 3,179, 36, -206,224,246,163, 76,196,237,153,173,203, 14, 99,214, 90,215,162, 0, 85,197,105,111,215,110, 92,186,113,227,178, 84, 83,173,185, -216,193,201,241,122, 53, 30,156,172,238, 62,120,252,232,224,120,255,240,228,224,240,224,246,251, 50,137,116, 33,244, 67,183, 53, - 12,155, 27,203,197,224,170, 78, 23, 99, 8, 49, 6,102, 14,188,232,135,126,177, 97,128, 76,212, 49,165,141, 1, 16, 77,151,185, -202,152,215,171, 82, 84,205,196, 8, 52,231, 26, 0,204, 36,151,105, 69, 20, 49,154, 0, 96, 96,207,163,148, 60,149, 34, 49,117, - 76,237, 64, 7,248,104, 63, 51,191,141,231,182,207,150, 92,197, 25, 85, 67, 42, 34,254, 84,139, 81, 74, 64, 51,116, 12,207,184, -144, 6,222, 60, 98,237,219,105, 10, 24,160, 27,134, 31,254,187,111, 63,184,183,251,153, 47,124,113,217, 15,165, 76, 96,103,163, -135, 11,212,216,182, 88, 8, 94, 54,227, 99,156,169,168, 6, 78,157, 81, 33, 51, 45,160, 90, 85,133, 25, 79,215,211, 56, 78,160, - 19,199,225, 79,255,244,143,150,139,254,223,127,245,147,215,111, 92,235,250,157,173,203, 31, 59,127,233, 98,223,167,163,195,195, -131,195,147, 90,243,215,190,241, 53,230,184,187,127,116,227,210,185,191,243, 27,191,120,243,230,149,170,245,100,157, 17,137, 24, -173,101, 14,128, 29,118,229,127,247, 34, 68,172,146, 93,135, 58, 30,215, 27,105, 80, 85,230,104, 64,162, 58, 78,217,192, 98, 72, - 1,153,129, 3, 7,154, 53, 6, 10,164, 34,165,100, 38, 10, 76, 10,186,158,214,196,140,136,162,232,143, 16,114,195, 52,151,156, -219,173, 8,201,180,168,168, 49, 37, 39, 22,130, 34, 32, 17,136,212,113, 66, 83,184,121,253,210,102, 63,148, 82,215, 39,171,227, -211,147,245,152,189, 7, 0,145, 21,244,226,181,235, 7, 7,251, 37,103,100,102,235,197, 86,253,162,159, 86,211,141,235, 87,111, -223,185,247,233, 23,159,255,131, 63,255,150, 72,103,160, 37,231, 16,186,117, 30,197,236, 83, 47,189,248,248,241,131, 41, 79,136, - 88,173, 34,176,136,169,104,129,106,102,145,217, 84,178, 40,163, 54,127,171, 95, 2, 29,201,224,166, 5,194,196, 92,196, 40,134, - 64, 44, 94,165,209, 50,214,200,140,115,109, 19, 8,248, 38,137, 56,132, 48, 44, 78,167,201, 27,238,213,123,190,124,186,167,217, - 97, 0,160, 34,174,126, 55, 41, 86,144, 17,144,130, 80, 83,126,128, 72, 84, 83, 74, 42, 90,165, 18, 98, 17, 53, 53,138, 92,114, - 54, 11,137, 48,144, 15,239,254, 3, 2, 59,252, 21, 77, 85,181,162,176,167,248,221,138, 43, 96,181, 86,215,137,107,153, 31, 83, -119,188,128,219, 54,212,117, 30, 60,235, 64, 37,157,131,135,136, 2, 64,168, 34,196, 84, 53,231, 76,137, 3, 98,141,142,166,116, - 29,218, 93, 83,173,198, 4, 77,149,137, 2, 4, 31,110, 24,168,168, 98,192,128, 9, 77, 92, 82,239, 98, 40, 86, 40,192,152, 91, -226,156,230,214,117,239,121,106,183,104,131, 92, 37,134, 96,106,162,106,136, 17,161,158,117,166,249,215, 85,102, 68, 55,104, 41, -234,127,156, 6,221, 57,155,230,204, 51,213,106,204,136, 74,204,158, 69, 34,100,192, 90, 74, 69,211,192, 84,154,212,210, 92,173, -170,130,236,169,224, 6,129, 48, 66,153,239,239, 98,134, 96,138, 58,167,123, 81, 77, 29,142, 26, 35, 35,133, 73,215,108,160,206, - 18,199, 96, 6,134,243,163,211,178, 83,140,128,193,160, 82, 67,219, 51, 5, 96,156,171,217, 34, 83,160, 90,167,245,233,176,181, -173,166,165, 22,241,156, 57, 0, 71,118, 51, 57, 82, 80,255, 4,125, 87,238,165, 87,218, 66,182,237, 38,137,243, 26, 66,149, 40, -168, 22, 54, 80, 3,246,175,176,137,154, 77, 83,117,170,164,243, 99,206,109, 46,207,109,111, 94, 53,125,241,249,155,166, 86,198, - 73, 21, 14, 78, 78,246, 14,143,247, 14, 79,223,252, 96,247,246, 7,119,199, 92,204, 96,209,117,219, 27,139,237,157,237,197, 98, -177,181,177, 72,169,219, 72,201, 66, 40, 89, 40,208,208, 45,150,253, 34,118,161, 11,137,200,182,151, 11,164, 64,115, 10,118,255, -232, 48, 32, 5,142,125,183, 96,138, 97,102, 63, 53, 16, 77,149, 10,103, 76,188,143, 4,148,121, 91,127, 38,208,123, 76,194, 20, -124, 17,102, 13, 18,133,102, 34,213,252,254,214, 74,100, 29,107,221,136,121, 56, 87,115,206,140, 28, 12, 93, 0,165,239,127,235, - 95, 31,174,203, 79,253,252, 47,177, 73, 41,121,246,217, 52, 20,178, 59, 56,189, 17,121,190, 36,182, 75, 48, 24,123, 66,219, 68, -181,106,169,163,138,212, 82,133,113,125,180,183,220,188,120,120,178,126,227,175,190,113,231,131, 7, 47,189,240, 50,119, 27,113, -227,252,141,167,158, 30,250,206,196, 14,246,246,238,188,251,250, 59,111,189,117,111,119,119,189,158,142,198,131, 47,253,196, 43, -127,251, 63,248,249,216,165,105,204,205,201,227,234,101,131,249, 52, 48,148, 7,186,144, 24,208, 20,132, 17, 3,194,233, 42,111, -246, 11, 51, 99, 48,102,174, 82,181, 74, 68,170, 82,198,113, 92, 46,187,144,194,208,119, 86,205, 89,176,216, 5,207,124, 84, 81, -164, 48,101,113, 67,120, 34, 12,204, 83,173,104,158,195,196,108,198,206, 92, 67,195,121,137, 7,145, 40,134,200,161,212, 98, 64, - 6, 80,205,106, 45,207, 60,117,107,216, 88,174, 78, 78,205, 96,156, 10, 18,153, 97,157, 38,151, 88,251,229,230,249,203,151,238, -221,185, 77, 72, 70,172,156,200,106,236, 4, 9, 17, 37,117,225,198,213, 75, 31, 60, 56,232, 2,155,141, 27,155,157,168,183, 63, -224, 11,207,127,252,181,215, 95,139, 68, 98, 38, 42,161,163, 72,104,170,181,212,156, 98,159, 82, 31,235,152,197,212, 85,133, 48, - 78,197, 16,196, 72,161, 32, 88,140,193,123,231,130,161,215,179, 27,217,220, 64, 11,166, 31,205,243,222, 22,108,110, 13, 33,234, - 83, 44, 34, 0, 16,217,187, 79, 3, 80, 97, 96, 53, 69, 52,247, 47, 65, 53, 0, 24, 58, 94,175, 29,100, 67,106,237,195, 52,243, - 18, 31,205,165, 50,146, 66,179, 89, 16, 97,205, 98, 10,181, 42, 16,214,102, 0, 53, 80,130, 0, 0,100,200, 77,179, 38,136, 28, - 38,169,102, 80,205, 49,123, 64, 96,196,148, 85,234,140,225, 64, 98, 85, 84, 5, 66,168, 30, 16, 65, 37,246,118, 63, 80,113,245, -160, 57, 60, 72, 9,137,220,202,222,199, 0,132, 81, 2, 40,120,236, 3,129,136,218, 77,137, 34, 69, 8, 43, 24, 21, 42, 0,145, - 53, 21, 28, 1,205,196, 29, 89,156, 8, 17,201, 24,217, 25,104,174,171, 27, 34, 51, 88, 67,187, 18,186, 94,228,146, 95,169, 10, -104,129, 88, 21, 16,244,172,202,193, 15,202,192,132, 68, 28, 88, 12,139,212,160, 54, 12,221,234,100,244,142,145,220,212,175,255, -159,170, 55,107,150, 44, 59,178,243,150,187,239,125, 34,226,198,205,155,121,115,170,156, 10, 53,163, 38, 84, 1, 40, 76,196,212, -104, 16, 96, 91, 55, 69,209, 68,170,173,141, 47, 52, 61,203,244, 38, 62,232, 63, 72,250, 29, 52,227,147, 30,245, 38,202,196, 70, - 19, 93, 93, 13,160,107,206,170,156,231,225,102,230, 29, 35,226,156,189,221, 93, 15,190, 79,100, 17,102, 48, 20,204,178,110,198, -141, 56,113,142,239,229,107,125,203, 17, 51,175, 48,156, 19,251,202, 33,153, 69, 18, 87, 77,204,139,208, 97,213,213,226,183, 98, - 18, 78,137,221, 57, 30, 73,102, 70,236, 98,158,178, 12, 85,153,201, 84, 99, 14,165,156,136, 89,221, 65,156, 19, 45,208, 59,165, -156,179,129,136, 93, 85, 89, 82, 34, 30,162,177, 72,214, 50,102,115,243,197,122, 94, 61,208,161,138, 85,163, 30,152,147, 0,243, -205, 77,181,214,176, 66,148,220, 85,184, 57, 30, 36, 73, 25, 26, 90, 7,129, 92,244, 54, 76, 58, 35,196, 81,150,216, 19, 68, 85, -153, 57,199,254,140,148, 51,145, 5,180,131,189, 1,163, 98, 24,214,224, 57, 3, 22,161, 52,115,168,147,164,196, 56,125,226,248, -185,147,219, 66,252,207, 63,128,179,220,125,178,119,231,222,131,219, 15,118,110,220,223,185,113,247,174, 87,103,145,141,141,233, -246,241,227,105, 50,233,152, 59,145,106,158, 82, 18,166,141,217,198, 36,231,141,217,100,115, 62,223,152,205, 38,147, 89, 55,155, -110,228,105, 34,114,146,220, 77, 83,179, 36,180, 41, 27, 4,116,121,234,196,156, 82, 96,180,163,127, 18, 68, 48,246,181, 65, 22, - 62, 14,245, 16,226, 81,239,244,117, 13,147, 90,205, 41,183, 14,171, 49, 19,101, 35, 3,169, 29, 5,136, 8,220,205,102,139,221, -221, 79, 62,253,211,214,201,179, 63,251,193,187,168, 67,181,214,125, 17,137, 37, 52,198, 41, 64, 9, 13,159,170,227,142,117, 60, - 35,215,106, 90,181, 68, 68, 80, 74, 45,253,176,218,220, 58, 33,179,141,175, 62,251,227,149,171, 87,230,243,205,119,222,126, 43, - 79,183,231,167, 47,158, 63,127,206,171,238, 31, 60,123,250,104,231,206,205,107,183,238,222,186,251,104,231,201,238,222, 75, 23, -206,253, 15,239,189,190, 49,223,128,164, 97, 24, 28, 78, 36, 24, 67,159,194, 29,188,140,231, 9, 30, 31, 48,213,193,101,176,162, - 74, 36, 14, 48, 83,206, 9,210, 46, 51, 38, 97,105,120, 22, 38,137, 30,175,104, 63, 51,247,148, 83,151, 82,100,207,160,230,102, -137, 64,132,148, 58,110,128,201, 96,116,234, 80, 43,195,105,140,247, 0,166,234, 41, 39, 33,105,203,166, 17,223, 5,247, 11,103, -207,104,117, 85, 61, 92, 45,158, 29, 30, 12, 90,170,150, 85,127, 4, 98, 3,216,234,169,211, 47, 60,123,252,164, 12, 71,102, 76, - 44, 44, 72,221,108,113,176,119,254,220, 11,143, 30, 63,251,206, 27,175, 93,191,253,183,132,105, 34,152, 86, 22, 81,211,156, 38, -167,183, 79, 30, 63,126,226,209,179, 93, 2, 18, 7,163, 46,248, 21,168, 85,145,189,184,119, 57, 39, 97,172,196,220,205,140, 37, - 53, 35, 91,196,134,132, 59,242,216,192, 52, 7,237,168,206, 68,233,110, 40,245,156,132,195,251, 96, 90,149,186,220,149,178,128, -251, 68, 18,179,120,172,107, 91, 21, 20,172, 42, 9,143,140, 54,129, 27, 75, 2,216, 81, 97,128, 4, 57,183,237, 0, 86, 90,226, -146,140, 28, 94, 40, 57, 81,187,193,238,165,193, 82,141, 92,140,108,132,117,113, 34,142,206,133,144, 17,132,161,230, 17,225,119, -115, 9,219,139, 69, 60,133, 93,107,243,116, 83,236, 42,139, 71, 88,219,249,185, 51,205,220,201, 0,170,102,211,148,224, 40, 67, -141, 26,135,248, 20, 19, 71, 95,139,155,170,144,120,107, 94, 72,212,218,214, 98,132,172, 49,182, 55,219, 59,143, 5,231,238,109, - 83,168, 81,231, 48,206, 82,141, 61, 76, 97,177, 45,117, 53,205,179,202,102,214, 24,159,107,168, 15, 11, 57, 59,220, 25,232,186, -108, 43,173,168, 34, 73, 93,213, 60,210, 91, 62, 26, 27, 21,222,177, 24,185, 52,230, 64, 40,187, 34,196,194,210, 91,105, 30, 22, - 52,246, 22, 83, 50,118, 2,165,196,170, 14,102,215,138,176,116,131, 0,228,204,203, 2, 87, 37, 17, 34,202,194,193, 33,111,160, -148,241, 57,148,137, 33, 32,165, 32,100,197,138,133,155, 6,177,126, 88, 89,155, 92, 71,195,118,226,148,132,167,147, 73,211,142, -198, 7, 26, 19,153, 66,136,225, 76, 41,181,208, 68,107,111,130,179,146, 91, 56, 68,188, 49, 93,157, 24, 6,141,126,191, 70,133, -129, 1, 21, 96,139,177,108,180, 26,130, 88,132, 81,188,101,140,214,116,134,118, 14,245, 10,148,170,181, 84, 16, 78,206,167,231, -190,243,198, 15,223,125,221,221, 87,125,217,121,118,240,224,201,211,199,123, 7,207,118, 15, 14, 14, 15,158, 14,195,208,247, 6, - 22, 18,136, 39,226,217,100,163,203,210, 77,186,141,217,116,115, 54,219,220,152, 59, 56,141,187,211,192,131, 71, 83, 20,218,127, - 37,246,245,110,173, 55, 30,110,193,188, 49,183,218,144, 40,129,129,104,252,188, 40,183, 39,107,118, 29,145, 4, 34,230,104, 27, -160,112, 97,173, 91, 63,220, 13,156, 4,112,184,118, 93,247,248,222,157, 47, 62,251,244,213,119,222,191,112,246,116, 93, 29, 58, -152, 36, 16,106,205,189,227,223, 64,182,160,189, 74,106, 85, 83,110, 30,152,251, 90, 93,213,180, 58,119,229,104,255,240,240,232, -248,246,201,203,159,127,252,217,167,159,178,227,149, 87, 94,218,154,111, 15,178,121,242,204,185,141,205,121,191, 90, 62,125,242, -248,209,189, 59, 15, 31,220,191,125,255,222,245,219,119, 87,253,240, 47,126,254,131, 95,255,242,135, 91, 39,142,221,186,126,227, -227, 63,126,241,193, 15,222, 42,131, 53, 90, 76,251,148,156, 99,141,220,106,137,124,108, 46,144, 58,172,170,122, 28, 46,166, 41, - 37,112, 32,108, 73, 68, 58, 73, 34,139, 97, 8,115, 65, 18, 78, 93,167,112,135, 11,183, 14,160,234, 74, 78,139, 50,144, 68,115, - 17, 70,238, 51,192,236,238,164,134,234, 30,186, 31, 27, 65, 18,103,227,160,120,154,249,248, 14, 17, 57, 44,119,249,226, 11,103, -172,106,191, 42,123, 7,135,139,197,202,106, 61, 56, 92,172,106, 69, 64, 38, 84, 39, 27, 27,167, 95, 56,127,235,250,101, 38,102, -107, 79,136,110, 54, 75, 41,159, 84,123,178,179,247,234,133, 23,110,222,223, 33, 80,191, 90,205, 55, 55,225,182, 26,150, 27,147, -217,171, 47,191,124,243,238,189,161, 95, 17,145,169,133, 63,156,152,212,145, 57,205, 39,211, 85, 63, 48,113,180,142,146,136,185, -115,123,250,143, 29,190, 20,150, 43, 86,173, 97,177, 72,180, 62, 31, 54,201,206,213,173,221,245,161,145, 16, 2, 28,232,181, 78, -168, 83, 83, 14,159,182,151,184, 2,189,154,147,153,219,114,217, 51, 39,181, 26, 55, 59, 7, 44, 88, 75, 70, 22,199,228,112,133, -135,175, 64, 13, 76,164, 16, 98,141,111,104,172,229, 3,190, 13, 30,141, 90,193, 45,176, 38,130, 51, 97,157, 26,116, 55, 11, 47, - 83,108,194, 25,236,129, 18,106,245, 61,207,149,122, 33,110,127, 47, 53, 92, 31,113,164, 9, 61, 4,237, 38,145,183,188, 97, 59, -208, 75, 78,210, 23,175, 90, 27,164,130,200, 35, 37, 5,103,225,112, 33, 55, 76,187, 97,240,106, 86,205, 61,137,176, 0,166, 6, -142, 97, 62, 35,253,183,147, 89,124, 79,133,106, 17, 35,167,102,134,135, 6,229,139,204, 2, 38,107,166,150,132,205, 34, 28,143, -234, 70,204, 26,223, 79,197, 36, 75, 39,137, 28,108, 24,180,138,208,180,235, 68,132,170,182,137,154,216,169, 17, 68,155,233,156, -131, 91, 2, 38,120,172,224,146, 4,151, 47,178,200,165, 26, 51,192,100, 80,161, 36,146, 3,213,162,238,165, 84, 17,182, 90,135, - 90, 39,153,196,186,168,129,131,147, 1,169, 81,245,137,133, 42,216,154, 1,132,114, 78,234, 70,165, 48, 75,102,153, 77, 82,150, -137,161,180,105,159,220, 65, 67,181,236,193, 45,246,117, 29,187,155, 5,172,125,172, 58,183,176, 70,121,187, 98,169,185,121,188, -117,107, 17,160,202, 36, 99,219,118,108,179, 1, 55, 37, 98,176,130, 57,162,159,209, 24, 23,184, 45, 85,196, 70, 75,178,168, 97, - 48, 95, 28, 28,181, 74, 85,248,201,173, 99, 39,143,111,182, 56,215,160,139,126, 24, 86,195,193,170, 28, 44,150,123, 71,139,103, -207, 14,158,245,253,163, 39,187, 67,237,157,132, 8,155,179,233,108, 58, 75, 80, 71, 44, 36, 90, 81,130,185,131, 56,121, 36, 9, -215,225,203,231, 12,248,248,215, 51,198,204,159,251, 55, 7,113, 49, 50,226, 64, 57,121,220,219, 91, 1, 76, 99, 40,124,131, 10, - 39, 65,165,148, 46, 79, 31,222,189,115,249,203,207,223,255,241,207,182,143,111, 14,203,165,187,147, 52,168, 60,173,253,149, 49, -253, 71, 51,141, 42,115, 6, 25, 89,112, 55, 28,174, 62, 84, 51,167,110,186, 90,173,142, 14,158,156, 62,119,238,240, 96,247,159, -254,254,111, 47, 95,191,122,102,235,212, 91,239,188, 86,117,206,243,147,103,231,155,148,120,239,217,211,197,222,222,206,206,253, -155,183,238, 92,191,117,235,206,227,135,167,142, 29,255,247,255,230,183,223,127,255,221,101,223, 31, 29, 29,157,187,120,254,225, -195, 79,191,188,114,231,237,111,191,210,175, 86, 68,225, 87,115,184,122,251,118,199,239, 69, 99, 70,197,205, 92,213,172, 22, 11, -120,136,128,136,186,196,230,106,234, 41, 65, 93, 87,125, 15,226,105,215, 5, 47, 16,166, 17,110,234, 82,231,234,149,106, 25, 52, -165, 20,143,116,115,205, 57,179,172,160, 32,167,232,175,171,106, 99,193,166,177,128,157,212, 84,128, 73,202,195,176,138,216,122, -206,221,198,100,114,226,228,246, 96, 86,108, 88,244,253,106,181,116,247,195,163,197, 48,244, 16,118,171, 76,100,240,147,103,207, -238, 60,122,176, 56,220,165, 36, 34, 89,109,200,110,253,225, 33,106, 29,250,254,187,239,124,251,112,185,122,252,244,144,133,167, -117, 34, 93, 71, 64,213,186,125,252,196,235, 47,191,252,249,151, 95,128,197, 70,108, 88,220,141,138, 41,220,212,244,112, 89, 72, -181,217, 95,198, 35, 8,183,103,116,104, 39, 68,194,174,202, 96, 87,131,140,214,234,241, 72,182,174,203, 14,221, 70, 1,114,103, -102,117, 31, 34,224,230, 22, 93, 35, 34,100, 5, 0,216, 34,196,167,146,169, 95, 90, 70, 72,131, 62, 38,126,224,160,226,102, 78, -234, 72, 85,205,181,170,138,136, 65,157, 73,139, 69, 19,155,193,205, 33,241,100,136, 9, 16,225,239, 70,137,192, 14,168,227, 4, - 70, 41,203,112,213, 43,197, 60, 26,105,108, 25,123,148, 67,211, 11,253,146,147, 72,220, 77,130,139,204,241, 92, 36, 99, 73,234, -214,187,103, 17, 50, 3,145,186, 39, 34,102,104, 4,130, 56,177, 88,116,243,176, 19, 17,117,146,122, 45,205, 97,144,147,215, 26, -241, 31, 48,151, 90,153, 60, 17, 57,161, 87, 21,146, 44, 66, 65,225, 2,216,226,221,143, 22,209,216,104,144, 19, 33, 5, 83,172, -117, 61,113,188, 5,164,148,114, 98,138,178,139, 8,160,169, 27, 44, 70, 14,143, 2,103, 18,102, 17, 2, 23,211, 97, 40,155, 27, -179,148, 68,213, 98, 81,101, 96,137,158,224, 56,114,162, 37, 39, 55,186, 92,212,122,162,106, 72,205,169,174,227, 25,148,225,128, -198,128,196, 65, 78,176,102,226, 52,133,103,150, 65, 28,165,134,103,193,171,115,107, 29, 85,162, 4, 39,119, 99, 39,103, 39,181, -212, 90, 87,184, 20, 35, 32,132, 33, 80,231,228,230,158,132,188,182,195,157, 48, 80,189,245,137,182, 38, 67,135, 86, 72,138,150, -212, 22,211, 51,119,138,169, 6, 48, 99, 38, 85, 3, 57,106,108,216, 41,156,114,241, 24,107,193, 82, 18,181, 26,184,166, 56,240, - 90,147,232, 98, 90, 11,126, 15,204, 27,220,197, 0,142, 98, 26, 2,131, 53,140, 65,145, 80,118,234, 38,211,233,198,198,166,234, -133, 49, 97, 90,107,173,125, 89,148,242,120,239,232,254,195,157, 7,187,123, 79,246, 14, 18, 90, 44,185,225,250,198, 65,163, 70, - 8,194,219,208,234,227,217,165,117, 51, 68,235, 59, 70,232,204, 88, 26,224, 30,141,151,129,255, 91, 23, 66,137, 68,241, 31,214, -124, 45,180, 19,139, 8,231, 60,185,241,213,103, 55,111,222,249,224, 39, 63,155,111, 76, 86,203, 37, 26,194,220,104,100,218,211, - 56,151,182,225,175, 77, 25,161,132, 59, 76,221,173,214, 58,217, 56, 70,101,216,127,246,116,107,251, 36, 76,111, 93,249,242,211, -207, 62, 86,245,239,191,253,206,201, 83, 47, 44, 52,231,227, 39,230,147,233, 80,250,163, 39,187, 15, 31,222,125,252,232,209,253, - 71,143,174,223,186,179,191, 60,250,209,119,222,252,183,127,249,155, 83,167, 79, 44,142, 86, 22,189,222,206, 63,248,225,247, 62, -250,240,143,215,110,164, 87, 95, 58,191, 90, 13,204, 45, 93, 23,247,153,150,176,140,254, 64, 78, 44,210,215,162,170,221,108, 66, - 12,117,101,161, 32,216,170,133, 61, 38,101, 22,144, 9, 97,112, 15,186, 24,152,156, 56,119,157, 12,131, 90,212, 68,147, 36, 17, - 65, 32,141, 96,166,129,196, 38, 88,235,210,108,121, 40, 7, 75, 74, 90, 45,229,142,133,195,136, 40, 20, 91, 14,156,222,222,222, -152,205,181,244,165, 95, 45,142,142,142, 86, 75,115,148, 90,135,213, 2, 90, 35,179, 0,213,212,229,139, 47,190,116,229,242, 17, - 97,112, 51,225,132,228, 52, 63,102,176,151, 95,123,105,239,217,238,107, 47, 93,120,182,127, 25,240,161,234, 76,162,202,206, 88, -186, 55, 94,125,237,241,206,163,123,143,118,178, 68,123,154,207,114,118,226,162,101, 53,212,131,163, 85, 22, 73, 89, 4, 88,149, -194, 96,107,250,136,183,222, 33,196,232, 54,214, 62,198,138, 74,130,138, 55,206,188,110, 14, 22, 38, 53, 23, 70, 34, 82,213, 64, -197, 48,139,185, 69, 81, 55, 19,171, 18,204,133, 72,217, 21,173,143, 62,137, 84,173, 99,225,111,220,109, 21, 70,226, 94,221, 93, -173, 84,101, 80, 78,169,170,198, 25, 76, 53,110, 95, 13,119, 74, 99,248, 62, 32, 10, 68, 49,192,106,172,187, 67, 36, 39,225, 82, -135,120, 32,169, 58,177, 50, 37,114,144,197, 18,120, 13,210,118,119, 87, 55, 6, 4, 82,195,122, 16,213, 46,224, 82,251, 36, 82, -213, 19, 73,107,188,102,192,189,148, 10,145,240, 40, 39, 22, 77, 6, 2, 75, 52, 50,133, 48,101, 76,168,253, 0,184, 68,226, 21, -136,244,150,129, 86,101,197, 96, 13, 16, 70, 2,147,184, 7,210, 43, 42,127,157, 2,180,201, 60,110, 53, 97,113,191,166,177,204, -219,201, 16, 79, 58,234, 68,224,232, 75,169, 35, 79, 57, 54,139,110,206, 78,125,173,194,100,102,102, 54,168,234,106, 53,155, 76, - 82, 72,203, 32,107,232,155,134,248,111,199, 10,245, 82,181, 20,131, 57,101,160, 18,152,146, 48, 19,151,161,119, 55, 99, 35, 48, - 19, 27, 97, 53, 12,113, 18, 72,146, 72,164, 10,160,224,196,196, 81, 83,134, 74,206,141,236, 19, 68,204,182,225, 53, 38, 6, 69, -122,182, 77,218,194, 36, 66,156,152, 27, 26,165,225, 89,162, 90,135, 24,170, 52,242,233,192,108, 30,245, 91, 12, 82,144, 4, 88, -185,193, 52, 98, 23, 89,157,226, 66,148,228,225, 17, 18,114,243, 48,132, 52, 9,203, 45, 17,177,112, 29, 44,250,198,204,205,205, -198,128, 35,185,179,250, 96,218,152, 21, 12,114, 36, 18, 37,136,185, 69, 17, 6,129, 59,150, 98,106,238, 90,148, 48, 54,205, 0, - 12,246,156, 55,114,247,234,124,243,141, 75,231,132,253,201,179,189, 20,157,168, 99,124,188,173, 73,131,205,177,230, 61,133, 35, -160,177,105,209, 56, 97,161,121,183,251,219,250,224, 29,118,199, 17,119, 57,186,107,108,221,187,205,107, 28, 20, 33, 73, 34,179, -127,250,240,239,212,233, 39,191,250,117,162, 90,106,109,211, 58,161,157, 95,125,124, 28,122, 52,139,175, 73,232,110, 94, 89,178, -153,219, 80, 28, 62,221, 60,126,184,183,211, 15,122,234,133,115, 55,190,250,236,235,203, 95, 62,219,221,191,112,254,244,171, 47, -191, 90,124,186,192,100,126,252,184, 36, 62, 58,216,219,125,182,243,240,254,221, 43,215,175,222,188,123,127,239,240,232,228,246, -177,191,254,243, 95,255,217,143,191, 71,204, 71,203,101, 91, 36,139,152, 89, 5,253,224, 7,223,253,232,163, 63,205, 38,211,115, - 47,156,234,135,158, 71, 31, 8, 92, 67,252,141, 10, 65,195, 64, 62, 29, 22,139, 82,106,158,162,203, 73, 72, 84,157, 68, 70, 28, -131, 11,177,170,169, 34,177,164,212,113,138, 28,129, 0,230,205,247, 6, 2, 51,249,217,227,199,159,196, 31,133, 17,132, 65,117, -100, 10, 70, 96,143, 65, 14,102, 84, 56,134, 50,100,233,158,115,178,195,143, 88,235,185,179,103,166,147,201, 98,113, 84,170, 22, -179,246, 68, 53, 12,171,190,133,136,220,195, 25,121,236,244,169, 99,143,182, 15,158, 62,138, 49,137, 89,104,130,220,119, 50,233, - 86,165,136,251,249, 83, 39,239, 62,221,155,104, 5, 77,213,148,132,203, 80, 54, 38, 27,239,189,243,246,163,157,191,235, 75, 73, - 36,238, 38,146,138,233,193,225,106,169,213, 96, 12, 38,184,132,232, 24,164,136,198, 87, 48, 70, 50,176,155, 11,163,196,109, 62, - 5,237,207,153, 90,247, 1, 8, 66,162,120, 94,229, 27,174, 24,237, 7,176,140, 17, 33, 50, 51,167,176,119, 53,147, 73,124, 38, - 14, 53, 51, 85,181, 64, 52,162,237,106,170,185,174,145,135, 68,106,110,230,213,145,216, 97, 13,172,235,102, 14, 13,198,141, 5, -140,123,188,238,205, 43,121,192,111,224,166, 69, 77,171,145, 51, 71,225, 28,122, 2,135,203, 79,185,121,134, 89,216,107,192,145, - 45,145,100,176,142,191, 39,145,169, 55, 48, 75,184, 66,181,233, 21,193, 16, 15,186, 55,141,211,100,107,121,106,137, 39,118,213, -232,122, 99, 45,131,228, 76, 36, 93,206,181,148,161, 12, 57, 9,185, 39, 66,216,248,172,145,255, 80,204,121, 76,166,131,160,176, -230,126, 80, 85,215, 20,100, 46, 15,115, 51,198, 81,198, 5, 82, 98,231, 64, 66,181,192, 77,152,216,159,211,221,130,199, 89,172, -116, 50,237,203,146,103, 83, 38, 74, 68, 6, 90,244,133,225, 76,168, 14,141,133, 0, 36, 46,197, 52,225,229, 96,230, 70,237,118, -166,238, 98,238, 67, 45,173, 38,142,152,137, 50,101, 99,147,200,166, 18,153,122,146, 54, 82, 85, 31,220,205,201, 56,156,184,141, -139,236, 10,152, 71,141,153,143, 87, 19,155, 25,133,150, 85, 7, 90, 91, 73, 44,192,213, 81,108, 14,102, 78, 45,196, 10,107,174, - 71, 18, 18,173,145,110, 78, 68, 84,213, 27, 0,145,156,199,126,218,246, 78,173,185, 7,102,161,103, 71, 31,123, 72,243,230,234, - 10, 14, 31,170, 61,223, 52,196, 73,218,161, 68, 9, 92, 27, 12,210, 52,128, 19, 68, 70,138, 96,246, 16,160,176,176,134,163, 90, - 29, 25,240, 50,206, 48,106,166, 17, 22, 17, 81,153,164,134,248, 12,118,188,175, 69,230, 17, 73,228,205,107,110, 8, 34,118,112, - 43,219,124,219, 10, 99,125,157, 45,105, 46,118,144,196, 32,234, 17, 57, 27,227,225,163,158,204,128,117, 93,167, 58,252,225, 15, -191,159,109,110,127,255,253,239,247,253,162,214, 16, 31, 99, 87, 18, 81,169, 56,202, 39,106,239,201,154,122, 68,112,168,169,105, - 53,195,108, 99,243,233,195,219, 7, 71,139,205,141, 73, 95,151,159,124,248, 95, 46, 95,254,154, 36,189,251,206,183,207,156,190, -176,223,115, 55,217, 60, 62,157, 86, 29,118,159, 62,125,120,251,198,245,235,183,174,220,189,249,120,231, 89,238,242, 47,126,244, -221,191,252,213,143,182, 79,110,247,189,161, 88, 11,129,132,222, 66,174, 94,193,249,237,183, 95,255,248,147,171,179,141,141,173, -121, 55, 74, 35,209,158,194,163, 77,138, 0,225,196,165, 84, 53,148,213, 80, 6, 83, 87, 87, 55, 7,167,132,161,118, 34,105, 84, - 31,132,169,237, 1,153,136, 90,101,139,170,171, 85,103,203,156,143,109, 30,219,121,250, 12,142, 90,171, 65,213, 21, 1, 59, 29, - 27,233,226, 28, 49,230,207, 40,113,138,111, 62,183,142,119,118,167,111, 93, 56,207, 44,110,182,234,251,163, 69,239,196,253,106, - 24,220, 86,203,195,248, 1,238, 10, 22, 84, 37,194,249,139, 47, 46, 15,246, 85,123,212, 10,144,112,202,211,217,226,232,232,149, - 87, 95,185,113,229,234, 59, 91, 91,119,126,247,225, 80,250,213,144,187,148,171,170, 8,145,235,241,173,147,175,189,252,210,245, -219,119, 74, 29,230,147,105,117, 95, 14,195, 80, 85,198, 61, 9, 49, 85,120,102,170,234,132,132, 38,134,135, 2,209,114,228, 13, -240, 64,220, 56,232, 60, 62,214, 73, 8,222,171,166,196, 24, 87,154, 22,193, 66, 55,109, 23,100, 12,230, 34,108,230,206,204, 2, - 6,131, 69,106, 52, 94, 82,171,131,140, 43, 84,213,186,204,110, 94, 75, 53,130,122, 13, 21, 40,160,121,181, 68,205,173,155,185, - 69,110,155,192, 0, 73, 34,211,200, 94, 0, 68,210,202,199, 84, 24,197,136,148,156, 76, 98, 8,150,181,235, 37,104,223, 22,192, -222,145, 7,194, 68,225, 6,141,144,103,141,142,107,120, 78, 50,146,249,140,192,230,198,180,214, 67,161, 14, 97,104,141,253, 59, -136, 41,139,196,205, 75, 36, 17,220,132,204, 61,115,156, 42, 60, 44,144, 1, 76, 83,212, 16,188, 77, 53,208,208, 2,169, 84, 91, -218, 16,194,240, 32,197,213,234, 4, 19,130,186, 27,140, 73, 64, 36,137, 59, 38,176,193,172,148, 26,102,167,152, 7,171,147,251, - 56,248, 67, 51, 52,242,226,156, 82, 24,158, 37,177,144,184, 85, 85,139, 35, 44, 12, 68,198,109,123, 97, 81,222, 29,226, 92, 20, - 90,196, 17,202, 34, 27, 54,202,116, 74, 38, 49,164,171, 3, 16,145, 86,119,193, 60,122,162,218, 79,140,188, 37,152,217, 80,199, -252, 85, 72,246, 76,166,174,100, 72,204, 12, 33, 98, 78, 49, 76,146,187, 83, 18, 42,198,194,173,255, 14,240,118,142,105,137, 75, - 78,100,181, 53,105, 50, 89, 76, 72,174,174,180, 22, 62, 34,140, 97, 49,143,140,124,150,177, 58,187,121,131, 25,238,141, 85,228, -186,110, 97, 85,115, 85, 99, 73,102,149, 25, 26,198, 95,132, 76,193, 22,165,243,110, 65,250,245, 54, 80, 58,152,204,226, 5, 73, -252,157, 17,132,132,187,162, 21,249, 38,127,238,119,180,150, 58,107,104,232,214,235,215, 84,102, 27, 33,146, 77,137, 39, 31, 27, - 26, 49, 62,195,137,216,201,128,248,188,226,201,164,227,105,217,215,244, 2,118,234,166,179,253,167,143,255,233,143,255,120,254, - 91,175,191,242,202, 75,171,126,209,176, 98,112, 55, 29,251,100, 70, 90,153,141,176,255,181, 32,102,102,165,212,170,211,205,173, -163,189, 39,117, 40,211, 99,219,168,245,225,189,219, 87,190,254,122,119,247,224,226,197,243, 47,191,244,178,210,124,169,211,205, -205, 41, 51, 47,143,246,158, 62,125,112,235,218,141,203,215,191,190,123,255,241,170,232,247,191,243,230,111,127,241,163, 23,207, -159, 53,194,114,217, 7, 21, 11,141, 99, 31,183, 63,115,114,213, 97,126,252,248, 91,111,190,248,233,103,159,253,240,131,247, 51, -139,194,104, 92,157,132,185, 37,144, 61, 14, 12, 67, 5,211,160, 37, 39, 97, 80,113, 99, 2,136,139,105,244,102,177, 41, 17, 39, - 73, 41, 65,146,136, 68,115,131, 84,143,181, 30,149,162,179, 99,115,134,169, 27, 9,139,123,146, 4,162, 9,139,155,246,165,228, -201, 52,164,141, 52,198, 99, 36, 73,215,229,170,181,154, 18, 92,162,217,130,232,220,185, 51, 65,134, 61, 58, 90, 30, 46,143,114, - 78, 7,187, 7, 76, 88, 46,163, 21,172, 62,175,150, 96,108,110, 29,223, 62,121,246,241,206,125,138,180,159,123,206,194, 68, 58, - 12,147,217,236,196,214,137, 55, 94,190,244,229,213,187, 93,234,166,147,169, 85,115, 82,131, 39,202,111,190,254,234,253, 71,143, -118, 15,246, 99,201, 11, 18, 98, 34,130, 40, 1,161,131,216, 56,224,180, 41,166, 93,236,238, 45,148,219,100,152, 22,136, 94,231, -153,219,246,101,141,192,104,176, 77, 12,117,152,118, 73, 40,244,153,112,243,170,153,243, 40,216,195, 33,113,125, 54, 48,158,134, -235, 82, 66, 91,168, 77,126, 38,152,154,119, 34, 86, 6,211,154, 82, 46, 90,171,195,220,149,204,149,140, 91,246,211, 84,153,136, -147,112, 78,172, 1,132, 33, 38,238,136, 43,179, 26,132, 57, 11, 86,225,165, 36, 38,167, 90,213,160,132,232,118,136,209,143, 71, -115, 71, 67,174,130, 71,119,121,124, 5, 83,142, 21, 91,169, 86,107, 73,221, 4, 68, 41,172,129, 49,225, 50,151, 90,162, 25, 53, - 8, 78, 18, 53, 45, 73, 58,164, 82,213, 17,157, 63, 60,201, 19, 35,243, 98, 70,205,235,102, 64, 23,216, 86, 97,144,193, 73,205, -132,192, 2,150, 68, 76,196,173,158, 45,108, 12,238,177, 9,142,151,202, 81,165, 91,181,192,188,122, 37,112, 78,212,151,202, 48, - 24, 3,158, 89,136, 56,167, 20, 29, 29, 32,207,194,196, 73, 77,153,196,220, 13,206,145, 79,181, 6, 33,104,212,108,120, 2, 27, - 67, 88,160,181, 17,205, 56,190, 17,163,106, 71,224,148,152,217, 66,144,200,162, 0, 0, 32, 0, 73, 68, 65, 84,220, 66,219,213, - 90,219, 46,179,221, 10, 69,214,102, 11,196,237, 3,236,144,240,249, 17,160,198, 93, 98,206, 76, 52,208,128,145, 29, 97,225, 12, - 52,203, 19, 68,213, 45, 0, 85,175,165,130,200,181, 58,165, 81, 23,126, 46, 20, 51,145,122,195,165, 53,237,162, 53, 34,182,142, -145,248,156, 99, 92,143, 49,199, 92, 91, 80,200,212, 13,141,108, 48,218,106,162,113,222,227,193, 26,141,120,136,186,143,224, 31, -143, 12,223,248,213, 26, 14,126,244,168, 51,135,113,121,189, 68, 13, 93, 74,136, 65,156,154,198, 98, 70,156,218,192,238, 80,117, -138,186,133,216,114,217,200,123, 88, 15, 21,227,242, 8, 13,188,214, 14,198, 81,113, 54,174, 72,194,218,104, 97, 41, 24, 53, 85, -155,204,102, 79, 30,220,255,167, 79, 62,126,239,251, 63, 57,181,125,124, 24, 22,214,248, 2,172,181,140,139, 84,105,223,236,113, -119, 9,111, 96,123, 51,213,170, 68,233,216,169, 19,207,158,236, 16,229, 19,103,207,220,185,246,213,221,107,215,190,186,122, 53, -117,147, 31,125,239,189,110, 99,123,229,211,233,100,115,150,187, 94,251,253,103, 59,143, 30,220,254,242,242,151,215,110,222,190, -255,116,111,123,235,248,255,244,223,255,226,187,239,190, 73,137, 87,165,114,108, 8,220,137, 18,154,111, 34,124, 28, 18,106, 97, - 25,202,246,233, 51,111,152,254,195, 71,159,254,252,167,223, 35,101,138,146, 2, 50,142,141, 84,235, 97, 96,131, 2, 88,245,131, - 8,107,144,234, 68, 82, 10,159, 8,139,112, 55,153, 76,114,166,204,172,110, 85,225,168, 69,187,220,185, 19, 49,171,250,238,193, -209,246,137, 83, 28,204, 25, 96, 50,155,166,184,114,217, 86,165,152,155,120,163, 23, 54, 15, 36, 19,152, 50,133,248, 30, 3, 12, -155,249,201,227, 91,231, 79,158, 81, 83,119, 63, 56, 58, 90,244,131, 27, 14, 86, 75, 48,245,203, 37, 12, 68,185,173,173,153, 96, -160,140,243, 47,189,180,191,187,211,219, 42,228, 0,115,158,206,231, 71,251,251,201,116,103,103,231,131,247,222,187,115,251,225, -106,181,146,148,167,211,169,170,133,235,115,235,216,246,155,175,191,254,240,233,211,190, 84, 16, 79, 18, 18, 72, 64,149,108, 13, -123, 53,179, 44, 92,204,215,163, 65,104,126,125, 89, 33,117,220, 12,118,235, 8,100,152,140, 65, 32,139,105,124,228, 79, 55,204, -161,195,129,106, 37,214,140,230, 38, 20,181,121,163,209,114,204,223,235, 24,166, 51, 64,200,195, 60,105,166,110, 97,140, 4,171, - 57, 27, 59,226,156,107, 17,160,244,120,205, 78, 77,164, 32, 73, 66,176, 44, 98, 85, 53, 12,141, 66, 76,158,133,147, 37, 97,150, - 68, 66,137,105, 96, 6, 9,231, 73,210,162,195,208, 14,183,173, 49,173,173,184,252, 57, 56,201,209,106,199, 29, 85, 33, 24, 8, - 28,173,234, 52, 62,223,168, 33,107,188,154, 54, 26,157,163, 26,152,168, 75,185,116, 98,213, 77,145, 37, 81, 99, 99, 54,107, 41, - 57,155,215,181, 61, 29,132,201,164, 19,192, 60, 6, 91,143, 67,147,185, 10,231,204,124,160, 22,132,203, 54,123, 58,152,201,212, - 57,232, 56, 6, 78, 4, 99,181, 18, 56,192,208,141,218,126, 66, 97,166, 48, 73, 99,139,116, 6,131,184,212, 2, 80,228, 75, 61, -120, 12, 54,178,245,195,237,107,174,230, 48,103, 97, 2, 21,160,107,119,232, 86,110,197,225,195,144,156,136, 1,138,247,223,160, - 93,234,180,138,214, 26,160, 31, 78, 13,112,155,226,135,127,131,229,201,205,201,200, 41,137,140,221,214,204, 68, 81, 5, 67, 92, -106,209, 90,146,204,145,152,220, 44,248, 42, 18,142,117,105, 4,195,102,116, 1, 73,220,141, 67,169,226,181,193, 70,213,192, 96, -136,121,187, 89,133,168, 72, 78,193,169,104, 95,207,102, 66, 71, 14,164, 68,251, 99, 6,114, 8,143,157,209,112,212,209,120,221, -250, 44,225,102, 22,221, 77,173,170,138,217, 93, 33, 13,224,193,230, 22,240,160,209,146, 18, 2, 44,165,216, 26, 56,137,143,172, -118,119,231,180, 86,185, 67, 80,178,245, 43,107,243,126,251,195,207, 99,172, 45, 55,248, 60,173,180,126, 0, 16,141,180,106, 6, -165,212,221,191,121,251,243, 47,191,252,224,167,191,220,158, 79, 87,253, 82, 13, 94,122, 18,166, 44, 45, 24,213,224,121,161,142, -197, 73,169,173,118,221, 76,205, 69,210, 98,209,175,250,199,171,195,195,249,214,214,199,191,255,255,174,126,125,229,233,254,193, -203,223,122,241,253,119,222, 90,233,188, 71, 55,155, 79, 97,182,191,255,100,247,233,206,221, 59,215,191,188,114,245,198,157,251, -230,254,163,239,189,249, 55,127,241,235,237,211,219,139,101,239, 69,163, 50, 13, 32, 55, 5, 85, 68,203, 15,113,140, 56,110, 97, - 48, 32, 45,229,133,115,231, 9,242,249, 23,215,223,123,255,173, 90,170,187, 58, 68, 85,193, 76, 77,187,243,190,239,235, 80, 15, - 23, 75, 22,202,194,102, 10, 34, 45,133,157, 5,156, 82, 78,194, 57, 39,113, 74, 44, 66,148, 51,167, 20,223, 89, 19,230,161, 14, -238, 56, 54,159,166, 46, 39,102,119, 63, 88, 28,205,143, 29, 15,243, 70,173,189, 89,116, 40,145, 8, 20,106,214,212,141,170,214, - 77,186, 56, 73, 5,239,246,133,211,219, 39,182,183, 8, 82,139, 29, 45, 86, 67,169, 6, 95,173,122,166,116,120,116,216,142, 68, -107,111, 44, 96,213, 38, 27,211,147,167,206, 63,120,112,139,132,181, 12, 32, 97,241,233,198,198,230,230,252,233,238,190, 91,125, -243,181, 75,159, 95,187, 51, 44, 23, 93, 11, 52,164,206, 25,134,151, 46,190,248,218,139,119,175,221,185, 39,240, 96, 77, 27,161, -130,162,208,122,146,243,192, 84,181,105, 11, 10,196,206,153, 65, 86,169,184,130,220,205, 25, 12, 4,144,160, 65,106,131,110,161, -230,235, 78, 9,139, 51, 45, 19, 83, 56,148,189,201, 27,140,214, 75,217,206,151, 86,125, 36,164, 58,188,169,147,128, 33, 73,231, -228,174,131, 11, 7,121, 81,107,105,102,201,214, 29,105,197,149, 41, 44,191,209,138,225,102,232, 70,171, 98,141,158, 12, 2,105, -184, 29, 52,119,157,153,182,226,235, 8,171, 54,128, 73,164,247,155,229,171,157,135,163, 37, 47,228,213,184,223,131,195,169, 96, -109, 82,176,168,180,139,120, 32,165, 96,201, 11,108,164, 63, 34, 46, 88,148,136, 73, 17, 6, 55,120, 13, 22, 86, 60,240, 70,108, - 27,106,173,213,109,189,114,175, 6,167,176, 45, 68,245, 29, 79, 37,171, 99,213, 87,243,234, 13,199,108,109,125,102, 46,210,170, -163, 8, 12,171,112,239, 18, 15,149,187,110, 18, 63,222,219,121, 30,236,236,160,170, 72,112,114,174,240, 68,158, 57,171,219,193, -209,162,150,154,208, 66, 6,222,150, 68,113,132, 52,134, 35, 5, 77, 22, 41,222, 32, 98,152,129, 91,181,185,183,112,172,106, 45, -213,163,136,213, 57, 65,213, 71,201,167,181, 94, 49,129,153,131,208, 0,131,248, 55,115, 90,237, 31, 26,233, 63, 58,128, 34,174, - 96,174, 90, 35,141,233, 24, 61,237,102,196, 45,109,187,142,242, 16,147,169, 66,162,242,176,185,163,199,167, 7,135,226,210,182, - 90,237, 62, 70,102,197,193,241,150,186, 19,181,155,248,168,104,147,123, 85,192, 73,164,193,114,227,173,113,113, 51,150, 56,236, -198, 53,194,113,222, 30,221,104,141,240,195, 4, 35,118, 53, 33, 82,131, 71,178,155,226,193, 12,134,166,245,106,191, 21,172,240, -216,104,187,190, 69,143,229, 43, 88,255, 60, 64,173,186, 26,113,147,227,215, 4,206,160,116,198,101,238,205,204, 24, 36, 60, 19, -226,148,228,202,231,159, 62,122,178,251,253,159,252,108,107,115,186, 90, 46,135, 97, 81,135,149,105, 24, 65,114,202,147,198, 49, -227, 96, 10, 27, 49,220,162,197,196,188, 42, 37, 89, 45,150,169,155, 88, 61, 98,153,192,235,199, 31,254,221,181,155,183,182,182, -182,126,241,147, 31,110,109,159,219, 43, 44,105,186, 49,155, 14,203,163,253,221,167,143, 30,221,185,122,253,198,181,155,183, 30, - 63,125,118,225,252, 11,127,245,203, 31,127,240,222,183, 13,124,112,180, 28,143, 39,207,211,179, 49,194,181, 80, 97,156,245, 70, -143,187,129, 74,209,179,231,206,238,238, 30,126,242,249, 87,223,125,231,205,161,244,238, 26,254,141,144, 94, 88,120,185,236, 35, -232,156,152,115, 98, 22,105,168, 16,241, 10, 77,137, 67,196, 42, 94,153,153, 37,149,210,154,127, 28,166, 90, 22, 61, 12,206, 44, -147,220, 77,186, 48,140, 81, 72, 61,213,188, 20,207, 41, 9, 51, 84,173,201,136,198, 68, 93,234, 34,112,191, 38, 55, 17,209,203, - 23, 47, 77, 38, 83,117, 43,170,135,139, 5, 59, 45,151,171, 82,134, 46,243,222,193, 2,238,100, 8,144,142, 55, 22, 39, 89,213, - 23, 94,250,214,193,222,147,197,226, 48, 26, 51, 64,153, 58,148, 50,204,230,211,251,183,238, 93, 56,123,246,201,238,225,253,103, - 7, 93,237, 39, 41, 87,213, 78,140, 56,119,221,228,221, 55,223,190,251,112,103, 40, 3, 17,169,150, 73,202,188,126,234, 7,242, - 59,132,181,150,237, 9, 93, 18,131, 14, 98, 41,103,161, 49,120, 17,192,145,214,217,218, 96, 6, 35,209,104, 36,153,167, 40,250, - 52,107, 62, 56, 49, 73, 19, 43, 53, 34, 57,110,110,110,209,105, 23, 31,159, 16, 25,195,157,106, 68,178, 9,139,126,213,113,106, -131, 45, 19, 41, 9, 9,192, 14, 13,240,111, 88, 33,201,220,216, 0, 38,115, 23, 98, 98, 17,162, 21, 72,136, 65,224, 88, 4,184, -169,173,189,110, 10,119,162, 58,170, 77,109, 14,231, 24, 11,131,198,211, 92,124,205, 45, 10,178, 17, 83, 46,237,148, 26,193,212, -160, 83,152, 23,159, 76, 51,193,132, 81,109,172, 77,107,253, 20,173, 27,137,195,121, 64,220, 44, 49, 4,107, 78, 62,140,220,106, - 90,255, 15, 63,135,139, 48, 19, 33, 17, 51,215, 82,131, 15, 43,142, 34,113, 63, 98,118, 67, 0,199, 28, 34,172,213, 23,171,126, - 99, 54, 85, 43, 13,203,109,174,104,133,160, 41,177, 17,170,214,233,116,163,243,240,250,197, 67,146,146,200,224, 0, 81,176, 4, -215,150,146,216,208,250, 24,197, 34, 14, 73,153,114, 74,165, 84, 68, 28, 56,114, 2,100, 34, 41,231, 92,181,143, 63,220,206, 65, - 26, 38,100,132,141,100, 29,104, 34, 48,216, 77, 61, 10, 4, 34,186,236,134, 4,238,189,152,107, 40,176, 33,111,231,148,221,170, -185,197, 34,186, 26,224, 22,193,197,198,129,107, 43,200, 8,236,144,187,169, 41,115, 30,207, 57, 20,246,145,144, 32,157, 91,235, - 81, 56,188, 93,163, 26,146, 91, 11, 74,228, 11,162, 50, 34, 30, 18, 18,182,137, 38, 12, 55,120, 0, 52,232,161,109, 62, 38,152, -197, 37, 76, 22,206,124,119,119, 47, 26,136,158, 49, 44,234,227,162, 59,102,121, 38,131,166,166,173, 48,193, 67,194,140,184,100, - 64, 32,215,149,127,104, 45,126,218, 96,115,117,117, 84,107, 73,147,205, 73,151,172,237,254, 90, 81, 96,123,188, 84,227, 44, 17, - 42, 37,152,136, 76,114,254,232,247,255, 85, 57,253,240,199, 63, 77,137,250,213, 82, 75, 89, 29,238,214,254,104, 50, 63,157, 82, -110, 56, 84, 97,178, 6,164,116, 50, 15, 86, 88, 45,206,105, 99,123,123,239,201, 14, 49, 29,219,222,126,112,251,201,222,157,219, - 95,124,249,213,238,209,226,251,239,191,117,246,204,185,222,183,142,106,238,102, 19, 34, 28, 60,219,121,244,240,238,237,219, 55, -174, 92,191,113,235,254, 99,131,255,197,159,253,248, 87, 63,253,224,216,230,230,170,154, 89,105, 27, 90, 56, 91,188,196,245,110, - 38,106, 4, 99,250,179,134, 30, 4, 17,188, 86, 51,247, 55,222,122,245,250,215, 87, 63,253,252,202, 91,111,190, 82,139, 82,203, -226, 69,111, 45, 86,203, 94, 85,139, 85,102,238,251,194,110,157,100,230, 68, 40,225,231, 93, 13,197,204,173,168, 51,139,184,154, -178,187,144, 48,177, 1,253,208, 3, 94, 77, 17,244,106,134, 72,134,193,137,234,160,197, 26, 18, 43,174,206, 68,164, 68,146,164, -170, 54, 49,211, 43, 81, 6, 83,150,244,250, 75,223,146,156,172, 47,165,214, 85,223, 19,211,209, 98,101,166,228, 60,212, 50, 30, -254, 4, 80, 18, 7, 73,192,188, 82,158,156,189,116,233,214,213,175,163,251, 71, 77,217, 89, 82, 18,213,243, 23, 47,238,239,237, -190,116,241,133, 39,187, 71, 71,171, 21,111,228,196, 86,172,102,201, 2,108,111, 29,127,251,213, 87, 62,250,236,179, 60,153, 4, -183,202, 28,112, 43,160, 82,135, 40,165, 26, 5,186,104,228, 33, 83,128, 88, 25, 18,136,200,231,119,189,134,155, 54,119,138,136, - 20,125,179, 73, 98,108,245, 36,146,152,229, 33,166, 40,102, 78,238, 74, 14,101, 23,129,172,134, 69, 18, 30,168, 70,192, 51,176, -167,253,208,147,250, 98, 40,202,150,115, 74, 34,238,108, 81,123, 30, 37,212,196, 97, 11,246,198,187, 32, 2,229,196,173, 10,219, -131,210, 31, 7, 12, 54,167, 90,139, 86,157,118,121,112, 8,177, 0, 66,148,153,205, 13,228,169,125,255,149, 27, 57,134, 64, 72, - 28, 25, 74,183, 86, 32, 27, 90, 17,180,221,202,220,201, 80, 73, 51, 17,188,172,250,217,100, 18,171,137,214,205,234,238, 9,228, - 72,204, 66,110,160, 44,121,237, 54,166, 22,182,143,172, 20, 26, 12,111, 12,165, 54,210,187,187,187, 7,103,185, 22,205,209, 34, -194,208,218, 12,207, 77,109, 77,217,155, 81, 89, 99, 19, 91,203,160, 93,166,148,180, 6,226,110, 84, 90,160,131,171, 24, 35,161, -235,210,225,178,159,136, 1,110,102,194, 50,159,229, 85, 79, 49,127,132,217,131, 5,132, 70, 0, 86,117,135, 53,131,160, 52,201, -159,154,109,180, 69,124,213,144, 19,131,201,204,210,136,154, 74, 68,195,248, 2, 98,173,161,238,236,110,177,202,178, 49,150,226, -205, 48, 82,205,122,213, 90,163,230,148,213, 91,133,232,100,146,217,106, 84,186, 27, 89, 45,218,121,172,116,226, 1,197, 24, 97, - 60,174,202,146, 97, 26, 27,104,138,123,121,244,144, 4,189,162,113, 20,220,163,125,214,156, 64, 34,205,224,222,148,106, 33,120, -128,109,219, 51, 54,174, 3,146,248,244,217,188,154, 21,133, 4,214, 32,136,239, 48, 43, 14, 9, 5,163, 29, 49, 48,130,247,163, -225, 2, 60,154,246, 29,206,241,227, 32,105, 77, 23,104,224, 59,247,200, 45, 52, 33,159, 28, 36,173,203, 38,150,159, 76, 80, 53, -181, 40,225,182,166,118,145,136, 88,248, 91,218, 36, 64, 62,166,154,152,115,102,250,221,127,254,207,105,115,235,199, 63,250, 97, - 63,244,106,240, 90,250,229,174,150, 5,113, 38,233,184,155, 16,181,238, 34,183, 18,155, 88, 16,187,171,105,173,213, 38, 91,243, - 7, 55,175, 87,245, 51, 47,190,248,249, 31,126,119,247,250,213,235,183, 31,156, 56,185,253,151,191,250,137,167,249,254, 48,207, -243,233, 68,216,116,216,121,116,239,225,131,123,183,110,223,190,122,243,214,227,221,253,243,231, 78,253,187,255,238, 55,223,126, -237,229,101, 95,130,193, 50,246, 60, 59,175, 67,133,177,151,118,139,194, 67,109, 78, 88, 48,179,143,128,111, 2, 65,109,232,235, -107,111,190,241,233, 39, 95,236, 29, 28, 30,155,111,184, 42, 9,197,156, 65,230,139,229, 33, 8, 86, 77,161,131,112,169,206, 73, -132,188,244, 90,173, 50, 39, 70, 9,166,152, 48, 1, 92,171,170,131, 51,187,161,148,224,146, 74,151, 82,213, 74,238,106, 8, 33, -136, 97,213, 42,220,171,217, 80,180,235, 24,112, 53, 35, 65, 78, 9, 85,179,164,222, 43, 57, 72,140,129,227,199, 54, 95,186,116, - 41,246, 42,139,195,189,197, 48,192,108,239, 96,143, 88,220,177, 88, 14,160, 14, 9, 30, 21,231, 77,243,115, 16,213,178,218, 60, -113, 98, 99, 99,243,240,112, 31, 34,108,238,156, 24, 32,170,155, 91, 91, 7, 71,135, 57,167, 87, 46,156,254,234,238, 35, 45,131, -204,166,181,104, 73, 53, 73, 55,155,230,183,223,124,235,254,206,227,219, 15, 30, 78, 38, 19,162,224,176, 81, 98, 44,139, 2, 16, - 24,211, 88,141,198, 14, 3, 51, 79,115, 14, 33,190, 37,233,121,156, 79,133,199, 73,140,157,108,252,192,226, 34,140, 72, 73, 43, - 22, 13,144, 57, 11, 85,175,177,111, 54,195, 36,139,171, 6, 73, 70,205, 90, 69, 6,195,129,126, 40, 76, 36,196,102,234,202,156, -137,128,149, 89, 8, 7,213,220,217, 85,225,130, 28,233, 6, 0,204, 10,119, 83,118, 38, 66, 39,180,126,236,131,224,196,148, 93, -114,202, 78, 43,210,177,176,184,133,189, 2, 20, 44,177, 74,117,128, 60,139,120,196,114, 49, 42, 31, 6,136,175,173,117,214,112, - 22,214,124,201, 12,146,212,154,218, 90, 76, 10, 2, 7, 83,202, 89, 74,182,170, 53, 8, 61,196, 1,236, 72, 36, 43,175, 41,165, -120, 57,163,211,141, 27,254,149,130,167,175,204,236,110,170, 4,212, 46, 77, 76,205,184, 61,185,194, 12, 97, 1,161,196,212,193, - 90,205, 65,211,233,180, 19, 49,162, 3, 56, 89,195,236, 41,131, 77, 34, 84,148, 36, 19, 19,187,229,212,181,145,143, 41,113, 71, - 52, 18, 77,198, 85, 74,108,144,100,236,172, 34,135, 16,213,102,117,109, 56, 52, 1, 87,183,184,146, 4, 20,181,115, 21, 54, 97, -210, 26,190,239,246,155, 71, 6,216,131,208, 75, 48, 55, 19, 88, 5, 3,130, 88,113,154, 87,175,181,144, 7,141,192,165,109, 85, - 76,131,132,204,201,161,153,120,160,208, 79, 34, 94,213, 30,118,204,112,109, 19,197,152,206, 51,208, 8,126,117,119, 24,145,216, -120,122,112,179,118, 98, 26,195,245, 28,125,185,163, 3, 48,100,121, 35,111, 95, 10,143,139,124,132,105,147, 80, 99, 59,199, 4, -246,156,140,235,163,250,164,186,238,201, 35,143,141, 82, 16,247,154,154,110, 66,137,208, 54, 34,214,172,118,205,222,216,188,250, - 99,118,201,218, 3, 93, 91, 92,213, 25,121,182, 33,146, 40,108, 33, 28,107,174,102, 28, 30, 53,154,150, 97,153, 76,102, 7,123, - 79, 63,249,248, 79, 91,167,206,188,255,221,239, 68,138, 50,190, 0, 41,117,150,231, 32, 73, 41,177, 16,140,215,141,128, 17, 65, -132, 69,171, 56, 87,235,119,175,125,113,236,204,139,180,255,248,147,191,251,127,190,186,114,109, 40,254,189,247,222,125,229,149, - 87, 15,250, 52,104,183,177, 53, 39,211,195,189,221, 39, 79, 30,220,190,113,227,250,173,219,215,239,221,239, 38,221,111,127,241, -163,191,250,205, 79,167,221,100,177, 28, 76, 45,178, 24,205, 73,222, 40,121,141,109,136,209,215, 17,192,221,200,201,197,182,181, - 61,254, 48,194,217,151,195,235,175,189,242,233, 23,215,222,124,243,181,173,249,180, 84,143,117,134,153, 61,219, 59, 82, 53,141, -103, 36,204,160, 48,130, 72, 74, 50,203,201,201,150,171, 62, 98,249, 69, 67,163,165, 80,159,106,173, 14,144, 55,119,163, 48, 49, -168, 14,195,203,175,191,114,225,204,153,123, 59, 59,218, 98,186,129,238,137,149,176, 20,173,165, 42,146, 44,251,158, 64,196, 18, -205,228,219,199,143,159, 58,115,178,104, 41,253,242,193,206,238,178, 31, 86, 90,150,171, 94,152,201,125,177, 92,197, 3,219, 65, -227,169, 50, 70,120,133, 91,202,147, 83,231, 46, 44,175, 31,154, 58,113, 2,123,242,204,146,150,139,195,173,227,199,151, 71, 71, - 47,190,120,254,198,131,199,253,208,119,147, 41, 11,151,126,152,204, 51,119, 50,247,249,111,126,246,203,203,215,174,223,186,123, -107,119,119,151, 36,150,114,221, 44,229,197,208,123,148, 74,199, 95,211, 84, 15, 98, 74,185,147, 78,228,112, 24, 74, 95,226,202, - 76,227, 42,222,224, 48,197,154,102, 48,170,166,223,204,187,133, 5,158,154, 4,202, 68,150, 72,106, 84,244, 41,165, 20,223,133, -209, 2,230, 94,181, 76,242,100,179, 75,197,140,199,210,236, 72, 88, 87,247,106,198,128, 49, 90,113, 1,164, 41,133, 54,214, 38, - 74, 50, 7,105,141,175, 94,116, 98, 11,137,195,138, 85,215, 34,129,109,129,151,208,238,130,178,215,168,197,238,142,170,106, 17, -141,115,111, 62, 10, 6,201,232,253, 24,253,105, 0, 58, 22, 39, 82, 81, 17,118, 71,151,186, 90,251, 90,123, 26,205,115,165, 70, - 99, 99, 56,230,162, 14,137, 72, 28, 74, 0, 43,185,185,151,120, 44,192, 51, 49, 55, 3,223,186,176,193,163,190,131,163,160,129, -153,106, 13, 58, 95, 72,202,230,148, 88, 44,114,118, 57, 13, 85, 55,231, 51, 34, 89, 14, 67,128, 72,218,137,170, 45,253,124,232, -109,146, 65,206, 4,154,118,147, 60,233, 82,107,199,139, 94,119,111,227, 56, 26,150, 0,136, 42,249, 17, 24, 9,111, 60, 20, 33, - 40, 68, 27,180,177,209, 31,216, 37, 37, 17, 73, 42, 44, 33,100,181,214,239,200, 84,232, 56, 83,214,170, 89, 18, 59, 69,248,200, -184,185,111, 99, 9, 18, 5, 45, 22, 12, 62, 13, 66, 17, 49, 5,195,193, 89, 72,146,104,105,235, 63, 15, 33,195,218, 65, 30, 0, - 76, 35,235, 75,113, 90, 4,199,221,131,149, 35,251, 31,103,127, 38,210,184,137,140,187,222,209,235,201, 90, 43, 37, 18, 38,239, -152,106,227, 42, 51,177, 91,117, 34, 80, 5, 55,163,123,187, 64, 42,153, 89,128, 88,213,220,201,131, 13,215,152, 0,193,117,136, -195,178, 89, 80,148,155, 43, 69, 0, 66,138,180,151,143,214, 64,111, 57,187,241,222,215, 14,108, 99,196, 43,150,176,146,218, 46, -140, 27,194, 35, 36, 32, 31, 1,147,163, 24, 79, 27,179,141, 39,247,238,125,246,229,229,111,191,253,206,217,179,167,135,126, 53, -170, 11, 78, 68,156,114,158,204,115,215, 9, 39, 83, 37,150,200,184, 18,147, 15, 78, 66,147,249,177,131,189, 71,171,197,242,196, -233,179,229,104,177,120,246,224, 79,127,252,232,246,157,135,223,122,241,252, 91,111,188, 42,211,227, 59,135,169,219,152,111, 77, -167,125,191,120,182,243,232,254,189,155,215,111,222,190,114,227,214,211,253,189,183, 95,127,245,223,252,197,175, 94,188,112,182, -168, 31, 44,250, 53, 67,100,141,245,161,245, 8, 22,246, 70,230, 81, 80,139, 93, 10, 99,204,212,143, 92,228,209, 9, 65,212, 73, -247,238,155,175,252,211,103, 95,190,245,206, 91, 39, 54, 55, 74,213, 64,204,173, 86,171,212,137, 65, 39, 20,220,108,140,112, 30, -103,138,140,167,167,196,129,157,227, 17, 24,157,178,168, 85, 83,203,156,231,211, 41,183, 86,113,212, 82,127,253,231,127,118,230, -244,246,239,126,255, 97, 24,253, 34,226, 19, 55, 2,201,212,155,155,150, 96,143,120, 52,234,186,178,211,185,179,103, 54,102,179, -229,114,181, 90, 44,135, 90, 96,182, 90,246,238, 6,146, 68, 28,109,102, 1, 14, 71,228,209, 24, 48,109, 43, 57,213,237, 83,103, -158, 61,122,180,183,255, 52, 73,142,167,108, 74,105,232,251,110, 34,211,141,141, 83, 39,182, 79, 31,191,242,224,201,209,114,185, -216, 58,118, 76, 75, 29,106,217,152,228,227,199,142,157, 60,113,234,197,243, 23, 62,249,106,251,255,253,219,223,117, 93,183, 24, -138, 57,152,185, 75, 57, 9,215,166,135,182,115, 34, 24,179,212,109,205,167,110,144, 36, 79,134, 50, 42,100,108,110, 50,134,233, - 27, 76,182,173, 39,209,246, 77, 30, 38,156,118,181,212, 90,218,221, 80,141, 8,194,168,197,200, 21,148,217,161, 20,128,220,248, -196,217,221,187,110,138, 90,133,152, 40,185, 13,212,126,115,169, 86, 18, 40, 17, 12, 20,230, 6, 38, 14, 67, 99,202, 2, 98,152, - 49,161, 18, 11, 71,104,186, 89,146, 97, 34,164, 41,103, 93, 44, 64,172, 32, 83, 99,225,177, 30,164,181, 82,140,214, 20, 39, 38, -213,231,221,215, 13, 84, 71, 32,162,170,202, 96,112,235,199, 20,238,178, 72,117,165, 26, 94, 69,119,184, 56,201,184,211,231,128, - 58,172, 47, 83, 13,223,157,138, 53, 39,190,195, 34, 70, 45, 76, 10,206,192, 0,111, 94, 67, 22, 34, 22, 78,102, 42, 32,109,143, - 14,143, 40, 99, 84,191,154,234, 48,148,156,164,214, 50,203, 27, 67, 41,165,104,219, 79,248, 90, 49,179, 86,245, 0,148, 82,213, -245,238,131,199, 27, 27,147,179,219,103, 54, 54,242,190, 47, 35, 79, 0,176, 43,208,138,251, 0,144, 85,195,250,177, 6, 40,144, -157,220, 24,104,121, 98, 31, 13,203,102, 49,249, 17, 11, 51, 9,185, 40, 9,115,204,163,177, 23,109, 11,196,182,118,253, 6,245, -135,129,170,149, 19, 39,226, 1, 74, 36,238, 30,186, 32, 28,174, 70,110,148, 58, 82,135, 49, 67, 19,133,173, 76,220,130, 45,216, -254, 47,130, 6, 78, 35,178,194, 50, 80,227, 61,115, 70,203,251,106,144, 36,107, 27,254,219, 32,213, 54,162,230,104, 99,136,187, - 89,165, 6, 71, 30,227, 62,173,132,197, 90, 60, 34,179,171,123, 20, 74, 89, 8, 12,161, 19, 81, 64,238,192, 8,201,207,160,100, -206, 20, 85,186, 13,240, 17, 22,228,212,104,110,230,193,251,129,141,166,173, 6, 32,138,167, 88, 20,164, 16, 51,219,248, 44,139, -161,213, 71,173,163, 89, 85,227,250, 85, 5,167,217,108,118,253,242, 23, 87,111,220,249,209,207,127,182, 57,155, 12,101, 8, 17, - 40,148,169,248,158, 74,238,184,155,186, 41,249, 56,188,152,186, 58, 72,186,249,214,131, 59, 87, 68,142,109,159,185,244,224,246, - 87, 15,238,220,252,252,139,175,213,240,139,159,254,240,212,201,211,251,125, 46,190,177,177, 61, 97,199,179,167,143, 31, 63,184, -115,245,234,213, 91,247,238,221,123,248,152, 19,253,205,191,252,205,207,126,248,221,174,203,203,190,180,214, 17, 38, 78,128, 6, - 58,175, 73,145, 78, 99,169,132,175, 67,182,190, 38,218,227, 57,123, 39, 22,205,213,145, 98, 33, 87,180, 76,231,155,239,189,245, -234, 87, 87,175,191,255,222,251,132,234,100, 14,175, 26, 5, 94,108, 98,109, 0, 24,225, 61, 78,212,229, 76,236, 93, 74,211,110, -178, 90, 44, 37,145,161, 53, 69, 86,117,115,218,152,229, 90,243,116,210,169, 25,129, 38,147,201,127,250,143,255,233,252,185,243, - 41, 73,173, 53, 62, 16,142, 1,137,200,213,132,152, 89,170,214,174, 75, 65,125, 17, 98, 23,188,124,233,188,136,184,211,209,114, -113,184,234,139,214,229,114, 89,213, 82,102,192, 87,203, 30,166, 68,236, 24,113,125, 46,142, 66, 44,113, 21,114,162,179, 23, 47, -237, 31,236, 82, 98,175, 85,114,118,162,201,108,174, 67, 15,243,253,221,253,247,191,243,214,225,223,127,220,187,174,250, 62,167, -180, 88,174,220,189, 38,238,171,246,195,106,168, 21, 12, 17, 33, 20,115,119, 66, 78, 41,137, 12,218, 55, 92, 29,140,152, 79,204, -166, 39,230,115, 35,235, 7,221,236, 38, 79,118, 3,206, 37,205, 33, 22, 18,188, 90,148,127, 9, 75,164, 57,155,189,202,161, 80, - 56,101, 91,187,208,188,147,100, 40,203,161, 82, 74,234,102, 77,139, 78, 2, 99,184,128,138,177, 36, 73,204,165, 86,115, 75,156, -108, 12,220,145, 25, 70,171,114, 35,205,196,176,199, 4,134, 83,220,232, 77, 40,133,224, 67,142, 20,157, 67, 74, 36, 36,137,135, -226, 86,149, 26, 10,201,212,171,133,231, 62,142,105, 80, 5,197,252, 78, 45,200, 99,177,224,215, 81, 42, 28, 93,103,252,141,174, -233,208,229,219, 75,227, 22, 44, 39, 15, 75, 63,188,152,101, 67,234,146, 90,137, 48, 21, 50,154, 31, 36,234,227,190,129, 10, 81, -115, 14,104, 49, 81,232, 86,173,123,149,168, 86, 15, 56, 96,171, 86,166, 88, 38,250, 8,244, 84, 87,103, 34,133,229,156, 82,169, -230,241, 60,224,208, 45,205, 61, 81,102, 1, 39,130,196,135, 56, 28, 29, 30,222, 92, 44, 95,186,120, 33, 9,197, 94,215,220,130, -134, 28, 55,237,148,147,194,188, 54, 21,119, 84,101, 72,200, 28, 28, 61,230,107,131,151,153,194, 61, 17, 42,147,169,167, 76,174, -196,196,112, 34, 78,237,222,137,152, 88, 35, 54, 7, 89,183,175, 18, 91,220,198,132, 5, 82, 85,169,148, 6, 20,115, 37, 6, 40, - 1, 86,189,186,133,113, 50,199, 30, 81,221, 34,114,229,181, 70,195,161,251, 58,206,212,214,212,113, 91, 71, 52, 69, 50,187,246, - 99, 1,153,135,251,206,131,144,174,218,124, 43,102,214,162, 91, 4, 33, 55,136,145,121, 37, 74,102,234, 22,224,231, 10, 25, 87, -178,230, 90,141,153,192,228,205,245,214,218,125, 67, 51, 81,215,240,241, 48,181,244, 95,112,186,216,141, 9,201,205, 91, 67,201, -248,130, 71, 63, 63, 71,250,118,221, 31, 20,179, 79,180,214,183, 29,113, 28, 6,252, 27,223,139,216, 34, 72,202, 57, 93,254,252, - 79,143,159, 30,252,242, 87,127,150,115, 46,117, 24,147,177, 54, 54,183,130,121,210, 42,152, 36,173,161,146, 90,202,116,126,236, -217,163,123, 7,123,251, 89, 38, 96,186,246,217, 71, 95,124,241,197,195,157,103, 47, 94, 56,247,254, 59,111, 87,222,216,215,110, -178, 57,207,147,188, 90, 30, 61,121,120,255,214,141,107, 95,223,188,118,243,238,131,195,197,234,181,151, 47,254,235,223,252,226, -141, 87, 47, 45,123, 93,245,117,236, 31,137,188,221, 55,234,118, 64,136, 86, 22,140, 77,178,113,129,141, 29, 36, 81, 72,219,146, -188,212, 38, 37,142,197, 16, 28,156,134,126,152,111,157,121,229, 91,248,195,199, 31,127,255,187,239,147,169,171,213,190, 14,195, - 0,166, 44,172,166,131,234,180,235,152,217, 13,147, 46, 37,102, 85,151,156, 33, 36,194, 58, 96, 40, 43, 68,111, 19,200, 77,103, -211,201,238,254,161,164,148,195,222,199, 84,213, 58,225,174,235, 86,171, 62,214, 1, 18, 93, 90, 64, 85, 87,171, 66, 84, 1, 33, -113,105,247,170, 68,242,173,139, 23,205,147,121, 41,181,148,126,168,234,139,229, 16,101,113, 12,233,195,135,209,142,215, 49, 5, -214,214,248, 6, 2,193, 74, 61,118,242,196,246,246,153,189,221, 29, 73, 83, 0,176, 33,167,206, 85,207,156, 57,251,248,209,195, -249,124,227,229, 75,231,110,220,123,178,234,151,137, 55,220,252, 96, 49,172, 68,150,203,229,193,225, 94, 95,170,154,175,106,137, -184, 30, 25,247, 90,200,145,136,156,216,173,178,240,201,249,198,137, 99,155, 44, 98,165,100, 73, 44,220,154, 30, 61, 60, 30,235, -114, 82, 5, 37,152,169, 87,107,157, 97, 24, 31,206,112,106, 61, 6,137,201, 13,213,234, 52,167,163,161,104,173, 0,114, 36, 72, - 83,195,164, 56,156,196, 19,135, 63, 69,200, 44,119,201,204,213, 40, 39,238,171, 6,111, 93, 93,199,147, 44,153, 85, 55, 73,173, - 21,181,165, 43, 3,137, 30,211,140, 59,204, 53, 81,210, 90,171,154,176, 68,161, 71, 49,139,239,174,153, 19, 17,200, 32, 57,140, -236,147,196,171,161,170,106, 99, 48, 1,108, 49,230,141,244, 79, 11,126,223, 8, 31, 6, 37,145, 94, 53,192,226,113,231, 66,252, -104, 51,171,106, 73, 88, 80,205,181, 90,215, 73,112,209, 2,204,107, 70,228, 69,205, 40, 49, 57,149, 96,170,132, 73,154,129,162, -144, 20,183,221,200, 10, 7,245,194, 45, 96, 11, 32,162, 68, 84, 99,124,118, 75, 41, 89,117, 8,169, 43,140,136,137,196, 81,130, -147,156,136, 17,186, 9, 28,100, 78,238, 93, 74, 85,245,202,141, 91,103,207,156,164, 86,129,235, 2,142,197, 26,224, 76, 52, 34, - 65,215, 76,241,150,173, 52,119, 29,171, 13,227,170, 20, 22,145,164, 78, 65,212,240,224, 22, 83,131,172,154, 42, 55,211,109,160, -180,198,101,114, 43,211, 50,134,132,112, 46, 34,205, 47,231,193, 47,104,232, 45, 87,116,156,140, 97,145,141, 80, 7, 88, 82, 26, -213,172,228,228,230, 37,182, 7, 26, 85, 30, 68,110,177,134,197, 90, 61, 37,106,220,230, 80, 89,208, 16,205,218,136,114,234,237, - 78,109, 78, 28,227,185, 57,220, 40,145, 7, 67,156,205, 92,149, 36,185, 26,133,160,159,192,230, 14,109,109,156,194,164, 10, 15, - 88,106,227, 59, 70,185,136, 51,130,231,225,196, 28,172, 75,110, 82,167, 60,239,170,142, 87, 20,248, 56, 29,247,208,177, 71,166, -177, 60, 18,107, 80,116, 56,236,198, 62, 91,119,228,220, 49,217,159, 62,252,112,185,194, 63,251,241,143,137,188, 31,122, 0,219, - 23, 95,222, 58,119, 49, 96,222,225,169,146, 46,158,245,220,205,230,231,223,249,129, 14, 37, 79, 55,134,126,177,251,236,217,100, -235,196,100,146,142,246,158,126,253,233, 63,254,238,247,191, 63, 90,149, 95,252,179, 31,188,255,254,247, 86,249,148,207, 78,109, -110,109,165,204,207, 30, 63,184,121,249,179, 63,254,233,163, 15,255,248,199,207,175, 92, 79, 57,253,235,223,254,252,127,249,247, -255,227,171,223,186,120,180,212, 17, 53, 62,122, 6,173,217, 97,124, 84,156,243,108,246,198, 47,254, 21,128,110, 62,127,237,231, -127,181, 86, 62,180,157, 80,168,217,214,252,121,248, 56, 44,167,235,145,190,150,229,214,137, 19, 23,206,110, 93,254,250, 43, 22, -118, 47,149, 52,120,153, 16,150,214, 12,202, 6, 83,237,137, 41,117,147,170, 6,162, 90,180,241,113,163,133, 12, 84,181, 38,145, - 46,231,161, 86, 85,203, 93, 14,139,236, 80,149,184,161,119, 61, 22, 58,210,214,141, 57, 75, 39, 41, 12,113, 69, 53,154,208,137, -112,226,216,252,252,217, 23, 74,233, 87,171,126,255, 96,121,112,120, 84, 77, 87,253, 17, 35,106, 50,160,117, 80, 83,138, 63,189, -214,123,131,129,212,146,252, 14,179, 23, 46, 93,224, 60,225, 8, 6,114,199,146, 37,231,201,108,118,238,210,165,103, 59, 79,207, -156, 58,113,233,204, 49,119,237,107,113,129,213, 97,185, 56, 26, 74,201,105,114,234,196,201,115,167, 79,195, 21,163,225,209,221, -117,244, 39, 25, 40,177, 76,114, 86, 83, 98,174, 70,204,148, 68, 56,110,210, 17,207, 24, 15,215, 76,210,112,240, 12,213,231,237, -190,109, 54,106,255,164,128,171,186,186, 2, 52, 17, 33, 10, 91, 3, 25,172, 69,100,199,181,103,180, 14,115, 56,211,137, 41,201, - 56, 30, 70, 34,209,205, 76,198, 10,210, 0,245, 70,155, 51,195, 25,164,113,160,160,150, 79,143, 31, 45,209,231,237, 80,242, 98, -208, 96, 25, 91,113, 88, 99,180, 68,121, 71,220, 20, 36, 63,135, 55,173,229, 3, 4,157,103, 68,179, 59, 66,223,228,248, 15,197, -133,201, 34, 18,124, 44, 1,155, 91,175, 74,193,158,108, 93, 74, 28,163,107, 83, 29,205,162,206, 42,224,195,144,232,160,104, 46, - 38, 97,105, 74, 1,143,102,253,128,187, 58, 0, 86,152, 1, 27,147,174,203, 29, 90, 14, 88, 56,120,190,176, 90,170,227,191, 41, - 90,226,204, 67, 85, 51,151, 0,198, 37,158, 76, 38,147,201,116,115,190,113,124,107, 30,119,176,176, 44,132, 55, 50,150, 95, 76, - 17,222, 90, 11,166, 35, 8, 58,134,211, 38,193, 81, 10,190,138,136,169,186,251, 80,170,213, 10,131,154, 85,171, 41, 26,100,153, -157, 36,178,174,209,194, 99, 17,210,140,253, 4,197, 38,165,121,117,227, 90,144,113,109, 99,218,142,107,213, 85, 32, 68,208,106, -189,150, 0,146,193,204,107, 29,185,192,173,222, 7, 6,168,187, 85,139, 1,222, 42, 53, 86,116,148, 78, 89,187,219,152,181, 52, -112,128, 87,152, 41,177,131,180,170, 85, 87, 85,115,133,170,197, 58, 59,220,164,102,134,192, 18,137,235,152,252, 10, 72, 78,177, -182,113, 10,254,119,216, 40,199,179,230,248, 40,180, 88,151, 70,223,173,194, 82,132,137,162, 37, 55, 96, 25,241, 80, 20,153,156, -123,251, 59,177, 47,173,253,106,247,222,205,126,121, 68,163, 50, 31,135,226, 88,250,183, 35,140, 86, 48,165,212,245,139,131,127, -252,199,127,216, 62,253,226,123,239,189, 61, 12,171,248, 55,230, 39, 95,112,211,253, 7,119,200, 26,217,200, 17,101, 71,168,174, -245,232,240,238,167,255, 48, 61,118,108,119,119, 71, 73, 78,157, 57,251,248,254,237,221,135,247,191,250,234,203, 27,183,239,125, -251,141, 55,222,127,247,237,130,217,138, 55,103,243,201,116,190,241,198,119,223,215, 90, 29,120,112,231,246, 71,255,231,255,126, -255,217,211,239,188,245,250,191,250,245, 63, 59,127,102,187,175, 94, 75, 1,132,156,192, 78, 26,103, 92, 91,211,135, 90,237,210, -250,139,229, 24,150,135, 87,255,235,255, 61, 78,178, 96,226,182,197, 27,181, 55, 40,136, 61, 4, 79,242,231,219, 61,119,175,170, -151, 46,188,124,248,197,103,151, 47,127,253,222, 91,175, 88, 33, 7, 55,234, 83, 91,125,128, 12, 44, 41,137,116,147,137, 48,123, -228,194,163,185,157, 37, 34,210, 79,247, 15,103,147,105, 24,187,147,200, 80,106, 75,135, 19, 51,203, 98,168,193, 70, 4, 1, 22, - 97, 30,114, 39, 53, 99,162,121, 55, 17, 73,195,208,199,126,100,251,196,137,227,199,183,134,161,212,190, 63, 60, 56, 60, 90, 45, -234, 48,148, 26,139, 44, 35, 78, 85,181,150, 2, 74, 64, 9,162,210, 55,225,185,225,192, 54,179,217,124,243,212,169, 51, 79,119, - 30,115,238, 80,171,147,138,176, 41, 15,171,225,216,252, 88,158,228, 90,202,163,167, 7,123,203, 62, 65, 82, 74, 67, 29,102, 27, -115,152, 77,114,254,246,171,175, 61,253,199,221, 40, 51, 19, 33,212,246, 21,230,240,110, 81, 12,186, 84,107,101, 33,102, 2, 99, - 42,178, 82, 75, 44,213, 61,154,172,219, 33, 52, 64,142, 99, 91,233, 55,163,217,194, 76,160,138, 32,212,234, 52,231, 90,107, 16, - 40,219, 8,174, 62,150,178, 96, 77,184, 78,204, 52,198, 67, 76,219, 91,202, 17, 48, 34,213, 8, 14, 54,105, 67, 0,147,148,136, - 25, 68, 58,218, 60, 56,220, 32,228,125,173,135,203, 37, 17,117,147,142, 24,181,212,230,103, 32,144,179, 52, 13, 52, 56, 57,149, - 64, 44,196, 36, 36, 66, 32, 69,227,124,193, 98,191, 26, 2,124, 11,202, 53, 72, 44, 81, 11, 80,176,176,183, 98,233,112,242,193, -188,214,210,165,228,174,102, 22, 78,102, 53,165,148, 90,133, 20, 49,162, 99, 58,110,249, 68,193,170, 27,145,223, 26,213,179,102, -148, 51,245,203, 18, 39, 9,206,194,165, 40, 64, 64, 81, 83, 93,177, 16,220,213,212,128, 36, 36,156,137,200, 92, 73, 46, 89, 25, - 0, 0, 32, 0, 73, 68, 65, 84, 9, 28, 55, 61,106, 59, 81, 74, 76,185,203,129, 31,142, 66, 43, 38, 62,182,185, 97, 62,222,113, -189,245, 20,178, 96,154,115, 74,172, 67,187,235, 18, 17, 24,108, 17,193,245,200, 15,248,168,174,132,106,212,150,149, 4,117,171, -170,165, 86,152,173,101,247,208,187,198, 10,186,160,181, 69,201, 7,226,215,149, 78,192,100,138,136,158, 56,147,164, 88,175,196, - 27, 38,100, 6,184,128, 11, 65,181,130,224,174,113,112, 11,125, 5,205,109,105,176,218, 52, 12, 34, 18, 66,141,218,119,179,106, -235, 40,149,187,181, 11, 45,118, 36,104, 43,246,166, 20,141,212,175, 86,244,225, 81,179, 28,233,163, 24,251, 53,248,164, 14,247, - 4,212,118,155, 6,199,134,154, 81, 42,115, 84,223,142,114, 34, 81, 43, 77, 80,149, 44, 65, 43, 79,145,133, 24, 87, 91,163, 92, -220,128, 8,126,247,243, 63,192,113,252,220,197, 19, 23, 95,122,240,213,199,104,188,219, 32, 88, 24,190,121, 94,102,234,166,179, -251,183,111, 94,189,118,253,141,183, 63,184,116,238,212,193,226,136,219, 61,209, 15, 31,223, 11,160, 86,235, 77,109, 58,141, 25, -156, 56, 77,187,252,244,201,206,242,104,209,175, 14,231,199,207, 94,249,228,195,235,215,174,223,186,123,127,107,107,235, 95,252, -246,215,219, 39,207, 23,108, 72,238,178, 80, 93, 45,119,151,135,238,254,127,252,111,255,225,202,237, 91,127,245,111,255,230,127, -254, 95,255,195,127,249,191,254,227,143, 63,120,151,153, 34,134, 71, 36,204,145,108, 72,224, 58,130, 2, 3,208, 95,141, 37, 32, - 92,107, 8,109,192, 96,209,166,152,166,222,196,191, 51, 38,159,104,180,250, 70, 33, 7, 71, 5,108,160,112,250, 82,190,253,238, -187, 87, 47,127,249,247,127,248, 88,205, 61,234,163,122,217,200,236, 14, 73, 4, 34, 53,159, 8,107, 41,238,200, 41,117,147,201, - 98, 56,138,163,155, 8,147, 80,173, 58,217,202, 65, 43, 77, 57,149,213,138, 17, 85, 94, 6,160, 31, 6, 35, 34, 39, 27,243, 7, -238, 86,181,150,170, 85,221,108,152, 77, 8, 73, 88,184, 86,123,241,194, 11,179,217,198,254,222,222,106, 88, 45,135,178,234,117, - 24,138,213, 18,112,230, 38,222,219,232, 24,138,187,209,216,232, 51,126, 58,177,202,163,211,231,206,238,238, 60,172,253, 82,164, - 35, 8,145,164, 52, 75,124,116,230,210,133,199, 15,238,207,143,205, 47,157, 57,185,188,251,104,213, 47, 39,211, 46,229, 44, 44, - 44,169,168,158, 56,113,252,194,133,139,215,110, 92, 39,233,140,184,109, 25, 92,225, 96,215, 76, 81, 20,156, 13,150,136, 18,145, - 59,205,186,174,168,217,216, 57, 24, 21,166,102,113, 14,243,128,101,184,181,175, 50,185, 11,145, 39,214, 58,110,254,225, 14,174, - 94, 34, 46, 38,196, 41, 81, 41,145,217,110,155, 58, 34,151,204,147,148,107, 45,137, 57,108, 6, 22,199,103, 33, 17,233, 52, 45, - 67,197,104, 68, 38,112, 98, 34, 79, 4, 53,229, 72,129,171, 81, 74, 99,232,197,164, 69,139, 27,252, 44,181,145,158, 73,185,205, - 76,113,110, 52, 39, 73,164, 14,114,133, 33,148,207, 86, 44, 20,180, 75, 48, 65, 18,149, 26,248, 18,133,187, 36,129, 59,179, 48, -155,215, 18,222,121, 98, 49,114,102,202, 76, 10,168, 34, 34,114,137, 33,194,137,189, 68,229, 72,131,215, 66,129, 12, 74, 14, 73, - 18, 17, 82, 9, 43, 1,155, 83, 99,162,129,134,168,234,214,234, 69,155,179,168,148, 58,203,156,115, 23, 95,167,106,154,187,137, -181,133,103,195,150,211,120,246, 75, 73,140, 48,148, 74, 84, 77,157,152,114,202,179,105,183,209, 77, 15, 86,125, 48, 48, 90, 11, - 94,155,103,189,148,152,166,215, 86, 59, 90, 27, 32, 44,208,141, 77, 28, 1, 11,229, 28,239,180, 19, 48, 12,149, 73, 76,149,153, -134, 82,145,121, 50, 50, 7,195, 89, 22, 80, 67, 34,215,231, 21, 29, 28,105,216,204, 84,141,220,218,139, 79,204,194,148, 9, 70, -112, 14, 47,146,145,129,236,249, 11,138, 35, 63,115,163,136, 70, 27, 50,185,134,163,218,107, 4,144, 42, 2,202,214,240, 10,149, - 72,108,100,139, 17,147,170,186,129,153,132,216, 41, 57, 59, 35, 46, 39,109, 68,213, 88, 56, 71, 86, 41, 9,204, 52,138,253, 76, -219,138, 48,210, 57,214,154,174, 73, 72, 32,198,132,245, 73,202, 91, 13, 37,137,169, 67, 72,200,145,218, 67,114, 68, 62,133,111, -228, 57,222,222,156,152, 23,251,123,243,147,103, 9, 41, 50, 20, 39, 46,190, 60, 61,118, 28,238,139,103, 59,207,238,223,114, 85, - 98,153, 76,167,180,185,253,238,159,191,253,206, 47,117,249,244,241,177,115, 23,143, 62,249,135, 16,124,182, 47,188, 52,219, 58, - 9,162,229,254,211,189,123, 55, 80,149,167,211,115,111,126,239,225,181,203,167, 94,124,101, 88, 46, 30, 94,187,252,230,207,127, -123,227,143, 31,174,150, 7, 15,110,126,117,230,219,223,253,193, 95,253, 59, 38, 60,123,112,231,193,173,135, 3,208,165,206,181, - 30, 62,219,219,121,116,247, 96,181,248,193,175,255,249, 71,159,126,178,232,235,131, 27, 87, 94,252,235,191,254,233, 7,111, 87, -247,211,175,127,127,235,236, 37, 16,246, 31,222,185,255,229, 31,220,120,186, 57,123,237,255,175,234, 76,158,236,186,146,243,254, -101,230, 57,247,189, 26, 80,133, 2, 10, 35, 1,162, 9, 14,104, 14,234, 73, 77,170,217,146, 90, 99,104,136,112,135, 23,178,108, - 45,188,241,159,224,173,255, 8,239,189, 81,132, 55,118,132, 35, 28,150, 29, 33,135, 34,100,205, 45, 91,146,155,100,143,106, 18, - 36, 65, 0,133,185,128, 66,141,239,189,123,207,201, 76, 47,242,220, 7,121, 73, 6, 3, 32, 10,239,221,123, 78,230,247,253,126, -223,250,245,135, 31,127,184,253,202,155,195,236,248,238, 71,127,147,186,116,233,237,111,173,158,222,174,253,124,255,254, 23,241, - 19,237,214, 79, 93,251,230,175,221,252,235,255, 65, 68, 47,127,227, 87,242,202,169,118,111, 22,222,187,115,243,217,157, 79, 34, - 33, 63,146, 61,218, 17,180,133,133, 64,238, 86,134,197, 27, 55,110,252,232,195,239, 63,222, 59,154, 76, 59, 34,206, 57, 87,171, -179, 82, 54, 90,104, 89, 19,200,128,197,208, 39, 73, 66, 82,212, 88,120,168,106,176,147,249,130,137, 69,146,185,170,182, 93, 88, - 22, 81,243,220,117, 81,154,112,130,144, 48,187,100,169,145,141,133, 17, 81,206,121,182, 88, 52, 0, 33, 67, 77, 47,159,191, 72, - 76, 64, 61, 60, 58,218,125,182, 55, 88,237,135, 94, 3, 54, 11, 39,120,233,251,161, 44, 36,117, 99,146,201,185, 25, 82,148, 60, -236, 99,113,255,179,201,202,234,217,243, 23, 31, 63,188, 7,130,107, 9,168, 95,238,214,230,243,227,110,210,237, 62,126,122,249, -210,185,131,249,226,238,163,103,168,188, 62, 89, 53,184,176, 0,164,181, 94,191,114,229,201,238,110, 95,139,120, 0, 87,193, 97, -211, 35,241, 64,222, 39,158, 45,106, 22, 94,244,101,115, 99, 45, 75, 94,153,218,124,177, 8, 27,156,155, 87,168, 54, 10, 58,150, -116,167,168,164,134,245, 52, 60,187,161, 99,117,135,214,216,210, 27,145, 40, 84,171, 19,185,105,188,195, 90, 16, 52,115, 38, 56, -177, 12,181,100,114,102,113,210, 26,115,127, 99,206,205,145,216,116, 30, 68, 80,114, 39,117, 54, 47,198, 98,106, 93, 74,177,239, -100, 16, 20,147,201,132,153,213,140, 33, 78,200, 41, 11, 17, 67,204,213,162, 32, 21,191, 24, 51,107, 85,211,208, 24,250,210, 97, - 73, 49, 61,113, 50, 82, 50,175, 70, 96,129, 23, 16,167, 78, 40, 30, 23,222,151, 69,169, 53, 0, 84, 48, 35, 22, 97,230,212,213, - 82,152,201,204,205, 93, 72,148,144, 29, 66,164,176, 65, 73, 56,194, 53, 77,230,173,134,212, 22,162, 36, 36, 18,197,164,106, 57, - 33,229, 92,106, 85,160,106, 25,211,150,164,166, 41, 5, 99, 2,213, 28,142,162,150, 71,142, 49, 64, 44, 20,188,169,230,138,101, -234,178, 52,249,140,227,212,234,218,100,154, 17,168,181,178, 20,109,182,109,157,249, 11, 15, 0,141,153,114, 16,229, 36, 67, 95, - 83,150,130,210, 96,130,106,117,168, 3, 23,114,154,247,189,169,229, 73, 50,210, 36,226,240,106,150, 9,145,159, 0,187, 27,195, - 52, 81,151, 64, 99,212,220, 45,208, 39,209, 65, 36,102, 97,104, 8, 53,187,152,141,168,171,228, 14, 90, 85,131, 43,236, 54, 22, - 20, 8, 47, 30,243,209,137, 49, 37,127,177, 93, 29, 69,129,212, 74, 77,193,214, 80, 72,203,192,153,133,244,216,181, 16, 51, 28, - 22,229, 7, 55, 29,211,235,237,149,217, 40, 65, 4,102,168, 15,234,196,130, 56,208, 9, 92,157, 65,102, 96,137,102, 68, 48,103, - 65,240, 48,228,180,151,166,197,254,138,221,192,102,230,158,104,233,230,104,253,144,216,208, 99, 57,101,118,208,234,198,102,153, -207,226,118,117,230,234,117, 51,123,240,179, 15, 25,178,125,253,198,198,249,203, 39,187,143,221,201, 86, 79,105,173,135, 59,159, - 15,195, 98,235,202,171,205,185, 13, 63,115,229, 53, 22,126,248,179,239,187,209,246,245, 27, 27,231,175, 60,191,255,133, 23, 5, -209,250,153,179, 15, 62,254,225,201,225,222,249,151, 95, 3,176,251,240,139, 59,159,127,250,149, 95,255,174,176,124,250, 55,127, - 44,147,141,107, 95,255,214, 69, 94,217,123,248,112, 62,155, 31, 62,223,125,116,255,238,205,207, 62, 59,174,229, 95, 1,156, 38, -127,240,155,191,242,221, 63,248,151,195,236,104,222, 15, 87,191,242,109,146,116,243,123,255,147,160, 47,189,243,254,133, 87,223, -121,244,217, 15,226, 48, 62,221, 56,123,235,239,254, 44,182,222,151,222,250, 5, 43,229,211,239,253, 73,202,114,249,237,247,218, -151,204, 70,150, 39,252,206, 7,127, 25,223,187,213,179,231, 47,189,249,222,241,211, 71,227,151, 48,222,232, 28, 78, 57,143,196, - 35,193, 40,126, 92, 92,170, 95,187,122,197, 76, 73, 4, 76,171, 57,247,131,101,146, 70, 91,165, 70,164,154,245, 67, 55,233,170, - 87, 33,234, 18,149,129,220,188, 22,151, 44,194,146, 88,192, 84,172, 56,121, 53, 35,131,144, 28,157, 44,212, 52, 75,226, 70,100, -166, 36, 34, 44, 89,166, 8,191,177, 91, 92, 85, 50, 39, 21,123,249,210,101,119, 41,131, 29, 31,205, 15,103, 39, 66, 88,244, 5, -230, 35,113,129,204, 81,230,243,110,115, 69, 81,157, 2, 68,101, 52,142,157,192, 78,224,214,249, 50, 59,127,229,202,241,225,254, -201,236,132, 89,152, 29,194, 83, 94, 25,234,112,250,236,217,253,253,253,211,219,103,206,236,237,157, 44,250, 39,251, 71, 73,100, - 34,157,186,129, 5,196,171,107,211,107, 87, 94,250,252,238,157,170,234, 22,214,236, 56,144, 41, 17, 27,224, 76, 57,201, 80,171, -185, 14,106, 14,155,138, 12, 41,107, 63, 4,247, 21, 12, 81,142,135, 75,202, 17, 26, 48, 51,152, 58,117,204, 28, 91, 71,130,107, -117,176,112, 85, 93,153,118,117,168, 32,102,113,152,113,180, 3,173,173, 77, 44, 37,115, 45,129,206, 3,113, 13,232,188, 59, 92, - 64, 6,133, 33,194,172, 1,217,115,117,176, 12,181,178,112,151,186, 44, 60,144, 78,166,211,161,148, 8,168,113, 78, 29, 16,186, -212,190, 46,198, 53, 13,129,148, 18,161,132, 31,137,221,140, 13, 75,127, 49,150,146,194,152, 23, 69, 50, 61,158,110,194, 53,114, -223, 70, 14, 19, 98, 48,169, 91,151,146,219,184, 79,107,124, 68, 33,119,225,152,167,162,204, 75, 78, 34,206,225, 87, 50,115,225, - 37, 91,168,197,249,164,249,166, 27,165, 48, 6,102,237,175,190,125,202,169,169, 62,218,163, 73, 15, 78,250,205,211,147, 46,103, -131, 77, 40, 11, 36, 40, 97,157,164,193,141,108,100,231,130,220,217,137, 68,152,128, 94, 32, 44, 78, 32,150, 90, 10,218,124, 57, - 44, 29, 77, 94, 10,130, 90,109,221,203,168,139, 68, 54, 16,198,121,249, 70,119,144, 91,160,155,181,102, 79,196, 4, 19,114, 74, -196, 3,185, 16, 75,203,134,138,123, 31, 23,208, 37,253, 55, 28, 29,109,106,206,173,113,108,198,173,208,234,205, 3,146, 82,178, - 98, 99, 43,205,150,168,154,113, 9, 39, 35,224,222,219, 13,146,108, 73,107,137,188,137,143,146, 57, 54, 55,134,140, 43, 21, 39, - 27,249, 60, 78, 41, 17, 56, 49, 85, 55, 35, 7, 9, 91, 44,250,140, 69, 76,221,180, 89, 3,200, 56,177, 0,228,197,226,255,167, - 29,182,199,144,123, 91,222, 54, 0, 59, 53,142, 38, 11,153, 9,155,186,179,147,185,105,248,104,252,133,218, 56,148,162,218, 32, -193,228, 32,186,252,214,215, 95,122,251,235,107,103,206,237,221,187, 77,196, 76, 60,221, 56,125,240,112, 7, 14,213,225,240,201, -189,181, 51,231,158,238, 62,250,241,143, 63,186,112,245,149,105,153,205,142,246,203,162, 63,124,124, 63,242,241, 48, 91,219, 58, -187,119,247,150, 22,211,170,251, 15,238, 78, 55,183, 2,116, 14,224,217,206,231,135,207,118,215, 54,183,119, 31,220,113,224,131, -127,248,254,195,221,189, 55,222,249, 90,121,118,127, 94,186,253,133,220,191,115,103,115,251,236,241,254,254,195, 59,159,254,248, - 71, 31,252,221,255,253,224, 7, 31,127,114, 50, 95, 48,243,127,250,163,255,254,175,255,237,191,155,156, 58,123,239,199,255, 71, - 36,111, 94,250,210,163, 79,126, 0,171,174,254,236,206,167, 27, 23, 94,102,228, 56,135, 60,189,245,177,169,186, 85,164,180,190, -125,241,201,173,127, 36, 87,237,135,189,187,159,182, 12, 26,191, 16,108,198,120,176, 91,219,184,244,229,119, 31,125,252, 97,127, -114,248,130, 84, 59,210, 48,226,220,232,177,105,247,216,156, 87, 70,173,170,211,220,177,176, 80, 60, 11, 41, 24,156, 64, 60, 80, - 98,220,111,153, 19, 32,230,148, 56, 41, 96,238,197, 44,214, 62,145,207,170,165, 16,197,141,146, 84,245,112,118,220,236,132,163, - 71, 28,106,129, 72, 92, 90, 45, 98, 7, 41, 73, 54, 55,214, 47, 94, 62,231,174, 67, 41,251,135,135, 39,199, 51, 55,235,135,222, -225,137, 8,228, 10,192,108, 49, 91,180,103,232, 72, 74, 26,139, 12, 99,235,139,209,120, 38, 66,103, 47, 94,130, 57, 17,152,133, -140,221, 49,157,174,184,250,198,198,198,243,189,253,139, 23,207, 93, 58,115,122,109, 58,237,251, 65, 81, 45,102, 74,100, 48,121, -249,210,229,205,141, 77,175, 85, 82, 64,131, 95, 44, 22,133,224, 26, 28, 67,164,148, 2,184, 10,162, 83,211,105,226, 22,224,173, - 69,227,158, 20, 95,224,232,254,249,168, 67, 12,159, 42, 19,178,164,168,161, 85,115,141, 93,171, 85,150, 20,174, 68, 10,248, 21, -144,152,146,163, 19, 14,213, 25, 51, 27,172, 86, 53, 67, 13,128,223, 11,222, 80,139,195,131,131,117, 27,136, 18, 59,153,247,137, - 89,171,166,196,153,216,220,171,234,184,133, 13, 6, 30,123,181, 81,196, 65, 13, 5, 60, 30,156, 28, 68, 2,115,173,117,112,179, -255,239, 35,135, 86, 65, 97,138,104, 14,178, 8,220, 23,253, 80, 84, 3,199,202, 66, 20,108, 3, 34, 23,164, 36, 36, 18,151, 72, -225, 88,241,210, 8, 62,104,216,113,107,110,216, 40,187, 24, 17,115,148,175,194,177, 97,206,204,146, 36, 39, 97,145, 49, 28, 68, -141, 21, 65, 16, 73,237,197,204,228,110,213,253,164, 95,112, 68,157, 2,137, 58, 70, 56,105, 92,202, 10, 39,133, 51, 81, 78, 57, -119,194,224,196,156,146, 56, 19,145, 51,216, 65, 70,196,112,102, 74, 52, 46, 61,199,177,168,171,151, 18,221, 94,211, 22,120,228, - 20,193,202,246,217,228,212, 12, 54, 73,225, 90,171, 80,106, 98, 57,225, 49, 63,206,254, 79,250,139,222,100, 9,141, 64,210,194, -217,214,162,163,211,156, 25,148, 4, 76, 78, 4,181,229, 52, 59,250,171,213, 81,199,230,163,171,153,143,167,120, 98,226,204, 32, - 50,173, 49,208, 20,230,148, 69, 82, 2, 19, 56, 80, 75, 20, 15, 88,130, 16,199,124,206,199,181,139,131, 9,228, 68, 78,209, 16, -101,176,128, 40, 17, 73,117, 99, 24,196,226, 21,160,222,126,211,230,153, 4,133, 86,208, 70,202, 0, 1,110, 21,174,213, 76,205, - 75,109,117, 86,114,164, 37,197, 61,142,219,227,101, 46,197,167,228,254, 79, 62,224, 60, 61,123,245,218,218,153,237,195,199,247, - 37,103, 0,181,244, 4,164,212,145, 17, 49,223,125,240,232,231,190,246,117, 0,243,147, 99,175, 14,129,246,125, 92,254, 72, 4, - 68,231, 94,123,139,150,156, 35, 80, 85, 8, 10,220, 9,137,200, 31,223,250,228,254,147,221, 27,239,253,218,230,153,211,111,191, -121, 3,192,238,243,133, 76,214,114,199,139,195,163,148,211,103, 55,127,242,217,173, 47,190,184,183,179,251,108,127,123,107,243, -159,253,218, 47,186,251,167,127,241, 71,165,214,240, 2, 77,214, 54,136,232,245,111,255,206, 50,173,222,160,129,238,112,175, 67, - 31,203,144, 73, 94, 1, 80, 23,179,248,111,202, 98,214,230,209,227, 2, 58, 94,243,156,243, 75,239,124,107,239,206, 39, 39,207, - 30,241,216,238, 86, 53,144, 37,138,213,230,200,192, 67, 52,173, 91,159,162, 47, 11,117,154, 76,186,201,180,227, 36, 90,171,135, - 8,170,177,140,204,220, 76,181,203,169,148,162, 86, 1, 38,112, 53,171,117,112, 55, 17,113,231, 68, 92,251,154,114,118, 51,144, -151, 90,231,125, 77,241, 33, 7,133,192,110, 17,245, 30,130,145, 27,116,154,115, 41,133,128,190,212, 47, 93,185,116,118,107,187, -106,237,251,147,195,217,201,224,170,106,195, 80, 9, 28,135, 16, 1,140,105,168, 53,218, 12, 35, 93,174, 85,147,209,254, 52, 99, - 33, 82,221, 29,155,219,219,167,158,238, 30,237, 63,231,148, 2, 10,158, 58,211,154, 87, 38, 19, 29,106,183, 50, 93,223, 56,188, - 90,206,220,188,255,104, 24,116,210,137,153,119,146, 6,171,224,233,181,203, 47,237,237,237,185,123,199, 60,184,122, 72, 48,137, - 4, 24,138, 50, 81,151,100, 81,123,118, 36,102, 0,211, 46,207,250, 92,181,186, 75, 63, 12, 75,173, 51,168, 83,107, 95, 95, 18, - 14,243, 73,230,228,110,210,117, 54,215, 1, 69, 32,174,112, 40, 67,200, 17, 99,147,120, 49,114,128, 3,201, 73, 50,218, 67,217, - 83, 78,165,212,106, 21,205, 14, 78,129, 16,169, 77, 69,225, 20, 52, 75,230, 90,171,154, 78,114, 22, 22, 7, 74,141, 49,133, 59, -160,110,211, 73,215, 15,131,176, 20, 84,180,129, 82, 0,246, 96, 24, 99, 91,161,100, 24,107,210, 54, 22, 79, 98, 94, 97, 14, 51, - 18, 97, 33,174,108, 45,109,215, 58,119,200,157,152,107,169,224,248, 86, 18,194,164,154,136, 42,145, 3,106, 22,184,158,150, 17, -106,169,204,182, 68, 26,161, 0,225,237,203, 21,128, 15,129,108,200, 12,145,156, 18, 23,109, 25, 35, 25, 25,179,225, 58,111, 24, -108, 55,134,228,196, 90, 2,114,201,177, 8,241, 6, 38,111,200,125,114, 90,233,186, 69, 25,130,186,150,145,226, 77,144,146, 68, -118,136, 96, 76,172,230, 36, 2, 72,219,108, 70, 92,128, 27,199,133,163,118,167,142, 22,168,141,179, 46,177, 72,163,181,164,248, - 71,154, 72, 42,186, 64, 83,211,166,246, 10, 24, 97, 43, 54, 34, 36,150,219,116,119,173,110,205,109, 17,161,169,234,135, 39,179, -227,197,124, 53,183,201,223, 48,148,220, 9,179,104, 53,109, 78,129, 54,131, 33, 3, 51,143, 77,165, 0,106, 58, 49, 3,185,153, -224, 3,202, 76,236, 16, 1, 85, 12, 4,114, 50,114,210, 90, 57,181, 67,162,153, 69,144,156,132,152,217, 6, 68,194,220,133, 73, -131, 51,238, 81, 17,104,155,249,144,115, 54, 83,233,242,110,217,202,164,161,142,161,198, 30,112,114, 35, 18, 33,246, 6,215,183, -212,238, 47,238,204, 65, 34,139,208,126,109,156, 15, 34,171,253,254,253,157, 11,111,188,117,252,244,145, 85, 5, 32,121,194,204, - 58,148, 91,159,223,124,235,220,197,119,127,254, 23,212,122, 0,144,228,117,161,197, 38,107,235, 0,218, 60,203,253,206, 71,255, -187, 12, 11, 56,109,110, 95, 44,253, 81,233,135,141,203, 87, 0,236,222,191,253, 96,231,206,103, 95,220,222,216, 58, 7,162,183, - 95,123,253,184, 39, 0,107, 91, 23,188, 14,243,217,145,215,197,209,225,193,223,127,248,209,163,167, 79, 79, 78,250,215, 94,185, -250,251,191,253,157, 11,151, 47, 3,168,218, 34,165, 0,106, 25,224,126,243,123,127,172,165,182,156, 0,165, 23, 9,180,248,158, -160,148,161, 7,144, 39,147, 97,177, 96, 80,234,166,109,163, 97, 99,234,223, 65,196, 47,189,243,222,236,249,238,254,189, 91,161, -119,108,188,206,182,210,139, 4,191, 69,171,209,212, 68, 8,222,114,108,101, 81,220,209,177,148,190,248, 6,136, 69, 0, 17, 82, -245,162, 53, 80, 32,206,241,208,112, 1, 15, 69,173, 86, 51, 79, 41,157, 59,189,149,136,221, 2, 6,106,178,188, 86,153,214,210, - 3,150, 40, 1, 12,102,226, 68, 52,196, 95, 42, 19, 76,221,204,170,105,246, 4,171,215,175, 92, 91, 89,157,206,231,253,209,209, -241,241,241, 12,230,243, 97, 40,165,178,192,205, 72,146, 3,166,182, 24, 6,145,132, 17,222, 63,226, 76, 51,226, 70, 16, 45, 6, - 82,206,228, 10,130,159,187,248,210,241,193,222, 40,224, 32,225,156, 58,237, 86,214,207,109,108, 60,188,187,179,125,102,211, 21, -167,159,175,238,159,156, 16, 81, 74,132,156,115, 78, 90,202,133,237,179, 47, 93,188,120,231,209, 67,201, 29,233,130, 19, 80, 16, -222, 62, 34, 54,119,181, 74,192,202,218, 52, 29,114, 45,234,132,245,201,116,239,224, 80, 58,142,136,251,164,235, 98,244, 44,173, - 11,222,108, 65,226,172,104,155,224,201, 36, 67,169,198, 55,207, 68,164, 99, 65, 29,220, 44, 40,226, 2,138, 95, 1,153,168, 48, -147, 6,142,184, 29,157,115,142,167,139, 19,143,181,120,139,195,155,103,183, 64,200,134, 26,144,133, 84,105, 49, 44,144,115,203, - 10,155, 69,238,175,241, 24, 91,149,129,156,205,161, 68, 18,139, 57, 30,207,240,214, 30,248,206,224, 26, 79, 33, 39, 38,151, 64, - 2, 19,139,112,169, 53, 9,135, 75,183,155,164, 36,105, 96, 99, 30, 60,161, 21, 23,221,171,150, 85, 73, 24, 89, 98, 24,143,168, -113, 76,163, 81,204, 19,139, 5, 10, 36, 51,211,160, 85, 3,108,239,225, 45,103, 35,171, 6,141, 13,173,136, 17, 89, 41, 32,178, -198, 76,112,152, 83,131,137,114,215,101, 98, 34,166,162, 53, 94, 93, 17,115, 84,243,145,107, 27, 63, 37, 6, 81,238,196, 65,165, -184,194, 89, 90, 21,223,153, 4,174,174,195,208, 87, 97, 48,197,214,186, 13,157, 90, 96,151, 52, 4,167, 74,110, 32,246,196,194, -160, 44, 41, 94, 15, 72, 96, 35,102, 6, 39,182, 33, 66,237, 49,187,206, 76,148, 98,249,171, 8, 84, 79, 4, 9, 35,232,231,100, -193,153, 12, 12,164,214, 97, 88, 12,253,124,163, 91,101,146, 30, 62,237, 50, 49,169,247,222,210, 55,117,244, 46, 17, 64,106, 53, -132,104,204, 75,118,104,124, 34,117, 68,121,198,101, 95, 99,244,207,146,221,138,185, 17, 59,129, 85, 67,116,211,100,163,109,108, -165, 74, 41, 53,157,173,131,136,212,148,153,221,188, 33,240,165,121, 4,227,120, 96, 53,222, 34,237,160, 16,204, 5, 31, 61,102, - 4, 97,103,173,149, 70, 27, 31,143, 15,126,127,193,245,105, 20, 63, 26,245, 82, 86,203,162,159, 29,175,159,189, 96,166,253,241, -193,233, 75, 87,119, 31, 61,248,232,163,127,120,243,221, 95,228,210,215, 97,110,165, 46,142,246, 79, 95,186, 26,139,221,141, 11, - 87, 66, 42, 93,171, 30,238, 62, 56,127,253, 70, 74,147,245,237,243,253, 48,211,180,182,185,189,125,116,240,220,129, 31,126,244, -225,143,127,246,201,217,179,219,239,191,251, 77, 0,123, 11,112,119,250, 96,111,239,218,235,215,247,159, 61,190,127,251,214,229, -215,191,252,151,255,235, 79,239, 60,124, 48,201,242,187,191,250,238,191,249, 23,191,189,177,113,106, 40,218,206,232, 45,237, 67, - 90, 22, 7,143,118, 46,190,254,181,212,117,196,158,167, 43,107, 91,219,203, 31,119, 8, 96, 88,196,181, 30, 63,125,180,253,234, -219, 68,196, 93, 58,123,237,141,104,208,140,215,104, 39,166,139, 95,254,186,171, 62,249,244, 7, 17,187, 88,158, 9, 34, 65, 63, -226,152, 91,108,156,154, 44,186,245, 9,107, 85, 73,126, 56, 63,158,116,121, 66, 32,161,201,100, 34,228,197,117,168,218, 9,215, - 65,217,201, 92, 99, 4,198, 17,155,114, 75, 41, 49,131, 19, 17, 92,132,205,106,169,218, 34, 76,194,106, 77,172, 21,252,251, 40, -146,120,176,162,140, 22, 67, 95, 77,227, 64, 55,201,221,155,175, 94, 7,177,171,206,142, 23,139, 50, 24,124, 62, 91, 88, 27, 16, -202,133,243,219,193, 84, 95,244, 3,200, 97,214,118, 58, 44, 36,105, 4,175,142, 40, 30,130,103, 10, 78,233,169, 51,167, 55,206, -156, 43, 67, 15, 87, 34,135,115,226,220,117, 43, 86,212,170,150,161,156, 62,189,250,234,165,115,234, 58, 91, 44,200, 77,107,117, -162, 73,206, 41,175,188,241,202,245,213,149,213,150, 97, 50, 48, 32,137, 43, 60, 39,201,147,172, 14, 32,245,125,141,189, 92, 25, - 10, 51, 72, 48,159, 47,218, 67, 83,152,163, 73,199, 33,123, 14,148,181,240,216,251, 87, 83, 99, 48,113, 34,166, 4,168, 41,148, - 52, 50,109,238, 78,146,220, 44,222, 90,108, 20,183,231,198,253,243,198,139,106, 97,168,120,191,178, 59, 4, 66, 16, 32, 18,118, - 41,115, 18,137, 99,128, 90,220, 26,137, 73, 82,202, 78, 16,150,145, 61, 16, 40,100,103, 33, 82, 66, 76,182, 93,226, 65,232, 35, - 95, 98,168, 53, 34, 34, 60, 22,196, 35, 88, 1,135,217, 16,211,232,182,121,115,196,201, 20,174,209,186, 33,146, 86,185, 67, 76, -114,199,112, 97,100,247,154, 16,187,197,203,189,185, 13, 90,192,200,172, 84,173, 49,123,143,164, 82, 18,201, 62,134, 90, 70,105, -160,155, 58, 32,110, 18, 71,234, 20, 15,134, 72, 67,186, 6,206, 49,142,176,194,228,109, 4, 31, 31,153,217,201, 28,106, 57, 37, - 38,170,238,170, 26,241, 44,173,234,225,105,113,103, 64, 72, 0, 4,162,163,101,184, 26, 93,141, 84, 45,206,164,210, 86, 98, 80, -184, 58, 17, 83, 98,129, 59, 11, 17,168,154, 82, 24, 13, 41, 33, 68,190, 41,182,151, 68, 16, 18, 34, 73,203, 25,122, 91, 58,153, -153, 5, 52,222, 77,117,252, 78,240,218,202,250,114,213,200, 44, 16,105,157,225,246,164,110,211, 58, 48, 0, 14, 97,114,236, 4, - 2, 80,229, 94, 27,207,135, 25, 96,183,208, 47, 42,136,204,106, 28,175,193,130, 22,196, 36, 0,166,241,111,155,110,144,224,100, -206, 65,183, 38,119,183, 90,171,169,141, 63, 25,112,102,118,137,209, 59, 75,171,116, 45, 81, 69, 17,224,112,180, 1,168,123,137, -143,178, 26, 96,158,124,105,247,110, 35, 94,110, 41, 85,140, 13,105, 18,184,159,236, 61,221,186,124,181, 63, 58,218,249,228,199, -107,219,151,223,252,246,175,191,253, 75,212, 31,238, 63,219,249,220,212,136,229,249,221,207,183,174,190,250,242,215,223,175,125, -191,255,112,167, 91, 63,101,170,238,122,239,103, 63,184,124,227,171,215,223,251,101,150,164,101,120,186,243,197, 23, 63,252,251, -167,135,199,215,191,246,254,108, 62,188,255,238, 55, 78,159, 90,159, 87, 3,176,178,113,174,155,116,159,255,240, 71,231,175, 93, -253,165,239,254,243, 90,203, 95,255,249,159,255,199, 63,252,195,175,188,241,165,223,120,255,155, 23,206,157,233,135, 82,172,202, -116,153, 99, 12,160,184, 19,232,254, 79,255,254,226,141,111,188,250,254,111,179, 72,237, 23,123, 59,159,158, 60,123,216, 38,182, -113, 33,162, 10,200,195,159,125,255,242, 91,223,124,227, 87,190, 91,251,217,222,206,231,211,141,173,198,116, 24,113,218,167, 46, - 92,113,179, 87,127,233,187,241,199,223,187,123,243,249,221,155,203, 50,113,244,139,162,147, 22,229,247, 8,177, 4,146,233,100, -190,200, 41,151, 1, 41,119, 16, 33,224,204,230, 86,215, 65, 21,196,220, 54,180,109,152,171,166,213, 56,170, 41,180, 50,233,102, - 39,135,174, 43, 21, 78, 32, 53, 23,115,176,168, 41, 49,177, 16, 12,212,113,240,179,101,220,212,115, 48,235, 61,202,138, 92,180, - 76, 39,147,203,151, 47,186,121,169,229,164,159, 47,250,222,204,231,139, 69, 12, 84, 25,126,176,127,192, 76,110, 24, 6,141, 15, -220, 72,161,104, 1,181,216, 22, 5,183,136,148,189,143,232, 57,193,236,194, 75, 87, 78,142, 15,181, 22,162,196, 73,136,121, 50, -157,214,186, 56,119,249,210,179,221,167,147, 73,222,216, 44,175, 95,190,120,243,238,227,126, 88,172,173,159, 34, 80, 39,137, 72, - 79,157,222,124,237,218,203,183,110,223,141,224, 17, 66,113, 76, 73, 29,193, 96,139,190, 99,252, 88, 34,157,184, 54,153,150, 50, -171,142, 97,168, 2,234,171,166,228, 68, 2, 11,204,122, 92,152, 68,136, 84, 0, 70,240,171, 34, 96, 80,220,146, 41,117, 73,135, - 32,163,183,229, 4,161,153,124,204,220,130, 19,239,144,148,100, 32, 8,215, 90,115, 74,110,181, 85,249,154,236, 38,181,248,104, - 12,149, 99,232,105,190, 58,233, 74, 81,117,133,138, 72, 42,181,154,153, 86, 13, 18, 1,153, 36, 22, 35, 31,223, 35, 45,114, 11, - 98, 51,235, 68, 82, 27,117, 71,189,205, 99, 31,199, 52, 66,250, 0,105,199,177,224, 62, 33,108, 67,196, 52,250,234, 9, 68, 41, - 37,117,184,154,112,200,206, 42,136, 2, 66, 91,212, 90, 57,158, 95,184, 65,199,139, 66,112,216,199, 1,131,153,176,180,211,138, -141, 54,244, 86, 49,133, 75,195, 25,117, 41,141,191, 34,185, 69, 9,147,189, 61,135,109, 73,104,138, 73,164,116,185,246,125,152, - 14,172, 33,234, 3, 20,132, 49, 79,205, 68, 96,225, 23,231,167, 38,130,107, 68,132,134, 56,105,227,166,120, 73, 26, 70, 76, 49, - 49, 9, 81,151,146,170, 18, 25, 16,164, 70,143,211, 82,116,123, 9,137, 66, 87, 31,207,189,182, 9,227,208, 37, 22, 84, 0,194, - 76,204, 33, 91,105, 75,139,160,117,186, 85,167, 48,173,199,224,220, 3,192,197, 60, 42,172,221, 28,166, 62,174,175, 91,126,166, -189, 32, 89,220,219,133, 36, 86,179, 60,126,195,136,201,213, 34,120, 4,114,115, 99, 97, 19,113, 32,212,136,161,118, 0,165,112, - 53, 5, 26,158, 60,164, 54, 77,132,222,248,148,176, 80,223, 26, 49, 92,163, 60,209, 46,227, 97,172, 80,103,118,119, 79,173,137, -211,184,219, 99,236,207,189, 14,253,189,159,124,127,196,133, 81,127,112,176, 55, 12,159,253,244,163, 59,183,111,189,243,205,239, -228,197,124, 24,230,230, 81,228,133,187,149,126,241,240,227, 31,170, 86,184,173,156, 62,163,125, 95,106, 61,125,118,251,193,206, -103,183,126,244,193,217,237,211, 71,123, 7,125,153,237, 61,126,252,143, 31,127,114, 50,171,248, 15,255,254,189,111,188, 89,157, -247,251,156,147,124,244, 87,223, 19,242,167,143,238,221,251,226,211,219,255,245,254,189, 71,143,159, 28, 28,108,174,173,254,193, -119,127,227,171,111,190,106,138,121, 25,224, 32,150, 50, 63,252,201,159,252,231,102,150,106, 18,100,114,215,135, 31,127,255,209, -205, 15,199,118,151,131,104, 56,126,254,147, 63,251, 47, 2, 33, 50,115, 6, 72,251,114,247,163,191, 29,229, 60,216,223,249,156, -128,225,248,232,230, 95,253, 81,128,252, 62,249,139,255, 6, 2,115,114, 55,152, 82, 88, 32, 90,188,110,188, 29,191, 0,121,182, -174, 81,116,109,250,126, 96, 78,211,149,116,170, 42, 85, 85,179,195,147,227,203,211, 51,193, 15,138, 43, 86,213, 42,108,139, 69, -169,181,210,164,235,251,162,196,235, 43,147,231, 7,213, 65,181, 70, 0, 32,209,120,127, 38,103,146,228, 4,129, 65, 36,116, 0, - 35, 59,200, 18,226, 68,236,211, 46, 31,157,204, 94,190,112,113,235,244, 86,169, 54, 59, 58,217,127,190,223,247, 37,178,101, 52, -186,232,135, 90, 87, 87,166, 46,172, 86,151,132,161, 38,161,110,252, 33,113, 15,174, 0,135,183, 56, 62, 16,234, 88, 89, 93, 59, -179,125,254,209,189, 59,121,146, 97, 68,156,172,106,206,147, 90,135,173,115, 91,183, 62,185,181,214,229,107,151,206, 63, 63,153, - 63, 63, 58,153, 84,235, 18, 83,146, 9, 39,131,191,254,202, 43,251,207, 15,119, 30, 60, 72, 57, 49,216, 25, 73,152,133,135,161, -182, 61,113, 85, 8,133,102,152,133,215, 86,167,197,181,239,135, 65,121,168,133,136,125, 84,101, 4,206,148, 5,194, 12, 98,152, - 6, 19,187,168, 59, 69,126, 48, 38,239,112,144,144,120, 99, 21, 54, 22, 58, 51,197, 89,146, 40, 94,104, 81,108, 33,115,165,160, -142,152, 6,241,207, 91,219, 68, 64,168,104,176, 72, 54,113, 87, 6,171,151,140,140,145,102,105,106, 6, 87,173, 76, 46,137, 60, -202,180,164,129,125,229,176,144,197,153, 58,204, 44, 3,121, 99, 27,143, 17, 46, 71,102, 25,172,142, 72, 50,128,194,170,161,220, - 56,166, 81, 71, 50,192,152, 5,134,156,185,103,247,232, 49, 49,147, 67, 93,217,157, 71,130, 91, 28, 64,150,243,133, 64,201,197, - 33,175,129,100,131, 66, 79,237, 32, 52,174,218,131, 19,140, 68, 92,200, 96,206, 32,173, 37, 75,138, 20, 35, 9,199,100, 88, 70, - 50, 24, 51,192,232,144, 72,196,107, 37,131, 51,132,152, 25,165, 22,170,141,142,101, 60, 70, 2,153,114, 74,110, 24, 34, 14, 28, - 1, 75,129,215,200,143,195,105,132, 32, 6, 72,134,217, 85,251, 90, 88,132,205, 19, 19,152, 77, 85, 56, 85, 12, 68, 20,245,197, -102,100,116,175, 26, 36,151,198, 34, 30, 19,112, 78,209,244,118, 11,204, 67,252,189, 16,145, 80,106,169,209,241,108, 93,130, 33, -175, 30, 49, 82,107,206,177, 38, 9, 51,107, 20, 29, 39,114, 48, 3,213,156, 65, 28,104, 48,150, 32,196,185, 27, 80,199,118,141, - 71,165,195,105,132,158, 8,195, 93,132,212, 28, 78, 70,177, 28,111,246,152,240,109,140, 18, 50,114,119, 23, 19,106,221,127,201, - 89,107, 13,133,160,186,152, 43,183,135,161,112,100,122, 89, 35, 92,155,162,130,218, 18,159, 34, 36,113,180,105, 89,145,230, 13, - 21, 57, 56, 56,248,236, 31,254,118,178,117,238, 87,127,231,247,178,247,243,254,164,197, 45,178, 16, 92,135, 66,221, 36, 73,210, -147, 99,202,221,217,171,175, 29,237,237,110,158,191,180,255,108,119,101,243,194,233,173, 51,143,119,110, 61,127,242,232,225,131, -251,159,221,190,119,230,204,217,239,188,255,250,116, 50,157,171, 88, 62, 61, 93, 93,101,161,195,103,143,158, 62,121,112,239,222, -189,187,247, 31,223,125,252,104,177, 40, 63,255,230,245,223,252,206, 47,156,221,218, 90, 28,247,222,206,154, 2, 88,160,142,208, - 20, 23,225,163, 98, 71, 6,212,181, 18,103,247,138, 86, 63,102,110,212,132,224,220,136,107,117, 66,124,156,199,201,165,183,108, - 90, 67,101, 7,206, 63, 10, 0,210, 46,240,141,237, 23, 71, 48,103,137,123, 55,198, 95,220,227,240,127,112,120,204, 73,146,105, - 74,105, 24, 6, 55,215, 82,224,158, 88, 82,115,248,197, 73, 44, 13,117, 14, 38,175,186,127, 56, 35,243,148, 36,115,102, 98,120, - 77,194, 91,155,167,142,143,103,214,156, 69,198,209,180,178,246,187,165,166, 42, 4, 88, 0, 75,145,240, 51,152,234,229,203, 23, - 87, 86, 86, 13, 86,181, 28,158,204, 13, 40, 67,169,110, 81, 98, 25, 67, 0,142, 90,251, 82,252,133, 75,156,150,233,156,118,138, -179,118,228,140,152,138,143,193,177, 51,103,183,159,239, 62,209, 58, 64, 38, 57,101,115,168,100,114, 76,186,233,230,214,230, 52, -167,167, 79,159,191,122,233,252, 79,251, 7,125, 63,155,166, 83, 0,166, 43,211,162, 53,165,252,229, 55,222,120,182,255,172, 31, - 10,187, 73, 27,173, 17, 51,101,206, 65,197,142,179,237,250,164, 59, 56, 89, 36,145, 51, 27, 27, 7,135,199, 60,232,104, 30,183, -209, 59, 17, 0, 36,214, 80, 15, 3, 9, 94,204,132,161,106, 32,114, 50,226, 36, 76,113, 88, 34,132,190,131, 36, 22,156,113,148, -174,198, 34, 78, 12,211,208,217, 4,164,181, 77, 27,150,214,178, 70,136, 33, 50,168,169,116, 68,201, 93,173,175, 37,166, 88,169, - 75,165,239, 23,195, 16, 10,100, 87,175, 14, 46, 90, 59, 13, 96, 31,141,177, 36, 22,104, 29, 5,196,106,129,123,137,103, 36, 76, -201,101, 50, 73, 66, 60,104,227, 14, 6,110,207,212, 74,210,118, 2,108, 58, 31, 3,132, 29, 39,139,121,150,245,204, 89,109,201, -161,164, 6,140,165,118, 60,133,153, 91, 20,244,219,143,174,253, 25,153,200,156,140, 40,145,144,164, 44, 96,141, 91, 74, 43,166, - 34,120, 62,198, 68, 41,117, 97,174, 10, 26, 98,230,128, 49, 40, 51, 13,145,183,246,134,253, 77, 83, 78,146, 74,173, 96, 23,201, -170, 10, 71,102, 57,172, 1, 67,179, 48, 2,198, 71,177, 47, 26, 78, 15, 52,213,219,178,139,132,198,117,111, 51, 39, 0, 16,145, - 36,169,203,169,168, 66,220,137,166, 41,153, 54, 44, 0,128,148, 40,107,106,140,123,119,175, 65,139,107,208,194,241,255, 81, 68, -168, 90,208,226,136,152, 29, 72, 57,149,170,213, 12,170, 64,141,207,201, 32, 60,159,205, 35, 10, 80,204, 18,231,150,217, 82, 39, -130,113,139, 75, 80,188, 66,194,221, 22,170,119,230,112, 49, 47,145, 24, 34,174,234,106, 42, 17,221,105,187,126,107,169, 74,144, -228,228,181,214,170, 13,211,219,128,100,205, 28,191, 20,242, 5, 60, 76, 3,101, 70, 74, 53, 80,239,205,221, 42,206,106, 42,204, - 62, 86,246,169,165,130,145, 26, 98, 45,238, 38,203,219,145, 53,205,101,151,167,243,197,252,167, 63,248,160, 31,252,250, 91, 95, -189,120,110,187,214,210, 43,218,202, 37,248, 12,222,238, 71, 23,222,120, 71,114,231,102,179,231,187,183,127,250,209,116,101,117, -232, 23,171, 43,107, 95,252,228, 43,248,243,154, 0, 0, 8,156, 73, 68, 65, 84,195, 71,143, 30,126,126,235,206,188,214,175,190, -125,227,242,249,237,234,124,100, 43, 41,175,117, 93,118,235,247,246,158, 62,188,127,231,222,189, 71,183,118,118,238,237, 62,189, -112,118,235,247,127,247, 59, 95,190,254,178, 57,205,102, 71, 96,176, 79, 70,170,148, 47,151,108,228, 62, 54,115, 26,157,147, 44, -156, 39, 13,187,227, 80,166, 73, 43,237,186,155, 13, 8,225, 88,179,132,155,105,184,191,157, 44, 57,233,152,160, 82, 11, 94, 68, -219, 68, 52, 74,112,220, 42,151,131,194,224, 50,196, 87, 49,250,109,243,249,176, 58, 93,113,232,238,243, 67,214,128, 16,176, 48, -159, 44,230,107,235,171,153,211,188, 95, 12,181, 6, 76, 99,194,220,247,243,121, 25,114, 74, 73,186, 73, 55, 97, 66, 53, 53,245, -149,233,202,124,182, 48, 51,211, 90, 77, 39, 35, 47, 9,238,137,216,200, 61,234,195, 14, 85, 45, 42, 29, 11, 17,117,147,201,181, -171, 87,136, 65,213,251,190, 63,156,157,152,217,188,159, 91,160, 6,199,101,133,177,131,169,246,125, 59,228, 97,201, 98, 90,110, - 43,146,179, 3,234, 49, 53,136,109, 28, 1,238,221,250,250,230,214,153,199, 15,239,117,156,107,109,176,214,201,116,117, 49, 63, -217, 62,127,238,217,147, 39,167,183, 54,119,251,221,139, 91, 27,119,118,159,205,250,197, 70,183, 66, 66, 19,238, 22,165, 92,185, -116,229,198,171,111,252,232, 31,127,234, 34, 0,245,165,108, 76, 38,166,150,196, 93, 48, 12,101,222,151,193,117,139,166, 73,104, -190,232, 39,171, 43, 27,235,171,245,240,100, 88, 12, 97, 12,119,247,190, 12,113, 10, 13, 34,183, 99,156,116,142, 56,120,143,221, -107, 41,121,210,113, 76, 26, 97,238, 45,176,204, 49,100,112,113, 40,212,147, 67, 99,130, 65,148, 57,113,252,156, 57, 6, 58, 75, - 96, 55,194,188, 56, 91,244, 96, 89,235,152, 76, 8,112, 87, 51,114,243, 82, 43,136, 84,181, 86,173, 33,231, 38,117, 64,173,146, - 1,169,201,231,196, 56, 42,114,177, 0, 0,180,233,225,188,101, 92,114, 74, 85,151,162,122, 52,225, 9, 32, 76,137, 18, 24, 49, -116,137,246,103, 52,245, 85,235, 8,140,142,216, 30, 73,130,169,215,106, 17,206,116, 2, 39,193, 64,158, 64, 64,158,228,113, 8, -221,214,127, 65,110,169,213,205,200,152,196, 25,170, 17, 0, 34,137,236, 24, 98, 12, 83, 53, 30,107, 17,174, 55, 13,224,170,107, -244, 42,221,145,136, 37,177,187,197,201,134,217, 20,110,234, 43,147, 28,238,202, 86, 89,111, 79,154,104,168, 81, 69,107, 99,142, -121,161,118,115, 49, 51,112,128,229, 65,236,166, 90,147, 8, 51,218, 97, 20,234,193,106, 79,210, 15,230,241, 66,106, 41,244,192, -229,147,139,193, 57, 46, 49,241,163, 96, 78, 34, 67,173,204,108, 49,134, 12, 6, 60,188, 22, 99, 43, 49, 69,119, 51, 55, 47,102, - 76,210,142,244,112,243, 81,126,180, 4, 85,142, 51,153,165,152,172, 25, 90,219,213,175,137,145, 53,140, 89,204,110,227,226,187, - 82,100,106, 99, 90, 91,180,152, 6,114,180,169, 83,213, 77,173,198, 60, 61,196,200,241, 98, 86, 0,213, 56, 17,131, 92,141,164, - 41, 5, 56,158, 77,202, 32,130,151,246, 27, 73,188, 45,144, 90, 74,159,154,230,111,185,195, 78, 57, 17,248,246,167, 63,187,179, -179,115,249,229, 87,190,113,227, 70,173,253,124, 49,151,148,184,155, 80, 69,117,135,215, 88, 86,104,173, 39, 79,238, 31, 63,219, -157,174, 76, 14, 14, 15, 57,229, 73,110,130,191,231,143,119, 62,254,228,230,206,131, 39,151, 46,156,251,246,235,215,114,226, 89, - 97,205,167,243,100, 53,179,159,156, 28, 28,238, 61,185,115,247,238,237,187,247,110,221,127, 52,235, 23,239,127,229,203,191,243, -171,239,173,175,175,149,197, 0,102,131, 91,165,148, 45,130,187,129,229,106,163,133, 23,214, 98, 29,189, 36, 68,174, 4, 5,139, -123, 2,200, 92,185,193,166,157, 96, 49, 91,140,178, 0, 17,113,146, 17,208,163, 24,201,181, 16,110,232, 16, 10,243,120, 3,238, -216, 40, 86, 48,179,145,136,194, 60, 30,241,224,126,178,152,119,147, 73,223, 47,200,209,137,232,164, 75, 89, 42,212,205,230,179, - 69, 62,179,237,238,205,201, 64,204,174, 7,243, 69,104,198,132,169, 47,139,117, 94, 67, 43,203, 72,206,146,153,247, 79, 74,169, - 53, 5,251,134, 9,238,149, 91, 85, 46,181,241, 51, 17,144, 37,131,124,117, 58,185,114,225,162, 86,168,149,253,131,253,217, 98, - 97,102,181,212, 49, 71,180, 12,137, 1,224,197, 48, 31, 85, 73,241, 21,214,229, 27,190,121,115,149,169,115, 36,248,162,173, 96, -227,173,120,238,165, 43,207,159, 62,113,114,102,192,157, 57,165,233,116,226,245,248, 96,191, 46, 22,167,206,157, 91, 61,181,182, -237,120,122,120,188,176, 90,181,244, 53,173, 79, 38, 43,220,169,251,141,215, 94,223,185,127,127,247,249, 62,179,176,136, 72,118, - 31, 74, 25, 68,114,202, 44, 32, 53,127, 54,155, 79,146,172, 77, 39,139,170, 29,115, 74,236, 68,149, 52,187, 56,172,147, 28,141, - 70,142, 26,104,212, 63,226,113,108,177, 38, 8, 56,159, 21, 53, 34, 98, 39, 35,114, 98,131, 10,195,137, 52, 16,154, 36,181, 86, - 16, 18,167, 34,201, 2,141, 47,156,146,212,226, 74, 22, 29,206, 16, 7,179,155,185, 50,185, 89, 45,166,102,117,101,186, 82,230, -138, 68,139,190, 23,150, 69, 25,138, 22, 39,147, 80,100,190, 96,113, 53,195, 96,116,148,212, 61, 59, 37, 22, 78,201, 23,101,132, -133,180, 13,160, 85,213, 90, 70,110,108,216, 72, 12,196, 57,119, 73,132, 8,169, 75, 14,157,247, 14, 18, 6,173,173,174, 74, 40, - 12,163,113,100, 10, 36, 15,255, 52, 25,185, 26, 68,192,161,181,139,164, 38, 49,179,147, 54,146, 92,144,223,168, 89, 97, 25, 28, -228, 91, 22, 88, 35,133,147, 90, 75, 4,130,226,165, 64, 28,128, 45,111, 71,202, 6, 34,111,124,139,192,198,153, 69,238,223,153, - 72, 58, 54,109, 22,241, 54,173,110,243, 28,206,146,152,201, 84,107, 59, 5,195,213, 41,108,222, 12,179,101,154, 52, 80,204, 34, - 1, 24, 16,113,173, 14,241,177, 4, 33, 68, 33, 64,135, 32,176,199,196,146, 88, 76,107,175,117,249,194, 28,189, 67,226,134, 76, - 73, 49,180, 4, 10, 67, 40,129, 76,173,186, 43, 83,106,197,150,120,135,150,202,156,156, 20,206,109,245, 30, 55,103,231, 24,175, -141,248,223,136,228, 51,189,192, 36,197,219, 57,218, 72,109, 19, 59,154, 54, 20, 68,170,206, 44,102,113,250, 10, 49,129, 49, 68, -181, 90,228, 92,204,226, 52,217,130,203,106, 66,176, 70,129, 52, 18, 6,132,199, 7,160,153,241, 72, 5,211, 26,146,239, 6,158, - 79,141,198, 28,140,177, 88, 42,229, 21, 66,189,127,111,231,254,206,206,116,245,212, 55,191,245,203,235,235, 43,139,249,113, 80, -154,172,154,152, 27, 12,163, 57, 79,235, 80,251, 69,154,174, 77,214,214,143,143, 14, 37, 79, 78,109,157, 57,122,246,120,152, 29, -124,241,249,167,159,223,222, 73,210,189,251,149, 27,219, 91,155,213,232,168,116, 60,221,156,164,206,189, 60,221,125,188,251,248, -225,157,251,247,111,221,189,255,232,217,254,217,211, 27,191,247, 91,191,252,213,183,174, 27,104, 24, 10, 73,203, 38, 38, 33,184, -142,113, 19, 90,174, 77, 98, 51, 76,206,227,138,216, 65, 9, 17,186,119,129,155,147,196,140,161, 33,224, 99,202, 99, 70, 75,251, - 76, 60,200,195, 91,235, 75, 70, 77,155,224, 7, 19, 19, 32,119,109, 15,244,246, 3,141,233,237,139,106, 50,204,157,188,239,139, -164,236,139,217,100,146, 89, 61,250,166, 9,196, 34,139,249,108,177,152, 29, 29,167, 50, 20,139,160,165,164,121, 95,219,153,209, - 12,134, 44, 73,137,163, 5, 24,229,133,162,197,153, 73,154,221, 32,102, 13,193, 17, 36,106,148,174,101,240,121,115, 99, 99,115, -115, 83, 50, 47,142,202,243,131,253,170, 86,172, 46,202, 64,198, 4, 93, 90,116,195, 10, 95,251, 1,169,245,236, 98, 14, 97, 80, -166, 68,144,101, 90,218,213, 97,113,244, 89,126, 67,104,186,190,113,233,234,181,123, 59,183,147,100, 14,176,179,214,174, 91,157, - 78,231, 87,190,244,165,157, 59,119, 55, 79,175, 39,248,171, 47, 93,248,201,237,251, 10, 63,181,182,234,206, 89,200,107,221,220, - 56,253,213,119,126,238, 79,255,230,175,212,172,203,185, 88, 13,225, 14,224, 66, 60,201,210,173,118,139,162,100,186,182, 58,173, -199,115,115, 90,201,147, 35,204,225,148, 83,170,170, 57, 11, 17,143, 39,161, 86, 19,143,153, 67, 69, 52,183, 74, 11, 73, 66,153, - 26, 56,222,213,152,205, 3,221, 8, 50, 80,230, 96, 6,135, 10,144,216,189,160,186,117, 66, 16,242,242,162,125, 14, 7,204,192, - 78, 93,158, 40,188, 31,234, 88,107, 68, 34,234,189, 82,244,107, 0,226, 84,225, 18,197, 83,143,112, 72,236, 9,149,219, 53,208, - 33, 44,146, 56,150,136, 22, 91,157,176, 20, 81,169, 53,190,152,141, 91,202,204, 36, 17, 30,141,109,190,155, 17, 88, 43, 66, 31, - 52,153, 76,180, 86,196, 66,216, 93, 88, 84,149, 69, 96, 36, 36, 5, 46, 30, 66,201, 23,241, 87, 4,196, 0, 2,243, 10, 11, 90, -161, 7,200,254,159, 36,199,199,250, 72,232,215,131,167, 70, 34,210, 15, 67, 29,124,210, 37, 2, 59,143,101,250,165,222, 0,122, -116, 50, 3,241, 16, 35, 56, 94,129,130,147,180,217, 56, 8, 76, 99,147,142, 34, 13, 19,201,194, 37,194,138, 67, 99, 62,246,239, -227,204, 25, 27, 12, 18, 8, 17,187, 83, 11,145, 0,230, 85, 3, 44,236, 89,196,220,234, 80, 16,120,140,120,195, 48,147,209, 56, -202,140, 99,186,186, 67, 85,227,189,200,227, 8,160,148,194,164, 90,157,137, 18,203, 96,166,214,140,126,188, 84, 65, 4, 7,137, -150,208,126,199, 11, 96,157,144,187, 70, 26, 42, 44, 35, 22,190, 60, 39,110,243, 0,110,111, 43,113, 87, 55,231, 68, 68, 84, 77, -205,156,184, 9, 4,221,169, 90,148,252,218,181,165, 97, 27,204, 1, 87, 55, 14,229,112, 59,227,194,221,139, 25,179,120, 88, 31, -218,205, 34,164, 97, 48, 67,102,114,248,255, 3,163,186,128,162, 44,159, 39,191, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, -}; +137, 80, + 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, + 0, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218, +157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, + 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33, +162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150, + 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, + 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1, +128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, + 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, + 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0, +192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60, +241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, + 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174, +206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179, + 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126, + 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252, +247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11, +255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255, +100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0, +242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, + 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, + 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104, +134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98, +138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, + 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185, +168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62, + 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172, + 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, + 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, + 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233, + 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242, + 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168, +161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104, + 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199, +136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111, + 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143, +169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111, + 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13, +171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243, +148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, + 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, + 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191, +110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179, + 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145, +185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, + 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183, + 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173, +157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219, +174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, + 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203, + 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228, + 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89, + 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87, +173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183, +203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248, +122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144, +173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142, +112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, + 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252, +237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, + 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, + 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158, + 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178, +254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87, +102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75, + 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171, +237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79, + 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153, +220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223, + 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84, +244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85, + 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253, + 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141, +156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66, +154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, + 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111, +239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234, +116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189, +121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238, +173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6, +133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207, +100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253, +234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124, + 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 6, 98, 75, + 71, 68, 0,255, 0,255, 0,255,160,189,167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, + 24, 0, 0, 0, 7,116, 73, 77, 69, 7,219, 8, 10, 15, 54, 11,254,114,226, 41, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189, +121,212,101,103, 89, 39,250,123,167, 61,156,225, 27,106, 72, 85, 66, 37, 49,149,129,132,132, 41, 21, 6, 1, 21, 72, 33,160,226, +132,137, 99, 59,155,216,186,188,182,182,146, 92,180, 23,246,242, 98, 19,187,111,115,219,123,181, 37, 42, 44,245,218, 10, 81,161, +165,175,136, 41, 71,104, 90, 66, 42, 4,130, 16, 8,169, 36, 36, 33, 73,205,223,116,134,189,223,225,254,241, 60,239,217,251,156, +250,230,250,190,202,224,254,173,117,214, 55,156,115,246,222,239,244,204, 3,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, + 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104, +208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26,156, 19,168,115,124, 63,193,175, 12,192,126, 33,176, 27, 64, 15, + 64,201,255,111,208,160, 65,131, 6, 13, 26, 60, 11, 32, 0, 72, 33,112,217,187,127,234,250, 63,121,248,247,127,226,232,163,127, +116,211,137,223,249, 55,111,250,239,137, 18, 7,106,159,105,208,160, 65,131, 6, 13, 26, 60,195, 53,117, 1, 32,121,199, 15,191, +242,157,183,126,215, 53, 63, 56, 83, 12,218, 83,211,173,252,218, 87, 92,250,252,111, 63,112,201,193,187, 62,255,208,147, 79,156, + 26,126, 9, 64,104,152,123,131, 6, 13, 26, 52,104,240,204,102,234, 18, 64,235,205,215,180,223,250,154,221,226,154,226,232, 81, +216,147, 39,224,251, 22, 23, 92,113,225,236, 13,215, 95,243,150,163,167,230,212,189, 15, 28,255, 12,128,126,195,216, 27, 52,104, +208,160, 65,131,103,182,166,158,254,237,125, 39,158,188,234,130,244, 69, 47,186,108,247, 94,148, 30,126,225, 20,252, 98, 15,157, +243,118,234,111,189,254,197,223, 48,147, 39,151,127,244,174, 35,159, 6,112,162, 97,236, 13, 26, 52,104,208,160,193, 51,147,169, + 3,128, 8,192,194,159,126,234,216,189, 78, 23, 59,191,254,170,189, 87, 24,101,224,122,139,240,167, 79, 3, 89, 27,175,122,245, + 85, 87, 29,188,106,223,107,255,254,222, 47, 63,124,122,169, 60,210, 44, 81,131, 6, 13, 26, 52,104,176,126,237,249, 92,223, 47, + 3, 48, 13, 96,223, 91,175,155,254,161,223,254, 87,215,253,248,174, 86,146, 21, 75, 67, 64, 25,136,125, 23,195,236,219,135,167, +158, 56, 49,255,243,191,241,145,255,240,223, 14,125,233,183, 0, 44,240,247,195, 51,121, 50, 67, 8, 7, 0,204,242,159, 71,132, + 16,207,105,161,228, 95,218,120, 27, 52,104,208,160, 97,234,203, 67, 2,152, 2,176,231,146, 89,245,173,255,227,103, 95,246,243, + 87, 93, 48,179,183,236,149, 0, 60,176,247, 34, 36, 23, 93, 12, 27, 60,222,249,190,255,249, 7,191,242,187,127,247,203, 0, 30, +229,231, 61,107,198, 30, 66,216, 15, 96,255, 58, 63,126, 74, 8,113,120,157,215,189, 19,192, 65,254,243, 86, 33,196,109,207,113, +166,254,156, 24, 47, 11, 39, 7, 89, 64, 57, 80,123,235, 48,128, 35, 0,238, 16, 66,156,218,130,251, 76, 94, 31, 91,189, 7, 27, + 52,104,240, 47, 27,250, 44,152,178, 7,208, 61,127,202,188,240,162, 89,179,211, 5, 41,198, 36, 5, 1, 72, 41,132,143,255, 17, +244, 37,168,209,187, 26, 64,171, 95,248,254,191,253,240, 67,127,245,127,190,245,234,111,191,114,239,212,140, 45, 3,112,234, 56, +202,118, 27,106,199,121,120,199,205,223,240,131, 47,223,127,193,243,127,240, 93,119,252,226,241,249,226,227, 91,196,216,111, 0, +240,174, 13, 16, 99, 0,184, 3,192, 33, 33,196,237,205,182,121,206, 88, 25,110,224,215, 74, 2, 94, 20, 88,222, 19, 66,184,157, + 5,151,179, 97,238, 7, 0,220,185,137,239, 29, 2,240,134,102,213, 26, 52,104,176, 29, 76, 93, 0, 16,221, 84, 30,248,175, 63, +248,146, 95,251,150, 23, 93,248,218, 86, 75, 39, 65, 40, 64, 8, 64, 10, 64,242,239, 90,209,223, 74,142,222, 19, 74,211,255,132, + 0,132, 4,164, 68, 0,130, 11,194,123,173, 33, 71,255, 23,240,174, 68,232, 11,188,249,141, 87,190,226,240,243,127,242,207,126, +242,215,255,252, 29, 31,249,228, 99,239, 3, 48,196,185, 55,197,223, 0,224,134, 16,194, 13, 0,110,220, 10,205,173,193,211,138, +187, 55,248,249,155, 0, 28, 12, 33,220,216,104,205, 13, 26, 52,120,174,105,234,187,127,239, 71,175,125,247, 13,175,218,255,117, +182,231, 0, 47, 32, 36, 23,139, 11, 18, 8,130,148,121,207,172, 55,176,134,238, 1,120, 15, 40, 5, 33, 88,117, 15, 0,132, 16, + 82, 10,133, 16, 70, 90, 61,177,236,128, 0, 1,219, 43,113,209, 69,187,118,255,233,127,252,161,255,231,127,255,173, 67,151,255, +198,159,124,242, 63, 0, 56,182, 69, 90,123,212,132,176,134,182, 86,255,251,206, 16,194, 27, 26,198,254,156,193, 97,144, 37,230, +176, 16,226, 16,107,242,179,188,214, 55,213,246,192,126, 0, 31, 8, 33, 92,183, 69,107,127, 59,200,188,191, 22,154,125,214,160, + 65,131,237,211,212, 83, 35,246,191,254,202,243, 94,134,165, 18,174, 63, 0,188, 39, 38, 29, 45,235,177, 24,108,252, 27, 1, 80, + 18, 98,215, 30,210,210,125, 0,164, 7, 60, 91,241,133,228, 75, 7, 64, 6,192, 59,210,246,157, 27,197,231,219,161, 69,203, 24, +249, 95,126,241, 91,126,238,101,151, 95,248,194, 31,127,215,159,191,109, 88,250,123,183,130,177, 11, 33, 86, 53,109,178,118,254, + 46, 84,102,218, 3, 76,236,111,107,182,208,179, 26,183, 3,184,125, 57,205,155,153,246, 29, 0,238, 8, 33,188,135,215, 59, 50, +246,173, 90,251, 59,162, 16,209,160, 65,131, 6, 91, 1,185,137,239,168, 97, 25, 78,252,197,125,143,126, 18,114,128, 52, 41,145, +182,128, 36, 15,252,242,213,239, 89,128,145, 67,192, 21, 64,214, 33,147,187, 39,166, 29,198,216,112, 9,248, 2,240, 3, 32, 12, +249,239, 1, 16, 74, 98,240, 33, 0,193,195,186, 0, 63,116,248,129,183, 94,123,240,158,247,253,235, 15,189,240,226,217,239, 4, +177,125,185,157,147, 36,132,184, 3,228,211,172,107, 76, 55, 52,219,231, 89,141, 55, 8, 33,110, 94,143, 41, 93, 8,113,243,132, + 70,125, 75, 51,125, 13, 26, 52,120,174,104,234, 0,112,226, 71,127,247,190,119,252,213,167, 31,249,206, 43, 46,158,186, 88, 0, +210,135,224,153, 4,194, 5, 10, 45,235, 15,173,188,246,194, 93, 47,184,241,235, 95,188,223,232, 84,122,239,217,223, 14, 98,236, +195, 37, 8, 45, 32,246, 93, 3,185,227, 10,160,181, 7,194,116, 1, 87, 32, 12,143, 35,244,190,138,112,226,139,128,235, 3, 50, + 7,224,224,131,130, 95, 42,240,130,171, 47,188,232,163,191,253, 99,191,247,166,159,126,175,250,236,145,147,127,134, 42,120,111, +187, 24,251,145, 16,194, 29, 53,141,237,192, 86, 92,119,153,136,232,195, 91, 20,105, 93,143,240,223, 84,186,217, 86, 92,227, 92, +140,119,226, 57,215,117,189, 77,104,200,183,163, 10,174,156, 13, 33, 28,104,124,235, 13, 26, 52,120, 46, 48,117, 7, 96, 9,192, + 23, 62,112,120,254,221, 56, 60,159, 99,249, 34, 54, 59,127,232,245, 23,253,216,155,175,187,230,252, 68, 26,233,124, 32,211,123, +127, 8, 12,151, 0, 55, 15,249,252,215, 64, 94,245,189,144,231, 93,113, 38,209,141,191, 44, 29,131,123,242,159,224, 31,255, 71, + 8,145,146,214, 46, 4,108,191,192,249,123,119, 77,127,248, 63,255,240,111,190,234, 71,127,235,228,227, 39, 7,127,139,173,243, +177,175,132, 45,201,195,102,198,118, 19,107,251, 7,150,121,255, 8, 42,211,240,169, 21,174,241,174,218,119,239, 16, 66,220, 94, +187,238, 77,152,136,232,230,107,222,182,158,232,253, 16,194, 77,172,141,238,223,232,115,109,199,120, 87, 25,235, 45,124,221,217, +218,199,183, 43, 82,124,146,129,207, 54,228,163, 65,131, 6,207, 5,166,238, 1, 12, 0, 88, 80, 81, 24,133,154, 7,157,153,234, + 11,222,247, 83,175,248,149, 31,126,237, 21,175,245, 5, 96,157, 7,202, 33, 66,127, 17,176, 3, 64, 7,152, 55,253, 18,228,254, +235,215,190, 91,123, 55,212,165,111,129,152,121, 1,252,231,223, 11, 72, 71, 74,185, 0,108,191,192, 69,151,158,191,235,189,111, +255,238, 95,127,227, 47,252,254,119, 2,248,202, 54, 51,245, 58, 33,223,148,118, 25, 66, 56, 8,224, 3,107, 48,133,253,172, 21, +222,180, 74,180,117,204,173, 6,128, 67,156,162,245,158, 85, 44, 8,251, 65,169, 89, 7,216,156,188, 18,243,125, 15, 86,118, 45, +196,231,186, 33,132,240,134,115, 56,222,229,198,122,103,195, 88, 27, 52,104,208,224,236,153,122,100,220, 37,191,234,138,181,186, +250,121,217, 91,254,224, 39, 94,115,219,181, 87,238,185,220,246, 61,188, 43, 73, 51, 47, 45, 32, 28, 68, 2,232,111,121, 23,228, +190,151,143, 46,214, 47, 44,238,122,248, 40,254,242,115, 79,226,244, 66, 31, 70, 9, 92,249,188, 25,124,243, 11, 46,192, 37,123, +102, 0, 0,114,231,165, 16, 47,250,105,184,207,254, 6, 96, 52,201, 22, 82,194, 47, 13,240,141,215, 95,245,210, 31,252,166, 23, +254,216, 31,252,229,125,239,196, 54,165,187, 49,195,187, 97, 66, 35,220,232, 53,110, 96, 6, 55,169, 1, 30,170, 9, 9,117,109, +118, 63,170, 72,251,195,107, 8, 27, 31,168,105,214,119,212, 52,203, 3, 19,207,125, 83, 8,225,200, 10,133, 98,222,181, 12, 67, +175, 95, 43, 62,219,129,101,198,113,174,198, 59, 59,193,208, 79,213,158,111,255, 54,158,149,131,107,104,238,103,179,175,182,220, +253,210,160, 65,131,127,153, 16, 91,116,141, 0, 96,250,135, 94,187,231,231,254,243,119,127,237,219,118,116,178,188, 40, 2, 5, +200, 21, 3,102,247, 0,202, 57,168,111,248, 73,168, 23,253,171,209,151,191,244,228,105,188,253, 79,239,197,103,143, 47,160,155, + 24, 36, 70, 82, 0,124, 89, 34,241, 22,223,250,138, 75,240, 51,175,191, 26,137, 38, 11,191,255,234,189,240,247,191, 15,232,236, + 70,236,210,170,147, 4, 15,124,241,241, 39,175,248,158,223,120, 19,128,207,129, 92, 4,171, 17,210, 91, 80, 43, 62, 35,132, 16, +235, 32,188,147, 26,236, 27, 38,253,178,171, 85, 88, 99,191,239,221, 53,102,116, 4,192,205,203,249,118,151,209,110, 15, 11, 33, +174, 91,229, 94,117, 6,124,243, 36, 83,224,123,127,160,198, 60, 78, 1,184,180,254, 57, 54,185,191,103,130,105,221, 56,233, 71, + 95, 69,243,222,182,241,174, 48,214, 35,124,207, 59, 38,215,106, 59,152, 98, 8,225, 65,140,251,237,175,219,164,149,230,206, 9, +107,207,114,214,134, 35,188,150,183, 55,165,119, 27, 52,104,112, 46, 52,245, 73,134,126,201,175,126,207, 21,191,122,235,155,174, +249,126,233, 53,138, 97, 73, 12,221,218,202, 56, 31, 60,176,251, 82,168,231,127,251,232,203, 79,206, 45,225, 7,126,231, 19,120, +112, 96, 49,211,202,209,215, 10,137, 81,200,149,128,201, 18, 8,103,241,254,255,117, 4, 74, 74,252,155,131,215,144,198,190,247, + 69,240,143,236, 1,220, 18,160, 51, 64, 0,190, 40,112,201,165,187,247,190,229, 53,151,188,241,195, 31,127,232, 11,168, 50,228, +215, 75,108,111, 89, 67, 67,155,100, 40, 55,111, 34,208,234, 61, 19,218,229,138,185,206, 66,136, 67,108,222,142, 26,233,129, 16, +194, 77,107,248,195, 15, 9, 33,110, 92,225,122, 71, 66, 8,183,214, 24, 74,204,193,174, 51,196, 91, 38,152,202,178,121,248,181, +103,187,251,105, 28,239,145,149,174,183, 77, 12,125, 50,190, 96,171,170, 10,174,228, 62,216,207,235,113, 75, 8,225, 57, 95,110, +184, 65,131, 6,207, 12,166, 46, 0,136, 61, 93,117,253, 31,223,244,178,255,244,186,151, 92,240, 98, 59, 0,172, 40, 1, 63,164, +126,108,137, 24,125, 50,148,125,168, 43, 94, 3,164,221,209, 5,254,253,127,255, 28, 62,245,196,105,160,219,197,201, 69, 11, 72, + 7, 41,128,174, 18,184,184,173,113, 65,174,177,107,186,131, 15,254,175, 7,241,218,203,207,195, 75, 46, 62, 15,144, 18,242,194, +215,194,127,254,247,129, 93, 23, 1,193,195, 11, 1,157,165,184,241,245, 47, 59,248,225,143, 63,244, 94, 0, 39,177, 49, 19,252, +122, 75,198,222,142, 77,228, 22,215,106,139,215,181,218, 85,153,143, 16,226, 48,151, 38,189,165, 38, 92,172,198, 76,110, 94,227, +122,135, 66, 8,135, 49,110,234,142,207, 55, 89, 42,245,182,213,158,175,246,108, 55, 61, 77,227,189,237, 92,153,168,121, 44,245, +253,113,120,139, 74, 5,199,186,242,117, 51,126,189, 6,253,104,111,134, 16,246,175, 20, 7,209,160, 65,131, 6,117,108, 38,191, + 59, 6,197,117,222,122, 96,250,231,239,249,119,175,253,211,215, 93,189,247,197, 69,207,193,195, 17, 67,151,160, 10,114, 74, 0, + 90, 80, 5, 57, 45, 33,119, 95, 51,186,200,209,185, 30,254,224,211, 95, 1,178, 22,165,185, 41, 9, 40, 5, 15,137,185,129,195, +103,143,246,112,247,209, 30,138, 32, 96,149,194,223,124,241,104,245, 0,221,139, 40,232, 14,150,159, 38, 0,214,227,202, 11,103, + 46, 5,112, 62,182,175, 81,205, 13,172, 69,110, 52, 64,171,206,224, 78,109,128, 41, 28,154,184,247,138, 12, 98,157,102,218,195, + 43, 60,211,193, 9, 6,187,158,231,187,227,105, 26,239,145,115, 85,127,159, 93, 8,147,230,242,179, 97,174,167, 0,220, 10,114, +125, 92, 39,132,184, 81, 8,113, 91,237,117,163, 16, 98, 7,127,166, 46,180,220,196,130, 87,131, 6, 13, 26,108,169,166, 30,205, +237, 23,188,237,219,246,253,202, 59,191,249,133, 63,161,188, 70, 81, 56, 64,121, 50,177, 7, 64,120,129,160, 4, 32, 37, 87,139, +243,128,206, 32,218, 23,140, 46,244,212, 66, 31,189, 65, 9,180,179, 74, 78,136,186,181,164,250,177,199, 23, 75,220, 85, 88, 92, + 61,165,177, 48,176,213, 67,100,211, 0, 20, 48,236, 65,228, 93, 4, 4,192,149,184, 96,111,231,188, 52,145,123,135,133,255,194, + 6,199,117,235, 42,239,237,103, 38,181,159, 53,168, 81,244,247, 6,180,197,131, 43, 48, 86,172, 67,187, 30,211, 26, 87, 8, 32, + 91,175,229,224,200, 42, 99,220,208,181, 38,159,237, 28,142,247,156,228,134,179,224, 54, 25, 59,112,235,217,228,166,243,119,215, + 83,236,230,182, 16,194, 33,140,187, 56,222,181,134, 32,213,160, 65,131, 6, 27, 98,234, 2, 0,166, 51,249,170,247,253,200, 85, +191,254, 29,215, 94,244,106, 59, 4,202,196,145,102,238, 2, 80, 4,232, 84,160,239,188, 55, 16, 18, 90,142, 50,216, 5, 0,132, + 42,126,109, 54, 79, 32,141,129, 15,160, 90,241, 33,140,234,189, 35, 0,240,212, 8,102,161, 95,226,222, 65, 31,111, 49,245, 84, +120, 15,132, 2,176, 67, 64, 76, 65, 8,170, 82,215,105,235,214,158,169,108,246, 43,199,123, 27,178, 64,172,199,103,201,126,213, + 91, 80,181,231,188, 19,192,122,131,165,234,209,205,251, 57,240,107, 51,152, 93, 69, 3, 60, 27,108,138, 9,243,103, 15,156,227, +241,110, 59, 83,103,134,126,231,196, 56,110, 62,151, 29,250,216, 29,113, 43, 42,211,255,254, 16,194, 13,147,129,129, 13, 26, 52, +104,176, 81,166, 30, 77,217,230,107, 47,206,190,239,143,126,236,218,219, 46,217, 51,125, 94, 49, 12, 64,166,136,161,151, 30,178, + 8,208, 45,137,119,255,221, 3,159,185,100, 42,155,249,246, 3, 23, 94, 92, 4, 80,163, 23,161,128,114, 17, 97,225, 97,136,157, +151, 2, 0,158,183,163,139,111,187,108, 15, 62,120,255, 49, 64,107,192, 10,170,251, 30, 27,192,128, 25,187, 16, 24,204, 45,225, +202, 61, 83, 21,209,237,157, 2, 6,243, 64, 49,205, 31,246, 8, 85,104,156,196, 54,152,223, 89,123, 66,141,200,174, 39,120,109, + 57,230,180,145, 94,238, 79, 7, 78,109,193,103,159, 77,227, 93, 15, 67,191,245,105,106,185, 91,175, 98,135,103,211, 60, 54,104, +208,224,153,201,212,163,185,253,188,159, 62,184,231, 23,223,249, 77, 87,255,111,211,121,154, 20, 30, 64,155, 53,231,194,195,120, +160, 76,129, 95,250,255, 62,247,225, 95,251,243,175,124,240,195, 63,253,194,183,129, 10,191,145, 95, 93, 0,208, 18,225,196,103, +129,175,185,158,153, 36,240,246,111,189, 10, 31,188,255, 9, 96, 80, 2, 73, 82,241, 98,199,119, 13, 30, 88, 90,194, 27,175,216, +135,111,126,225,190,138,240,206,127, 25, 33, 12, 33, 92, 57,210,236,133, 8, 88, 92, 28,246,143,206, 15, 22,182, 81,123,186,141, +171,155, 69,220,128,141, 71, 66, 31,193,230, 43,211, 61, 27,243,151,159,109,227,157,100,232,183, 63, 93,209,231, 66,136, 83, 19, +193,141, 7,209, 52, 17,106,208,160,193, 38,153,186, 0, 32,148,196, 21,191,243, 67, 87,252,151, 31,121,229,165,111,116, 37, 80, +104, 1,164, 10,240, 30,161,239,145,106,224,216,160, 24,252,204,127,187,231,119,223,255,201, 83,127, 4,192, 63,188, 48,124, 10, + 34, 92, 25, 2, 32, 34, 83,207,187,240,143,124, 2,234,202, 31, 0,218,187, 1, 0,215,125,205,110,124,232,230, 87,227, 7,222, +123, 23, 22,231, 7, 64,150,145, 63, 61, 4,160, 44,129,126, 15,111,186,124, 47,126,255,167, 94,141, 52,154,223, 93, 1,255,192, +159, 65,164, 25, 32,200,143, 31,188, 3,164,196, 99, 79,204, 31, 27, 20,254, 24,182, 47, 80, 14, 32,159,243,193, 26,145,221,176, +246,245, 47, 44, 69,233, 89, 51, 94,238,198, 54,201,208,159,238,168,243,166, 16, 77,131, 6, 13,214, 13,185, 6, 83, 63,239,189, + 63,242,252,223,252,145, 87, 93,250,198,162, 4, 92, 91, 3,185,161, 44,240, 37,143, 52,147,184,239,241,185,167, 94,247,174,143, +191,227,253,159, 60,245, 95, 1, 60, 12,224,241, 47, 29, 91,248, 34,164, 0, 28,247, 87, 81, 2,208,100,130,183,247,253,246,216, + 77,190,237,197,251,240,207,255,238, 13,248,213,183, 92,131, 23,205,166,200, 66,137, 41,233,240, 29,151,237,194,251,255,245,215, +225, 67,191,248, 58,156, 55,157,143, 62,239,191,252,231, 8,167, 30, 6, 76, 78,109,219, 17, 0,235, 0, 41,240,197, 71, 79, 63, + 2,234,179,238,159, 97,243,188, 82,212,249,179,253,249, 14, 62, 75,199,187, 18, 67,191,233, 25,198,208, 27, 52,104,208, 96,203, + 52,117, 92,181, 39,121,237, 91,175,126,222,245,182,239,129,174, 6, 18, 9, 20, 30,114, 96,161, 59, 18, 31,189,247,201,251,191, +247, 61,159,254,143,167,122,254, 99, 0, 78,128, 26,189,100,127,245,169, 19,119,157,126, 83,241,163,221,118,162,189,103, 59,188, + 0,208,106, 35,124,229, 31,225,103,254, 8,242,202,239, 31,221,231,162, 93, 93,252,242,183,188, 0,183,188,249, 74,156, 94, 28, + 66,107,137,217,118,122,198,243,248,199, 63, 1,247,207,127, 8,228,109,146, 58,164, 66,240, 30,194, 57,184,193, 0, 31,252,135, +123,254, 39,168, 30,253,118, 50,245,205,248, 53,199, 76,168,219, 85,245,236, 44,112,164,246,124,235,234, 62,199,249,219,207,214, +241, 62,155, 24,250,102,131, 24, 27, 52,104,208,104,234,227, 12,255, 5,251,242,203,219,169,129,247,160,232,246, 94, 9, 93, 88, + 32, 5,110,187,243, 11,135,222,244,238,195,255,246, 84,207,255, 13,128,167, 0,204, 1, 40, 0,148, 15, 28, 47,238,250,232,253, + 79,220,171, 52, 16, 56, 21, 77, 72, 50,197,139,246, 52,252, 63,255, 33,220,189,255, 23, 80,140,187,191,141,146,216, 61,157,159, +201,208, 93, 1,255,192, 29,240,119,189, 19, 34,205, 32,148, 34,127,189, 73,129,178,132,146,192, 23,191,120,244,201, 15,126,252, +145, 67,160,218,239,219,194,212, 39, 90,124,110,132,200, 78,166,137,221,244, 12,219, 7,245,231,155,229,114,166,155,213,210,159, + 13,227,125, 86, 48,116, 46,221, 59, 41,124, 53,104,208,160,193,166,152,186,250,196, 3,139, 95, 58, 81,148, 54,105, 75, 36,165, + 71,162,128,129, 10,225,103,239,184,231,143,111,253,127,143,252, 10,128,207, 0, 56,206, 26,122, 12,111, 43, 1, 60,245,159, 62, +252,224, 29,253,210, 67,149, 22, 40, 61,105,235,177, 40, 77,187,139,240,208, 71, 97,255,238,103,224, 31,251, 24,208, 95, 65,137, + 27, 46, 32, 60,117, 47,236,199,126, 1,254,190,219,129, 44, 7,148, 38, 95,186, 0, 32, 52,196,176, 4, 84,192,187,222,255,241, + 15, 2,248, 50,223,127,203,153,122, 45,111,185,142,117,165, 23,113, 26, 82,157, 32,223,178,134,166,123,174,113, 7,198,125,183, +183,172, 99, 46,110,121, 22,143,119, 37,134,126, 24,171,215, 44, 88, 83,232, 11, 33,220, 82,123, 29,156,152,179,141,238,183,122, + 80,230, 41, 52,121,234, 13, 26, 52, 88, 3,171,154,223,159,152,119,159,250,241, 63, 60,124,219,207,190,238,242, 27,102,219,102, +250,254, 19,139,143,253,214, 95, 63,244,225,127,124, 96,241, 47, 0, 60, 1,224, 52,107,231,117, 38,234, 0,244,239,126,108,240, +145,255,251,239, 31, 60,248,182, 55, 95,249, 6,183, 80, 80,241,153, 84, 85, 33,108,173,105,192,206,195,125,234,215,224,147, 14, +176,227, 10,200,153,203, 0,149, 1,161,132,159,127, 4, 56,126, 63, 48, 56, 5,152, 4,104,239,168, 81, 60, 0, 94, 1,133,128, +106, 43,124,228,175, 31,252,252, 31,254,213,151,254, 24,100,122, 47,183, 65, 59, 63,136, 51,251,139,159,194,198, 34,223,111,198, +120,237,245, 59,185,205,232,161,117,220,255, 6,102,150,219, 18,112,198, 81,214,183,213,152,200,193, 16,194,123,150,211, 88,107, + 41, 95,179,207,214,241,174,194,208,223,112,150,110,130,253, 19,140,248,214,154,213,226, 0,215, 58,184,125,173, 92,243, 90, 27, +221,250, 28,223,214,116,111,107,208,160,193,217, 48,245, 18,192,201, 15,221, 51,247,222, 15,221,115,247,157, 0,186, 32,191,249, +147, 32, 83,251, 34,127,102,178,172, 88,236,183,254,228,173,127,244,192,187, 15,156, 63,125,201,245, 47, 61,255,178, 98,110, 0, + 49,157, 1,169, 24, 85,140,131, 49, 16,198, 80, 81,154,147,247,193, 29,251,244,232,114, 66, 42,106,216,210,238, 78, 80, 60, 0, +133, 71,240, 41, 76, 98,112,228,129, 99,167,126,224,215,255,226,215, 89, 75,239, 99,141, 14,109, 43, 16,209,205,180,106,189,121, + 35, 68,150,171,165,221,140,170, 19, 90,100,116,135,152,240, 31,158, 96, 14, 81,152, 56, 80, 99, 16,219,137,219, 49,222, 6,245, + 38,214, 52,111,175, 61,219, 65,102,132,179,172,137,159,194, 10, 62,248,103,242,120,121, 92,203,185, 4, 62,176,129,173,112,199, + 38,114,215, 15,178,192,116,132,231, 96,185,218,239,147,173,114, 1, 42, 3,220,164,178, 53,104,208,224,172,152,186, 99,198,109, +153,137, 75,254,223,144, 95, 14, 43, 55, 77,177, 0, 22, 3,112,223, 13,191,117,207,255,241, 55,111,123,197, 59, 95,122,249,174, +231,149,167, 7,192, 84, 10,145,129,106,189, 71,173, 93, 40, 32,201, 87,207, 67, 11, 0,188, 7,134, 30,126,110,128,228,130,243, +240,248, 19,115,139, 55,252,242,159,221,118,114,161,252, 88, 77,200,216,110, 28,102,134,190,225,160, 37, 33,196,237,181, 2, 54, +179,117, 66,255,116,111, 4,214,214,111,100,237,122,255, 10,154,103,221, 74,113, 35,214,104,132,243, 76, 30,239, 50,216,168,123, +224,208, 89,220,107, 63,214, 31,103,112,251, 57, 16,232, 26, 52,104,240, 28,129, 92,131,141, 90,144,191,252, 20,168,243,217,105, + 0, 61,254,127, 88,227,187, 67, 0,115,167,122,254,239,191,254,215,254,233,237, 31,189,231,137,251, 77,162,161,230,134,240,167, + 45, 48,112,181,171, 8,142,144,159,120,197,154,240, 14, 64,225, 16,230, 28,112,178,143,100,199, 14,124,238,193,249, 39,223,240, +115,127,242,142,123, 30,153,255,115,126,182, 30,182, 47,234,253, 16, 19,215, 27,185, 17,199,217,212,255,190, 29, 84, 94,246,118, +172, 47, 7,249, 14,144, 41,123,219, 43,154,113, 83,152,235,214,184,215, 33, 80,219,211,195,207,246,241,158, 99, 68,127,253,122, +247,206, 29, 32,119,192,205,141,217,189, 65,131, 6,235,166,227,219,124,125, 5,160,197, 90,218,213,191,240, 29, 23,253,248,219, +223,120,213,183,206, 78, 39,218, 15, 61,156,150, 64,174, 33, 98,141,120, 89,123,156, 16, 0, 7, 4, 27,128,190,131, 44, 45,148, +145,232, 59,224, 55, 63,246,228,223,189,253,247,238,126, 79,233,195,167, 80,165,210,217,103,227, 2,176, 41,120, 82, 75, 60, 2, +234,110,118,232,105,124,174,104, 14,175,247, 68, 63,180,206,110,112,207,186,241, 62, 77,235,190, 31,103,198, 38, 28, 6,153,219, + 27, 70,222,160, 65,131,103, 28, 83,143,140, 61, 3, 48, 13, 96,239, 11,246,164,175,255,217,183,236,255,246,239, 58,112,209,203, +119,116,181, 65,144,220, 19, 93,114, 49, 25,126,176, 0,200,224, 71,202,250,226,192,251,143,124,230,241,251,126,251,208, 67, 31, +254,219, 47, 44,252, 37,128,199,216,114,208,127,182, 50,244, 6, 13, 26, 52,104,208,224,217,198,212,227,125, 18, 0,109, 0, 83, + 0,246,238,153, 82, 47,121,211,181,179, 47,127,235,139, 47,122,217,213,207,155, 58,191,157,170,118,166, 69, 34,149,146,222, 33, + 12,157, 45,122,133,239, 61,124,116,225,216, 7, 62,251,232, 61,135,238, 62,117,215, 3,199,139,195, 0, 30, 7, 48, 15,242,161, +111, 91, 78,122,131, 6, 13, 26, 52,104,208, 48,245,213,239, 37, 1,164, 32,147,124, 11, 20, 81,191, 3,192,158, 78, 42,118,182, + 19, 57,149,105,153, 20,206,219,197, 34, 44, 44, 12,252, 9, 0, 71, 65, 38,246,121,144,223,124, 9,107, 7,234, 53,104,208,160, + 65,131, 6, 13, 83, 63,135,204,221,176,246, 30, 95, 26,163,238,235, 0,107,224, 37,191, 10,102,228,182, 97,230, 13, 26, 52,104, +208,160,193, 51,135,169, 79,222, 63, 50,249,248,179,206,212, 67,237,103,195,200, 27, 52,104,208,160, 65,131,103, 48, 83, 95,237, +121, 26, 38,222,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, + 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, + 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6,219, 4,129, 61,175,217,250, 34, 47, 90, 3, 66, 2,240, 64,105, + 55,247,253, 68, 87,127, 59, 13, 40, 11, 56, 15, 40, 9,244, 6,244,153, 86, 14, 72, 9,168, 4,176, 5,127,216, 3,189, 18, 40, + 7,213,181, 52, 95,107,185,238,241,189,193,248,125, 1,186, 71,150,210, 24,116, 2, 20, 3,160, 40,169, 64,173, 50, 84,212,214, + 6, 64, 11, 42, 96, 11,126,207, 76, 92,111, 43,231, 51,201,232,153, 92, 65,227, 21, 18,232, 47, 0,222, 80,155, 90, 33,168,170, +254,206, 29, 84,131,207,228,128, 49, 72, 18, 9, 59,244,240,197,144,230,212, 91,160, 44,129, 84, 1, 75, 3,154,171, 76, 3,131, +130,202,253,216, 1, 77,148, 0,215,241,243, 52, 7,174,160,255,235, 4,232,247,233,111,239,105,254, 61,207,173,231, 53,175,255, +190,217, 61,240, 92,129,201,128, 96,129,153,157, 64,111,137,246,108,175, 15,180,218,192,226, 28,208,153, 6,138, 30,205,107,111, + 9,176,150, 94, 43,237,131, 73,212, 63,107, 52,144,231, 64,210,162, 53,141,173,140,125, 0, 22,230,105,221,215,187, 63,205, 50, +247,146,146,206, 96, 44, 17,117,182,235,218,158,198,107,191,241,117,176,222,227,227,247,223,143,235,175,123, 57,254,230, 31, 62, + 6, 60,246,200,250,232, 2, 31, 61,132,101,230, 44,158, 25, 7, 58, 27, 40, 1,169,249, 12,243,103,138,193,242,115,189,218, 60, +107, 13, 8, 77,103,221,215,104, 74, 81,123, 6,163,199,207, 5,106,159,117,126,229,245,173,237,153,214,129,203,209, 59,252, 0, +221, 71, 27, 96,215, 14, 32,215, 64,223, 2,143, 62, 85,209,183,205,210, 85,111, 0,215,167,253, 56,183, 64,255,155,234,210,222, + 20,154,126,159, 59, 69,159, 47, 65,115, 39, 4,125,103,106, 22,152, 63, 69, 99,204,114, 96,137,247,181, 45,137, 86,187, 65,228, + 46,213, 62,153,234, 2,195, 33,128,100,252,125, 41,129, 97, 1,100, 93, 32, 12,137,174,197,249,137, 52,200,110, 19,253,168,207, + 71,233,137,214,217,115, 68,171, 76, 2, 76, 79, 3, 89, 66,180,183,215, 7,122,139,244,127, 9,162,245, 58, 3,242, 4, 8,142, +190, 51,112, 21, 95,141,223,243, 30, 24, 12, 1,163,128,114, 8,244, 6, 80,232, 92,244, 43, 91,250,176,173, 12, 72, 83, 32,111, +209,164, 41,193,197, 94, 55,208, 76, 77, 74, 98,172,163,191,249,187, 82,208,228,123, 87, 93, 79, 41,250,124,176,180, 11, 74, 15, + 12,123,213,119,149, 4,181,119,229,131,165, 38,238, 85,127, 54,239,233,149, 26, 98,222, 74, 3,174, 4,116, 74, 19, 8, 0, 90, + 86,125,225, 44, 19,139, 86, 27, 48, 18,232, 15, 55, 54,206,245,194, 51, 69,208,160, 69, 85,154,132,152,164, 69, 4, 36, 53,192, +236, 20,176,107, 6,112, 2, 83,179, 83, 48,105,138, 78,150,224,130,238, 14,120,239, 48, 53,213, 69,174, 13,160, 36, 74, 1,122, + 86, 33,105,141,250, 5,207, 93,159,152, 75,176,192, 48,208,198, 42, 74,154, 56,157,144, 64, 16, 60, 80, 6, 90,131,200, 52, 4, + 63,151,102, 6, 34, 64,189,115, 3,175,153, 16,213,154, 42,201, 4,207,111,236,240,249,103, 97, 51,190, 52, 1,138, 33, 48,187, + 19,152,159, 7,218,109, 34,198,105, 14, 44,205, 19, 67,159,155,163,255,207, 47, 2,153, 33,162,178,220, 88,151, 99, 52,241,172, +196,249, 84, 9, 49,245, 60,161,207, 7,150,215,149,166,125,235, 2, 19,214,117,158, 65, 81, 59, 35, 0, 93, 79, 73,250,185,209, + 51, 61,137,172,139, 29, 47,121, 62,190,233,107, 95,133,139,247, 93,128,151, 92,122, 25,222,255,145, 59,129,175, 60,180,194, 30, +224,113, 56,193,231, 52, 16,109,241,158,247,151, 27,239,215,232, 89,184, 84,138,207,189, 4, 96,121,174, 34, 3, 14,203,143, 65, +202,229,207, 96,100, 2, 44,171,142,209, 20,207,215, 29,209, 28, 81,123, 14, 81,171,149, 25,136,158,173, 50,117, 87,188,225,149, +216, 55,179, 19, 95,125,224, 33,192, 11,192, 50,179, 49, 9,112,252, 36, 80, 22, 27,159,251, 52,161,123, 59, 79,175, 78,155,246, + 66,105,233,119, 47,233,186, 73,198,140, 98, 30, 80, 45, 26,160,183, 68, 19, 58,109, 98,220,253, 62, 48, 51, 75,243, 59, 24, 0, + 42,163, 57, 24, 20, 52,199,176,128,110,211,251,129, 5,127,107,137,150, 8, 79,239, 39, 45,154, 19,239, 42,250, 93,148,145,176, +210,251,170, 70,147,207,246, 28, 74,162,125,240,174,198, 27, 52,205,111,164,175,194,159, 27, 58,211,202,136,191, 24, 3,148,142, +133, 23, 71,124,211,243, 79,193,130,148,117,244, 25,235,129, 86, 90,209,135, 68,211,124, 13,150,104,141, 22,151, 0,153, 1, 58, +217, 98,166,110, 52, 73,110, 83, 93, 98, 52, 89,139, 78,163, 47, 55, 38,213,155,154,150,113,198,225, 18,172, 9,242, 97,142, 31, + 19,146, 25, 78, 1, 56, 55,126, 64, 19,102,196,166, 38,221, 43,150,206,108,121,230, 61, 66,124, 6, 69,247, 25, 70,173,212, 19, + 97, 84,124,128,165, 4, 82,131,233,171, 46,198,174,189,187,177,112,114,142, 62,123, 54,139,109, 50,218, 96,126, 98,190,152, 38, +193, 75, 34,208,146,159, 79, 25, 32,213, 64, 59,199,174,169, 41,116, 59, 57,164, 48, 72,117,130,221,121, 7,222, 58, 76,229, 57, + 4, 72,152,203,146, 20, 62, 4, 20,142, 55,135, 0,109,144,193,128, 54, 84, 96,105, 80, 5,210, 10, 18, 69, 19, 82, 88, 34,144, +195, 33, 63, 27,207, 63,226, 51,241,188, 26, 65,115, 36,248, 64, 11, 65,147,157,112,207, 30, 9, 18,178,228, 58,153, 66,212,140, + 20,191,140, 28, 95,223, 85,133, 0,205, 19, 23,173, 6,231,136,145,107, 69,251, 55, 8,160,219, 2,134,125, 98,220, 11,139, 36, + 0,246, 23,128, 86,151, 24,123,183, 11,204, 47,208,153, 89, 92, 32,162, 90, 22, 43, 11,186, 82, 84, 47, 8, 98,108, 82,240, 61, + 19, 58,119, 73, 77, 8, 82,154, 9,153,160,121,119,229,218,243,183, 18, 99,139,140,125, 76,216, 92, 31,212, 75,175,193,171, 95, +246, 82,156,127,233, 37,208,207,219,137,185, 2,248,142, 87,190, 12, 51, 59,102, 49,232, 15, 48, 59,211,197, 37,187,207,195,103, + 62,243,185, 51,247,126,212,108, 60, 0, 25, 42, 33, 67,177, 42, 39, 88,178,156,124, 30, 33,232,156, 71, 11,159,103,109, 76, 50, + 51, 89, 85, 75,183,227,170,120,156, 15, 85, 19,234, 77,100,232,188,215,189,171,180,244,184,255,227,125,227, 89, 17,188, 47, 86, +153,187, 19, 65,224,171, 95,250, 74, 37, 80, 35, 16,253,156,155, 7,250,131,205, 9,196, 66,208,120,179, 22, 32, 12,208, 63, 13, +136,132,158,211, 6, 32, 55, 76,163, 53,224, 11, 58,115, 66,145,130,212,105, 3,193, 0,253, 69, 64,166, 52,238, 97, 65, 22,132, +194, 3,153, 34, 70,159,104,182,208, 1,240, 3,162, 25, 70, 19,225,113,172, 93, 2, 52,126,103,129,162, 24,127, 95, 37,204,244, + 37,189, 63, 44, 42,165,101,179, 86, 33,147, 1,157, 14, 41,153,138,133, 26, 95, 83, 18, 35,255, 48,252,203,122,206,198,217,162, +228,189,165, 21,208, 50, 52,247,115,139,180, 62,145,127,132, 0, 36,105,197,144,132, 36, 75,155, 43,217,154,225, 1, 59, 4,172, + 2,130,170, 4,131, 16,160,183,216,158, 65,147, 24, 15,134, 7, 61,116,232,210,100,174,151,225, 13, 61,153,146,213, 4, 97, 49, + 41, 49,190,222, 18, 96, 23, 43, 83,165, 94,197,100, 25,255, 63, 50,179,240, 97,140,230,150,149,190,211, 31, 2,166,164, 49, 56, + 95,227, 11, 44,185, 74, 77, 7, 63, 8,132, 16,112,108,105, 0,244,203,179,159, 63, 45,232,103,185,220, 56,226,125,217, 12,158, +101,180, 49,243, 12, 59,186, 57,118,228, 45, 12,221, 16,137,202, 32,132,130, 11, 64,102, 52,156, 4,114,149, 96,105,232, 97,132, +198,206,118, 27, 30, 14,189,185, 5, 58, 88, 96,169, 48, 97,105,189,112,244, 28, 33, 84,204, 48, 75,129,165, 97, 69,192, 38,101, +174,232, 34, 1,152,241,250, 74,147, 49, 44, 17,103,220,183, 39,240, 26,219,117, 16, 36,157,215, 23, 13, 8, 9,216,231,177,242, +119,172, 29,215,108,109,237,255,219,141,200, 7,140, 38,162,215, 27, 18,227, 94, 90,168,126,182,235,140,188, 79,103,100,105, 1, +104,231,116,112, 53,239, 45,187,140,182, 88,103,182, 33, 18, 64, 79, 68,184, 45,201,173, 18,173, 37,245,253, 47, 5,237,219, 44, + 95,223, 57,156,156,195,213,204,254,107,201, 7, 47,185, 18, 95,187,111, 47,174,250,154,125,208,198, 64, 10,133,223, 93,248, 71, +180, 90,109,244,123,125,120, 15, 44, 44, 14,177,184,184, 0,180,103,128,211, 79,158,121,145,200,152, 81,147,209,156,175,230,123, + 37, 39,162,243, 36, 16,148,182,178,210,149,126,229,207,215,199, 85,223, 75, 35,147,176,174,148,131, 58, 61,113,252,249, 96, 1, +175,171,117, 26,185,168,252,184,213, 99, 53, 28,121,164,114, 97,214,233,206, 70,247,175,214,192,142, 61,192,220,177,138, 65, 58, +144,146,165, 88,200,142, 90,184,101,197, 8, 69,181,238,129,191, 19, 21, 31, 33,129, 84, 0,133, 1,100, 73,230, 96,128,172,122, +138,207,169,244, 36, 72,150, 53, 58, 16,215,173,176,149, 18, 81,176,229,161,254,126,152,120, 63, 77,170,239,109,202, 5,204,252, +103,166,195, 22,137, 41,114, 55,198,131,101,249, 30,113, 47,157,141, 66,182, 25,198, 94, 12,137,142, 11,144,176,191,180, 64,252, + 45,142,185,100, 26, 17, 93,174,174, 32, 1,107,169, 79,251,201,150, 68, 3,134, 5,241, 93,222,151, 91,167,169,107, 77,230,129, +118,206, 27, 56, 84, 62,184,192,155, 82,201,117, 74, 92,158,181, 80, 81, 17, 74,161,201, 7,209,105,209,239,118, 88, 73, 85,107, + 73,174,241, 96, 73, 65, 23, 11,108,118, 91,237,144,120, 71,207,106, 45,253, 46, 88, 43,138, 38, 35,207,215, 45, 74, 12,143,158, +130, 59,118,146,124,116,103,101,233,144, 44,233,218,149,205,155,237, 46,155, 1, 19,250,188, 80,232,116, 50,236,105,229, 8, 65, + 32,211, 6, 65, 8, 40, 8,116,187,109, 20, 69,137, 92, 75, 88,235, 96,164, 70,225, 75, 88, 31,224,124,192,208, 89,146,136,123, + 5,141,175, 28, 18,179,141, 82,171,103,198,238, 1, 12, 29, 32,108,181,150,214,146,164,169, 36, 19, 75, 95,249, 15,203,104,170, + 21,100, 85,128,228,107, 50, 69, 43,216, 60,191,218,218,141, 76,157,178,230,152,148, 36, 56, 24,189,242, 62,138,102,210, 51,172, + 28,231,128,161,167,124, 64, 61,107,145,214, 3,121, 70, 26, 87,194,254,208, 84, 1, 69, 77,115,239,228,180,111,146,148,215,193, +144,182, 82,186, 51,173, 87, 62, 48,115,246,164,237, 40, 65,231, 43, 18, 92, 35, 73,106,183,174,102, 45, 96,247, 72,159,199, 63, +236,173, 95,235,153, 20, 34, 54,193,208,209,202,112,222,197,123,112,253,181, 47,133, 84, 18, 40, 61,172,183,184,176,211,193,253, +143, 63,134,233,172, 13,231, 28,250, 75, 61,220,253,224,151,113,242,209,199,136, 67, 78,238,139,145,182, 43,170,222,142,163, 88, + 14, 63,238,243,142, 46, 9,107,137, 70,200,168,197,176,150,166, 4, 9, 79,235,177, 86, 76,154,127,101, 77,217, 40,121, 93, 74, + 95,249, 61, 71,123,149,233,159,175, 53,152,148,172,109,173, 71,211,246,172,249, 59, 55,238,110, 92,139, 6,207,204, 18,109,112, + 14,216,247, 60, 96,182, 5, 28, 63, 77,174, 29, 37,137, 49,200, 26,141,147,129,253,177,108, 5, 17,146,155, 91, 74, 87,209,197, + 0, 0, 32, 0, 73, 68, 65, 84, 91, 64,164, 76,135, 44,157, 99, 33, 88,160,103, 97, 74,176, 98,148,105, 32,176, 63,221, 59,154, +223, 44, 39, 70, 21, 93, 36,142, 77,198,113,191,134, 64, 52,192,242,121,174,191,239,253, 72, 97, 66, 89,174,233,174, 88,214, 85, + 3, 73, 99, 73,216, 21, 21, 45, 36,139,189,113, 75,144, 96,186, 20,194,185,119,241,149, 76, 67, 3,211,222,162, 36, 6, 45, 37, +173,137, 2,209,144, 52,231,253,164,200,162, 42, 68,245,188, 49,158, 42,225, 88, 51,200, 45,212,212,173, 37, 77, 53, 41,136,185, +199,255, 73,150, 6, 53, 7,119,181,176,190, 96,157,178, 32,115,162,103,102, 23,253,231, 0,153,155,149,220,216,243, 45, 43,133, +105,140,205,192,106,196,202, 90, 18, 38, 34,145,140,140,119,181,192,166,141,162, 55, 24,215, 16,150,115, 75, 56, 75,139,108, 12, +187, 9, 36,178,212,160,231, 45, 90, 82, 35,176, 58,210,110,231, 80, 2,104,165, 6, 67,235,160,181,198,192,150,104,235, 12,115, + 69, 31, 74,177, 25, 63,106,124,182,168, 44, 23,253,146,214, 48,176,198, 62, 12,204,208,253,153,166,225,146, 41,171,172,153, 42, + 13, 31,170,210,159, 25,195, 80,128, 2, 13, 97,104, 44,171,238,129, 72, 68,121,190,181, 1,116,151,168,121,137,229,131,133, 38, + 25, 58, 91, 20,105, 78,129,181,205, 3,103, 33,212,250,154,181, 31, 0, 18, 67,218, 76,198, 65, 44,194,144,116,173, 13,249,194, + 90, 6,152,103,159,122, 57,164, 57,239,245,105,223,235, 9, 70, 53, 50, 33, 79,104,161,163,128, 70, 11, 68,119,121,167, 13, 12, +248,187,169,168,108,196,253,254,198,181,158,209, 51,212,230,114,131,152,210, 64, 49, 24,192, 7,192,200, 4,195, 65, 31, 90, 73, + 28,190,235,203, 16, 65,160,103, 45,180, 82,120,224,190, 71, 72,123,145,171,156,109,137, 51, 25,108, 60,219, 90,147,127,119, 4, + 14,132,115,254, 76,237,125, 61,150,155,229,222,183,182, 90, 7, 35,171,253, 20,233, 81,253, 94,206, 87,110, 65, 37,207,124,142, +173,222,127,251,158,135, 23, 92,121, 41,250,118,128,135, 62,241, 89,224,241,199, 89,144, 40,128,192,227,205,178,106, 14,163, 11, + 82,241, 89,106,101,180, 63, 18,205,214,194, 1,187, 18, 88,115, 22,236, 62,163,224, 30,214,204, 19,118,201,241,225, 46, 11, 64, +118, 56,182, 74, 0,105, 27, 56,122,188,178, 52, 90, 0,130,125,240,138, 15,203,136, 31, 88,114, 9,196, 56, 40, 36,213, 26, 70, +235,213,228, 17, 54,186,218, 20,161,224,247,116,165, 28, 14, 88, 27, 78, 21,157, 69,233, 55, 47,160,110,194,240, 10, 68,107, 15, +206,124,118,128,207,100, 89,173,143,201,128,225,128, 20,132, 97, 65,214, 12, 45,136, 38,179,177, 18,185, 33, 75,114, 12,236, 75, + 59, 52,239,173,108, 27, 2,229, 70,129, 41,178,242, 61, 7, 79, 27,194,241,131, 75, 54,189,174, 71,244,138, 82,148,247, 85, 48, +138,102,230, 55,100,191,143, 97, 13, 92, 49, 99, 89,175,251, 84,235, 51,163,225,253, 26, 95,150,158, 36,167,250,207,237, 56,167, + 43, 73,140, 89,194, 17,145, 45, 54,141, 11,200,156,152,119,106, 20, 0,129,194, 23,232,152, 12, 50, 0,105,150, 34, 75,114,136, + 0, 72, 41, 49,180, 14, 18, 2, 65, 6, 72,225,177, 48,191, 68,146,112,105,129,254, 82,229,187, 73, 21,109, 44, 40, 58,216, 90, +179, 84, 30, 38,226, 21,216,159, 43, 88,155,143, 18,111,124, 9,144,214,168,120, 95, 68,134, 94,128,136,247,106,218,146,143, 26, + 0, 7, 57, 6, 73, 17,182,237, 22, 73,223, 74, 2,189, 30, 61, 91,183, 11,236,222,197,153, 10,110,124, 13,235,107,236,183,241, + 0, 75, 89, 89,150, 0, 10,232, 18, 28,116, 89, 14,137,145, 7,102,232,195, 33,141, 97, 56, 4, 90, 45,142, 56,102,243, 90,150, + 80, 20,108,180, 56, 24, 38,160,137,170, 2,212,140,162,117, 80, 81, 19,172,197,130,104,205, 62,182,232, 35, 68, 21, 92, 51,236, +175, 79, 67, 93,201,173,128, 13,134, 38,180, 50, 96,215, 30, 20, 74, 96, 71, 42, 49,219,157, 70,175,223,199,112, 56,196, 35, 39, +158,192, 87,189, 2,144,225,248, 98,129,199, 22, 22, 17,220, 2,176, 56,207, 22, 9,185,178,182, 94,223, 99,117, 31,169,209, 36, +240,107, 65, 86, 38,189,134,185,123,179,154,153, 16,149,229,174,100,171,100, 12, 68, 4,107,159, 49, 6,194,251,241,159,194,173, + 62,135,209, 7,190,209,224, 80,182, 40,236,190,232,124, 60,126,122, 14,229,227,199,198,227,139,226, 53, 11,214, 4, 93,180, 90, + 70,171,130,169, 4,112, 41,232, 25,139,130,246,111, 12,246,147,130,104,133,103, 6, 26,216,109,167, 2,251,231, 29,199, 33,149, + 64,154,209, 61, 74, 14,128, 83,134,232,129,209,116,246,133, 96,166,165,232, 59,153,193, 40,235, 70, 9,122, 30, 25, 5, 83, 67, +180, 57, 97, 6, 30,199,164, 65, 1,117, 41,251,255,163, 79,124,204, 69, 5, 14,238, 27,112,180,184, 59,119, 26,185,172,187, 2, +153,183,248,101, 92,133,214,210,217,215,154, 63,227,121,252,188,215,250,253,138,255, 69,225,220, 59,162, 21,146,227,159,134, 44, + 12,155,214, 22,251,212,173, 37,127,183, 97, 34, 54, 23, 72, 75, 25, 29, 6, 11, 12, 2, 75,253,122,121,173, 73,235, 74, 18,206, + 19,250,136, 97,166,141, 2,152, 31,208,134,105,165,181,168,245, 80,105, 17,253,130, 36,154,224,151,247, 75,174, 37, 89,173,246, +121,187,194,207,115, 5, 15, 34, 30,253, 62,208,109,211,191, 74, 15,159, 1,131,210, 67, 25,137,212,104, 12,220, 0,185,153,169, +132,217, 76,163,191,216, 67, 22, 3, 47,250, 22,214, 7,154,183, 1,175, 89,180, 20,104, 13,244, 44, 75,125,156, 98,177, 82,234, + 79,157, 48, 46,231, 67,140, 38, 80, 37,233,160, 75, 77,218,100,212,250,215, 66, 97, 89,171,103,159,125, 61, 69, 40,254, 34, 52, +208,237,208,181, 91, 25,153,176,173, 29,215,210, 55,169, 97,110, 92,163,173, 91,144, 60, 73, 48,145,161, 23,236,124,237, 15,129, + 60, 37,201, 59, 79, 41, 29,168,157,147,175,207,104,122, 63, 30,246,186,102, 94,122,118,207,248,113,173,189,230,213,128, 4,125, +127,116,222, 98, 90,105, 56, 55,155,181,126,118,101,130,233,107, 46,195,193, 43,246, 99,110,176,132,196,164,120,228,241, 71, 49, + 40, 29, 74,239, 48,191, 20,240,245,151, 92,134,157, 83,211, 72,211, 20,206, 14,241,240,241,199,240,201,197, 62,249, 22, 87,242, +111,174,166, 89, 41, 89, 9,142, 81,120, 92, 78,131,158, 36,170, 27,213,190, 70,230,247,154,149,106,228, 6,169, 89,139,226,255, +198,126,174,131,200,104,156,233,203, 95, 15,230, 23,240,249, 79, 28, 30, 79,233, 93,110,204,206, 87,154,178,226,179, 37, 11,182, +126,121,178, 18, 9, 73, 90, 99,244,141,215,253,225,206, 3, 34, 39,191,186, 47, 57,162,190, 95, 99,218,158,211,109, 65,138, 92, + 89,140, 91,179,226, 62,137,231,101, 56,160,207, 37, 28,135, 98,107,251, 85, 72,122, 62, 88,142, 51,146, 53,134,206, 86, 25, 27, +170,207,198,185, 23, 53,247,137,139,238, 87, 22,114,207, 5,162,101, 65,215,246,173,214,213,218,142, 89,193,106,207, 28, 5,115, +233, 1, 47,145,188,232, 82, 92,123,241,101,248,167, 79,126, 10, 56,122,146,206,115,156,191,222,128,180,244, 98, 80,155,211,114, + 27, 82,218, 60, 75,127,253, 1,105, 42, 34, 0,150,165, 88, 23,216, 68, 51, 65,100, 12,107, 36,210, 0, 45,246,129,228, 44,133, +228,156,171,151,179, 79, 40, 99,115,132,214,100,222, 20,138,222, 51, 28,138,106, 20,249, 41,140, 33,237, 78,196,136,225,154,228, +191, 90, 0,208,102,165,184,115,145,118,165, 36, 77, 91,150,179, 79,209, 67,182, 51,132, 32,209, 74, 21,180,148, 80, 80,200, 84, + 10,201,129, 34, 89,146, 99, 80,150, 48,198, 64, 72, 1, 91,150, 72,147, 20, 71,142, 31, 39,237,188,215, 35, 51,187,117,227,254, +195,232,119, 93, 77,178,141,140,187, 30,225, 43,196,184,176,229,125,165,157,196,148,184, 98,184,126,191,226, 72,152, 9, 64,193, +154,144,240, 64,191,199,254, 39,254, 92, 98,104,147,187, 1, 89,130, 38, 92,241,180,221,182,112,125, 76, 50,158, 30, 19, 5,155, +122,154, 95, 80, 85, 10,149, 49, 52,110,149, 82, 60,136, 76,232,103, 43, 35, 77, 93,165, 36,236, 56, 87, 17,128, 24,157, 27,153, +118,212,202, 3, 11,119, 8,227, 65,113,129,231,167,180,100, 73,114,172, 37, 57, 54, 65,151,229,246,237,205, 52, 33,107,140, 96, +141,238,210,139,241,154,253,251,208,233,182, 48,219,157, 69,112, 30, 15, 28, 63,137, 79,125,238, 49,156, 14, 22,179,173, 14,118, +118,102,113,222,238,243,176,115,231, 44, 90,211, 83,104, 67,195,230, 10,199,164,165, 0,194,141, 70, 34, 7, 94,107,167,136,120, + 75,201,209,242, 28,139, 16,194,230, 77,175, 87, 93,138, 87,188,250,149,120,252,203, 95, 97,203, 17,223, 43,212,180,116,137, 42, +214, 33,132,181,125,245, 43, 9,238, 82, 87,214,192,141, 98, 88,172,108,145,138,231, 91,202,202, 37, 19, 2,113, 58,231,201, 26, + 20,221,114,222,113,160, 91, 12,126, 85,100,253,136,103,200,179,175, 95, 71, 75,105, 66,239, 69, 11,192, 40,138,155,173, 68, 25, +167,202, 37,170,218,139, 49,230,202,123, 32,105,115, 44, 9, 31, 86,193,177, 10, 66, 87,227,137,181, 1, 50, 14,248, 27, 22,108, +253,144,149, 37, 46, 94, 87,240,218, 72, 89,179, 90,249,181,231,127, 43,249,160,175,107,235, 76,136,150,219,115,245,117, 25,101, + 35, 13, 1,239,144, 95,188, 23, 74,120,156,252,194,131, 85,182, 82, 60,235, 49, 35, 75, 73, 10, 34,239,245, 0, 41,183, 73,127, +169, 75, 34,214, 2,105, 12,146, 67,165,161,197,232, 68,112,128, 79, 98,104, 80, 90,147,175, 49, 58,125,234,135,177,157,210, 6, + 44,107, 3, 75,217,228, 34, 2,144, 43,192,114,238,159, 99,194,103,153, 72,150, 49, 10,118,139, 35, 28,235, 38,148,237,198,176, +224, 40,244, 69, 0, 29,192, 8,120, 59,132, 85, 2, 11, 67, 1,151, 2,169, 73, 49,176, 5,218,121, 27,153, 49,176,174,207,177, + 85, 30, 90, 8,132, 52,193,241,185,121,168, 68,193,249, 64,115, 50, 55, 87,153,122, 67, 77,197,181, 27, 12,168,170, 23, 38,169, + 23,141,152,244,101,215, 53,144,181,180,145, 40, 92,148,236, 35, 29, 44,156,185,215,230, 23,232, 85, 87,167,108, 93, 61,183,103, +191,198,209, 55, 42,216, 71, 89, 22,227,207, 30,247,150,224, 98, 51, 66, 2, 97,192, 41,101,236, 75,207, 83, 50,147,165,172,169, +171,148, 35, 94,185,232, 71, 50, 17,185, 63,233,163,143,130,157,243,227,154,123, 56, 71, 62,194,245,104,232,140, 61,179, 93,236, +236,182, 1, 72, 12,122,125, 8,157,226,138, 93, 59,240,249, 47, 62,137,249,185, 30,220,244, 78,204, 78,119,209,233,228, 40, 16, +208, 73, 18,228, 23, 93,136, 52,203,161, 80,226,190,167, 78,110, 60, 26,217, 70,127,112, 89, 17,241,122,116,181,192,250,162,207, +151, 67,223,226,177,147,199,198, 93, 58, 30,103,186,240,228, 50, 86,129,245,222, 55, 42,241,147, 62,228,205,248,114,237,106, 26, + 36, 42,223,178,146,149,191, 28,168, 50, 42,100,140,137,225,224,221,200,220,125, 44,188,227, 41, 47,186,228,232,249,122, 16,109, +116,189,196,115, 27,153,176,170, 69,195, 39,181, 40,239, 52, 97, 87,138,102,193,150,231, 75,129, 76,240,162, 46,160,179,230, 31, +179,153,172, 37, 97, 64,162,218, 47, 49,248,110, 50,142,226, 92,159, 9, 76, 88, 92,244,132,159,125, 57, 30, 98,146, 42,198,192, +104, 44,222,125, 63, 30,168,143,181,174, 4, 71, 1,101, 88, 80,102,209,182,248,212, 87,130,115,149, 47, 38, 6,183, 36,138,136, + 91,154,176, 54,158,210,207, 78, 70, 82, 93,146, 80, 68,112,167, 77,154,122,150,144, 86,158,166, 28,136, 39, 41,114,216,129, 52, +243, 68,115,254,163, 35,255, 76, 2,146,250, 18,195, 26, 61,136,241, 27, 93, 85, 71, 91,205,180,183, 94,205,219,251, 42, 29,218, +215, 14,213,182,237, 33,174,118, 17,163, 84, 11,139,144,103,108,153, 87, 72,165, 66, 98, 12,116,106, 80, 12, 75, 20,195, 1, 68, +224,200, 79, 9, 44, 46, 45, 65, 74, 9,143,128,254,226, 2, 11, 64,156,131, 30, 56, 90, 84,200,113,115,250,122, 24,250,114,154, +201, 74, 69, 84,162,105,172,158,123,189,165,146,115,221, 1,124, 22,215,141,218,120,244,151,135, 64,204, 57,203,106,126, 83,206, +179,245,158,133, 34, 22, 34,149, 34,138,166,162,166,193,133,104,178,148,211, 37, 13,229, 3,231, 45,250, 59, 73,201,135, 89,183, +126,104, 78, 1, 84,130, 52,160, 80,211,204,117,204, 44,169,105,134,246,105,170,220, 23,235, 74, 4, 54,183, 66, 98,169, 44, 48, + 61,211,197, 84,154,194,100, 41,138,126, 15,255,124,236, 73,156, 56, 49, 15,184, 18, 75, 18,184,124,199, 94,152, 36, 67,107,170, +133,150,209, 16, 70,192, 11,131, 86,218,133,106, 39,120,234,248,137,141, 51,246, 80, 99,230,113, 79,202,122,142,120, 88,249,172, +215, 35,231, 39,247,227,233, 57, 44,124,229,171,172,157,170,106, 91, 69,159,180,168, 49,143,229, 74,108,136,117,156, 13, 95,123, +150,141,158,135,250, 24, 48, 49,134,169,221, 85, 65,174,120,109,231,200, 87, 29,159, 57, 97,230, 46,153,134,198, 26, 32,138, 9, +155, 81,100, 1,203,100, 37, 80,186, 88, 72,166, 22,189, 30,239,233, 10,218,251,157, 46,237,113, 25,200,130,162,216,106,226, 60, +199,219,200, 90, 96, 28, 75, 69, 90, 18, 51, 15,181,245, 84,236,231, 87,158,252,243, 96, 33,210, 22, 85,150,192,164, 53, 36,106, +235,126,157,180,105,171, 53,117, 41, 43,139, 75,100,220, 30,203,199,138,140,206, 18, 91,187, 12, 71,236,151, 37,205, 65, 89,146, + 59, 68, 49,115,137,149, 9,227,184,173, 37, 30,155,118,206, 17, 83,143,155, 78,178,223, 67, 73, 98,206,221,156, 24,238, 84,135, + 24,181, 49, 80, 51, 83, 8, 82, 35,105,231,208,105,138, 60, 53,208,218,160,155,182,144,167, 41,188,210,104, 39, 57, 84,150,192, +123, 9,145, 39, 8, 38,173, 22, 50,230, 54, 6, 80,192,151,102, 63, 81,158,112, 0,142, 34, 98,109,125,149, 86,101,237,120,144, +156,201,200,156,148,242,225, 88,206, 12,168,107,135, 16,190,242,219, 70, 62,178, 93,140, 61, 10, 17, 14, 52, 22,235,128,225, 0, +161,221, 6,124,128,215, 64,110, 52, 92,225,144,153, 4, 74, 25, 88, 81,194, 59,135, 65,105,225,157, 71,225, 28,158, 56,117,154, +221, 36,108, 10, 86,160,181,136,135,204,121,170, 78,182,158,192,146, 72, 40, 70,102,164, 85, 76,135,145, 97,197,234,100,145,216, + 10,241,204,170, 26,167, 57, 63, 55,237, 96, 20,188, 34, 36, 9,140,165, 37, 33,211,113,174,104, 12,228,209, 76,120, 50,195, 65, +115,108, 41, 50,138,136,143,228, 50,191, 50,173,254, 14, 37,125,182,232, 85,135, 63, 30,110,128,138,126, 4, 22,226, 66, 32,226, + 56,202,215,230,128, 48,241, 52,165,228,140, 24,150,160,241, 75, 84,197, 67,164,196, 87, 37,112,225,142, 14,230, 22,231,113,124, +241, 20, 62,251,232, 81,224,216, 34, 48, 40, 81,218, 18,143,244,150,176,167,221,198,212, 84, 23,202, 72,244, 22, 29,164, 1,118, + 77,207, 32, 19, 45, 12, 18,133,147, 39, 87, 96,236,145, 1,215,199, 60,242, 77,178,107, 34,254,172, 7,214, 45, 87,177, 47, 22, +154,138,230,231,181, 82,111, 99,208, 88,168,107,237,126,252,250,171, 69,240,175,154, 74,235, 55,185, 87,107, 26, 97,140,101,137, +140,254,188, 61,180,215, 6, 75,227, 2, 64, 20,198,227, 94, 83,181,160,227,193,144,246,117, 97, 57,232,149, 43,174, 41,158, 83, +235, 72, 16,136,174,174, 24,180, 8, 84, 1,109, 49,157, 44, 97,166,109,251,204,240, 57, 61, 51,225,243,161,146, 90,234, 28, 11, + 16, 37,187,173,130,160,152,170,146,105,170, 54,236, 94, 77, 86,175, 56,183,234, 26,216,237,175, 69, 85,103,226,245,245, 89,203, +244, 31, 3,253,226,126,205,146, 42,200, 50,102, 41,197,191, 77,139,232, 73, 43,163,201,145,150,178,126,207,154,169,155,140,152, +179, 72, 43,226,183,156, 36, 47, 88, 59,207, 18, 96,166, 77,149,182, 50,174,246,147, 25,116,186, 29,228,173, 14,114, 99,176, 51, +107, 97, 42, 75,208,209, 6,157, 36,195, 76,146, 34,209, 6,221, 36,135, 16,192,174,164,141, 60, 49,112,240,152, 78,114,104,101, + 16,180,132,206, 18, 56,161, 72,147,213,236,207,148,236,103,151,236,227, 28,153,255, 85,149, 11,238,107, 26,157,166,234,108, 84, + 25,140, 75,163, 46,119,192, 71, 49, 47,190,182,112,181,107,216,237, 76, 95, 81, 76,200, 11, 10, 18,113, 14,232,247,225,124, 64, +222,201, 81, 6,139,174, 78, 33, 37,112,122,176,132, 84,165,152, 31,246,161, 4,105,232,167,250, 75,176,206,195, 45, 46,144,134, + 88,122, 46,183, 91,115,119,104,205,230,102, 93,229,247,110, 84, 81, 94, 73,171,243,126, 60, 37, 49,154,228,156,123,230, 48,116, +128,181,236,146,230, 58,106,206, 46, 70,168, 70, 77,198,208, 70,208, 44, 61,199,207, 12,122,148,122, 40,234, 46,132, 1,205,113, +209,103,237, 62,212,222,175,229, 68,143, 42, 42,178, 85, 35,136, 42, 71, 56, 75,168,138, 84, 98,232, 25,158,183, 7,152, 91,170, +245, 62,136,230,240,132,204,158,144,103,250,254,183, 67,208,204,116,205,204, 44, 1, 55, 64,120,226, 36,190,252,197, 35,120,232, + 75,143,224,241,135,143, 1, 39,231,200, 26, 81,246,129,211,115, 40,150, 22,240,144,243,152,209, 41,132, 76, 32,181, 66,158, 25, + 12,134, 5,138,210, 98, 74,165,184,127,176, 72,197, 54,234,193, 86, 53, 98, 45,164,164,151,247, 16, 35, 66, 30,234,106,116, 37, + 68, 46,199, 52, 71, 74,128,172,162,191, 29, 87,251, 90,105, 63,142,238, 17, 42, 97, 52,230,164, 79, 6,142, 46,251,253, 45,204, +154,169, 51, 12, 37, 43,237, 91,212,202,212,206,159,174, 24,122,125, 14,116, 45, 98,220,203,170,250, 94, 96,229,199, 57, 14,238, +146, 20, 35,101,244,184,245, 35,230,154,199,223,163,198, 62,138,223,224, 10,135, 78,208, 30, 44,152, 94,106, 95, 41, 63,138,149, +147, 80,144,165,214, 59, 18, 20,180,167,136,122,237,171, 2, 63,224,115,161, 76,229,215,183, 88, 61,134, 96,108, 29,248,156,217, +115, 32,252,142,197,111, 69, 43,181, 92,159, 53,205,232, 42, 54, 32, 86, 51,141,213,248,164, 98, 43, 96,168, 2,228, 98, 28, 69, +214, 1,236, 86, 4,202,237,216, 9, 76,119, 41,221, 40, 36, 36,225,141, 24, 36,251, 64, 4, 7,190,181,217,148,222,105,115, 4, +123, 11, 59,166,167,208, 54, 45,116, 76,130, 78,146, 99, 38, 75,161, 32,161,165,161, 84, 45,157,162,163, 83,104,109, 0, 8,236, +109,205,162, 95, 14,161,164,196,116,210,130,112, 64, 46, 53,118,152, 22, 44, 60,114,147,194, 9, 1,167, 98,105, 82, 84,126,161, + 36,154,149, 5, 73,122,193,115,128, 29,170, 3, 28, 43,129, 73,206,135,177, 97,101, 63,124, 93, 35,151, 53,230,190,221,146, 96, + 12,166,138,229, 6, 93, 73, 11,172, 12,250, 58, 65,158, 26,204, 23, 3,180,148,129, 86, 26,189,114, 0, 5,137, 94, 89,160,231, + 10, 44, 21, 67,244, 23, 22,105,124, 67, 75, 25, 10, 69, 96,169, 56,169, 2,208, 16,106,105, 44,203,104, 55, 70, 19, 97,208,106, +109, 77,123,100,218, 20,227,129, 43, 81,235,113,254,220, 4,176,172, 7, 89,194, 37, 43, 89,160, 41, 89, 27, 47,125,165, 45,107, + 54,123,167, 6,163,200,220,140, 45, 64,142,211,134,162,115, 83,166,156, 26, 8,210, 76,226, 26,198, 26,225, 10,227, 65,108,130, + 53,126, 17, 53,164,218, 30, 11, 92,200,135,215,235, 5,215, 93,133, 99, 71, 30, 27, 39,108, 74,146,245, 37,112,160,216,185, 48, +203,199,234,129, 34, 84, 65, 84, 49,101, 42,112,122, 31, 64,251, 52,174,243,176,128, 91, 42,241, 72,217,199, 46,157,161,213,202, +160,180,198, 82,111, 8, 95, 6,244,122, 61, 40, 25,112,162, 4,196, 96, 8,161, 0, 17, 2,164,146, 16, 33,140,106,208, 8,128, +152,122,252, 41, 37, 4,107,233,228,117, 11, 92, 90,194, 46, 47, 32,123, 89, 85,153, 68,168, 52,214,114, 29, 1,103,129,131,126, +203, 9,139,214,106,154,226, 86, 50, 21, 89,115,149,229, 25,144,228, 36,168, 7,199,251,112, 21, 55,162, 99, 87, 66, 81,210,254, + 81,156, 50, 26,216,106, 81, 63,247,169,161, 57,137,150,167, 1, 23,255,138,166,124,239,171,207,215, 83,173, 6,158,175, 63,172, +138,214, 40, 78,145, 21,204, 27,130, 37,174,237, 74,178, 76,105, 95,179,160,138, 42, 64, 46,240,254, 23, 92,156,204, 59,122,238, +213,148,129, 49,235, 33,206, 61,125,241,126, 92, 91, 95, 47,125,143,138, 69,228, 97, 81,216,178,101,149,206, 22,106,244, 42, 6, +133, 58,191, 5, 76,189,213, 33,205, 91,176,201,182,224,218,224, 58,214,234,230, 42,115,218,144,223,124,231, 12,144,166, 72, 59, + 45,156,223,238,192, 8,137,110,146, 34, 55, 41,140,148,104,233, 12,146, 37,200,110,210,230, 30, 38, 26,137,212, 80, 8, 24,122, +135,220,228, 16,193,195, 7,143,204,164,240,206,194,134,128,142, 74, 49,116, 5,164, 18,104,155, 20, 94,122, 40,149, 0,218, 32, +128, 55, 99, 96,139,193,192, 81, 64, 94, 97,163,184, 72,230,139,210,113, 78,101, 96, 45,189, 88, 99,211, 76,254,244,235,207,147, +223,138, 13, 86, 39, 30, 37,231, 63, 39, 25, 16, 2,250,174, 68,233,135, 8,222, 99,161, 28, 32,192, 97, 97, 80, 96, 97, 56, 36, + 63,186,141, 1,140, 49,135, 54,208,239, 41, 91, 86, 60, 7,124,197,138,122,117,233,243,140,226, 63,107,152,127, 71,121,186, 98, +156,153,215,115,143,183, 58, 66,125,179,126,116, 37, 40,146, 52,145, 92,222, 54,106,238,204,128, 99, 99,161,161,163,130, 50,129, +173, 28, 14,180,151, 2,184,172,227,160,202,227,183,150, 53,255, 58,225,231,235, 21, 19,190,255,232,195,143,213,184,130, 39, 95, +162,136,101,132,121,203, 42,224,216,163, 79,156,217,224, 67,178,214, 21, 3,136,206, 69,151,188,229, 42,160,197,255,201, 9, 70, + 24,159,209,147, 0,228,150, 22,241, 21,111,209,129, 66,162, 83,244,150,122, 8,176, 56, 49,127, 18, 11,189, 1, 78, 91,143,144, +119, 32,134, 22,162, 28, 64, 72, 49,122, 73, 41,136,105,243,245, 4,107,239,145,161,143,121, 9,150,211,210,163, 63, 57,174,111, +244,191, 23,182, 86, 55,127, 45,183,211, 42, 12,215,218,202, 29,229,183,161, 97, 72,156,211, 68, 83,161,151, 86, 74,123, 68,112, +115,160,181, 50, 30,132, 32, 51,174,240, 84,239,161,197, 85,228,138,126,213, 56,100,224, 88,177, 97, 11,100,108,210, 18,215,208, +232,138,201,196, 98, 64,162, 86,237, 80,123,162,255, 49,122,219,250,170, 96, 82,180, 10, 38,130,178,164, 60,151,243, 45, 81, 53, + 3, 27,197,165,112,238,186,103,179,189,183, 85,214,206,102,172,135,171,197, 80,172,228,234, 25,197, 46, 76, 92, 51, 77,206,204, +178,218,140, 91, 37,242, 77, 37,198,104,170,186,230, 50,132,175, 30,165,251, 68,183, 72, 93, 80, 21,213,222, 61,123,166,238,184, + 48,134, 11,192,226, 0, 40,123, 76,192,121,161,179,188, 98,230,211, 93, 36, 89,134,243,167,103,177, 43,109, 33, 55, 9,180, 86, +200, 84,130, 76, 39,200,149,193, 16, 14, 45,147,195, 57, 7, 37, 37, 82,147,142, 36,146,118,154, 51,251, 8,208, 82,195, 8,129, +194,123,164, 73, 11, 1, 30, 66, 0,221,172, 5, 3, 9, 31, 60,140,144, 16, 74, 82,133, 72,163, 16, 98, 1, 4, 1,210,118,162, +143, 29,156,214,225, 37,117,123, 26, 22, 85,112,223,118,164, 1,181, 58,188,112,114,107,180,168, 72, 44, 4, 53, 74, 40, 3,241, +155, 97,240, 40,217,135,238,124,192,124, 49, 68,111,200, 18,118,212,246, 69,189, 46, 53,167,229, 32, 22,248,240, 92, 40,168, 86, +132,166,206,156, 39,137,195, 90,218,186,247, 85,249,210,200,216,227,117, 66,216,222,226, 48,235,133, 98,181, 32, 30, 28,149,208, +254, 94,236, 85,154, 89,146, 0, 94, 81,230,133,141, 37,141,107, 62,111, 88, 98,228,154,171, 98, 5,174, 2, 56, 28,156, 73,105, + 98, 77,246,186,144, 87,111, 0,130, 48,206, 36,141, 38, 51,102, 76,211, 42,202, 51,153, 69, 36,158,177,248,207,118,105, 39,102, + 29, 68,113,181,244,209,200,140,188,128,155, 63,141,135, 79, 44, 32,203,128,133,197, 37,244,251, 67, 44,245,135,152, 31, 20,104, +167, 9,140, 78,208, 23, 30,194,164, 16,101, 9, 17, 28,100,212,210,163,214, 30, 25, 59,207,199,228,207,101, 53, 34,163,137,118, +197,174,111,229, 68, 7,184,201, 0,186,141, 88,147,234, 41,153,103, 35,100,118, 90, 20,131,180,146,175, 95,114, 90, 87,154,178, + 73,157,211,135,203,114,109,250,194,130, 21,188, 7,242, 54, 51,116, 71,110,167, 97,193,193, 87, 28,180, 21, 75,125,219, 48, 94, +122, 57,106,233,178,150, 66, 44,216, 5, 36,185,225, 72, 52,179, 59, 69, 76, 94,161, 54,207,150,127,175,237,219, 24,241, 46, 80, + 5,154,122, 27,205, 50,164,148, 72,177,185,122,237, 41, 23,202, 81, 92,222, 54,210,192,216,140,201, 57,242, 83,151,182,150,165, +101, 43,154, 45, 5,119, 62,228,207,154,140,221,161,220, 88,101, 61,129,191,186,102,233,140,116, 83,131, 43,234, 49, 93,212, 28, + 55, 48, 44, 16,142,159,102, 75,160, 27, 55,201,199, 40,248, 88, 94,118, 88,108, 5, 83, 47,128,165, 30,181,126, 43, 57, 16, 66, + 37, 64, 59,161,158,222,173, 20,216, 57,133,206,244, 52,178, 44, 69, 87,167,232, 38, 41, 50,147, 67, 74,137, 41,221,130,148, 52, + 48, 41, 53, 49,226,224,145, 39, 45,100, 90,163,180, 14,173, 52,135,117,142,138, 68, 41, 67,210, 57, 4,148, 74, 32, 1, 20,174, + 64,162, 12, 32, 4,202,162, 68,146, 24,216, 96, 73, 40, 80, 10, 66, 8,100, 38, 65, 97, 29,164, 54,100, 49, 83,181,154,191, 73, +108, 52,226, 41,101,195,219,237,145,170, 35, 33, 84,172,113,197,110,101,103,227, 75,142, 27, 81, 43,178,138, 72,238,146, 6,135, +208, 31,160,148,192,176,223,135,133, 64,185,216,227,195,200,121,233,129,115,190, 77,204,139,101,109, 57,250,200, 60,119,118, 82, +182,170, 91, 61, 74, 95,242,227,126,187, 16,198, 53,176,213, 52, 3,132, 51,125,234,246,105,102,232, 38,163,136, 94, 45,184, 63, + 49,143, 51, 88,170,171, 16, 15,174, 16,156, 2,228,136,208,116,218, 68, 76, 3,155, 40, 53,215, 71, 8,174,106, 17, 42, 66,213, + 93,108, 50,176,107, 20,224, 52, 65,253,163, 0, 84, 23,152, 2,215,118, 79, 81,105,148, 43,105, 99,117,179,104,100, 14, 59,118, + 0,123,119, 3,211, 51, 85,247,193,179,217,199,134,107,243,199,186,243, 35,226,164,199,219, 39, 43,185,114,222,118,140,174,246, + 14,232,207,225,241, 99,115,120,180, 40,112,122,176,132,133,225, 0, 18, 2,109,163,209, 74, 52, 90,173, 54, 10,163,225, 77, 10, + 57,112, 16,190,224,216, 91,214,214,173, 29,211,206,151,251,253,140,192,116, 41, 42, 55, 83,204, 57, 7, 87, 72,180,181,253, 14, + 69,116, 66,201,229,251, 50, 76,106,125,235, 9,138, 90, 15,186, 45, 96,122,138,253,213, 43,180,206,141, 66,156, 20,180, 63, 28, +168, 6,194, 96,131,173,160,133, 39,173, 60, 12,170,184,130,148,179,135, 44,170,156,116,205,241, 37,134,115,180, 36, 11,191, 8, + 85, 30,186, 98,115,146, 16, 28,220,201, 46,190,148, 45,127, 49, 63,125,180, 48, 9,251,245, 61,247,122,183, 36, 96,143,178, 76, + 38,155,247,132,205, 9,172,154,221,170,130, 99, 5,134,182, 50,113, 7,206,163, 51,178,138, 43,136, 12, 86,230, 84, 71,133,106, + 29,211,239,150,235,210, 11,206,188, 50,168,170, 74,174, 69,211,235, 53, 45, 98,159, 0,165,201,194, 18,115,239, 53, 7,160,198, +114,176,147,110,208,146,255,231,220,216, 61,183, 38,250,221,215,122,156,171, 90,161,152,110, 14,116,186,152,218,177, 3, 70,105, + 76,155, 12, 59, 59,211,200, 37,249,122, 91, 38, 67,240, 30, 82, 10, 24,109, 70,231, 43, 51, 9, 9, 67,138, 11,170, 8,133,118, +222, 98, 95,187,130,150,128,226,180, 44, 13,133,196, 80,158, 99, 34, 52,188, 36, 13, 83, 11, 5,107, 29,180, 20,200,149,129, 4, + 73,133,198, 72, 4, 37,224,164,170, 77,172,224,224,140,104,246,148,219,103,178,148,177, 30, 52,155,154,214,219,223,122,197, 13, +202,196, 94, 11,210, 30, 29,232,144, 57, 54,221,244, 11, 64,120, 4, 71,145,145,228, 30,113, 24,165,189,136, 88, 20, 72,212, 90, +165,214,162, 93, 61, 63,223, 96, 56,190, 25,133, 24, 47, 56,179, 92,170,208, 74,155,185, 94,229, 43, 6,132,156, 99, 95,215, 25, +196, 93,233, 81,221,113,161, 21,132, 52, 16,165,135, 16, 6, 66, 88, 8, 17, 42,205, 65, 9, 98,232, 50, 80,217, 94,173, 72,178, +215,146, 8, 87, 89,176,182,207, 62,118, 45, 40,247, 52, 70,171,166, 73,197,112, 71,190,182,101, 74, 20,199,212,162,184,198, 38, +250, 99,125,213, 99,123,189,140, 57, 49,192,142, 89,114, 37,120, 22,224,138,226, 76, 33, 99,221,237,112,101,229,142,240,168, 10, +229, 8, 62, 63, 74,241,121,170, 69,242,174,184, 39,106,171, 81,244,129,185, 62,134,172, 57,181,181,129, 48, 10,237,180,141, 86, +150, 33, 75, 53,160, 20,138, 36,133, 76, 50,200, 2,180, 62,206, 87,126,117, 44,159, 85,182,236,218, 71,235,199,104,206, 67,173, +136, 13,199, 61,196, 20, 54, 53,177, 54,117,193, 26,162, 10,206,141,218,221, 86,100, 36,180,187, 85,160,177, 7, 91, 66, 87,177, + 10,148, 69,197,208,215, 43, 40,143, 4, 16,126,230,204,208,152, 90,121,197,240,118,119,137,201,117, 50,170, 23,162, 12,151,107, + 6,249,240, 71, 93, 48, 61, 23, 4,227,250,238, 54,140, 12,161,180, 15,202,106,205,135,190, 10,180, 19,172,169, 59, 77,110, 43, +173,216,239,206,116, 41,250,218, 71,230,123, 57, 30, 28,186,110,211, 54, 87,183,140,238,129, 81,116,185,170,210,234, 52,199, 14, + 8, 85, 21,176,241, 69, 85,242,222,130, 54,136,137,174, 1, 22,200,125,205, 93,182,214,186,203, 90, 42,239,168,149,176,226, 46, +139,241, 25, 56,118, 39,146, 7,201,252, 85,214, 82,222,150,161,157, 91,220, 79, 61,161,138,112,121, 70, 18,222,206, 25,236,216, +185, 11, 90, 40,236, 48, 57,102, 91, 93,120, 27,144, 37, 25,180, 84, 40,202, 18, 74, 10, 24,165,169, 71,188, 81,232, 36, 41, 32, + 21, 18,165,160,133,132, 54, 25, 20,183,235, 84, 82, 66, 9, 1, 37,104,118, 5, 2,130,144,144, 66, 82, 32, 88,209, 71, 38, 21, +213, 61,113, 37, 18,109,160,160,224,225,225, 3,208, 73, 18,142, 90,150, 48, 90,192, 10,201, 5,149, 56,215,210,163, 74, 41,112, +219,164,169,199, 75,186,179,180, 6, 68,194,106,106,229, 66, 19, 85,229, 54,123,238,192,230, 75,146, 34, 11, 46,208, 19,106,218, +114,172,108, 18,205,202, 81, 50, 44,216,124,220,227,224,150,122, 3,158, 88, 33, 78,170,113, 19,252,122,243,164,147,132,210,196, +178,156,152,194,176,120, 90,131,227, 4, 0,145,101,220, 62, 90, 67,176, 95, 85, 56, 91, 49,244,216,157, 79,164, 53,225, 53, 0, +221, 89,218,239,117,179,163, 97, 77,160,224, 28, 94,112, 68,112,198,205,120, 50,110,242, 2, 63,174,169, 71,194, 48,201, 88, 71, + 57,242, 76, 0,140, 24, 39,226,235,205,241, 23,172, 93,104, 78, 39, 90, 90,170, 58,134,153,132, 52, 66, 99,214, 39,208, 74,234, + 14, 56, 98,232,145,216,185, 80, 9,197, 1, 68,136,189,172,250, 88, 47,135, 50, 84, 25, 41,129,180, 47,161, 28, 80,120,148, 62, + 96, 40, 20,118,117, 58, 48, 38, 67,170, 20, 90, 38,197, 84,158,163,147,166, 8,137, 65,217,105, 65,232, 12,162, 95, 64,216, 98, + 77,134,190,252,220, 56,154,223,192,154,102,204,251,143,217, 32, 82,140, 51,244,122, 15, 4,205,117, 10,192,213, 45, 17,131,204, +216, 10,182, 81,147,253, 36, 2,107,149,206, 81,161,162,213, 26,242,212, 3,104,215,123, 63,195,245, 63,218,204,152,103,219,244, +179,149,144, 5, 74, 2,152,206,137,225,181, 51,170,179, 96,120, 78,178,132,198,110, 12, 87,242,228,159, 35, 33,137,173,125, 35, +225, 71, 80,170, 90, 44,171,235,202,154, 98, 21, 42, 77, 57, 6,247,169,104,134, 55, 20, 29, 31, 99, 89,234,110,169,141,210,203, +152,177,162,229,120,147, 29,231,120,227,136, 42, 11, 64,129, 4,223, 68,211, 92,248, 90,187,232,224, 73,171,246,178, 42,123,173, + 88,185, 90,143,160, 29,233,104, 61,214, 34,209,148,217, 98,106, 12, 61,222, 43,128,133,140,168, 20,214,232,248,196,254,218,186, +138,114,134, 35,220,211,100, 20,233,158,182, 58, 48,208,216,145,183, 96,180, 65, 97, 75,180,116,134,224, 28,188, 22,232,102,173, + 17,141,128,118, 72,148,129, 84, 10,109, 45,225, 3, 16,156,131, 82, 18,158,219,119, 90, 87, 2, 65,193,123, 7, 3, 1, 45,104, +113,134,101,129,160, 21,218,105, 11,165,181, 16, 10, 48, 72, 96,157,131,144, 2,218, 75,100,121,130, 65, 97,145,105,137, 12, 9, +150, 44,160, 82,133,190, 18, 40,130,175,124,232,177, 59, 78,146, 97,212, 33,104,171,177, 21,215,140,103,101,212,207,185,214,153, +104,136,170,102,122,220, 64,185,226, 40, 83,214,232, 5, 72, 32,136,145,184,138,183,131, 31,208,255, 23,123, 84,219,185, 92,134, + 56, 88, 84, 4,107,100,126, 95,175,101,193,144, 5, 71, 41, 0, 45,234, 0, 55, 92,220, 82, 38, 29, 0,224,242, 43,113,224,178, + 93,184,252,130,125,216,189,235, 60,180,119,207, 32, 72,133,188,149, 64, 35, 64,166, 9,140,214,200,164, 68, 57, 28, 98,105, 88, + 98,105,105,128,165,197, 62, 6, 11,139, 56,245,212, 81, 60,240,212, 19,248,220,157,159, 64,216,181, 27,232, 45, 64,216, 62,241, +159, 36, 39,193, 53,212,246,126, 12,172, 10,220, 21,170,237,169,174,190,178, 44, 96,113,191, 99, 87,144, 9,114,136,113,211,251, +114,149,166,226,128, 98,228,123,180,110,248,154, 98, 47,215,217,173,176, 44,128,197, 57,206,135, 15,244, 28,245,106,120,102,162, +187,217,154,231, 29, 85,101,199, 72, 91, 99, 55, 69,167,153,225,115,241, 29,167, 89, 11, 91,142,209,112,127, 6, 59,113, 62,180, +133, 40, 10, 20, 58,193, 92,111, 10,121,218, 70, 42, 91, 80, 90, 32,216, 2,153, 84,216, 51,179, 3, 30, 30, 51,137,196,233,222, + 9,244,237, 28,190,112,231,221, 85, 85,221,138,252,175,188, 79,226,126,134,173, 2,231, 70,194, 11,198, 43,210,141,206, 26, 11, + 66, 18, 92,223,130,199, 27,175, 56, 4,119,210, 66,173,210,218, 38, 49, 24,208,107, 43,161, 57,234, 92,129,220,163, 57, 19,139, + 52,229, 88, 16,238,236,167, 64,153, 27,113,189,235,139,223, 54,220,191,128,203,115,219, 90,159,134, 0, 96,177,168,252,196, 75, +220,192, 37,214,116,176, 19,238, 39,139,170,154,165,176, 53, 13,152,203, 27, 27, 91,149,130, 5,187,196,236, 38,186, 13,234,218, +222,140, 5, 6, 98,230, 67, 61, 3,162,240, 85, 79,119,205,189,225,203, 33,231,134,199,231, 2,209,199,184,255, 67,109,191,104, +189, 62, 58, 63,249,118,201, 65,130,182, 22, 16, 43,226,245,121, 31, 42, 93,197, 47,196,150,228, 19,117,254, 5,246,188, 38,108, +217, 38,105, 27, 74,137,104,117,144,236,154,198,121,217, 52,242, 52,129,145, 6, 10, 64,170, 18,104, 67, 62, 23,173, 12, 82,149, + 32,225, 46,107,153, 78, 32,133,131,230, 20, 51, 37, 2,172,245,112,142, 76,233,193, 59,104, 0,169,176,112, 90, 99, 56,164, 86, +161, 54, 0,131,194,162,103, 75,148, 46,192,122,135,158, 29, 2, 66, 34, 56, 7, 27, 44,140, 50, 40, 93,229,119, 28,148, 14,198, + 8,204,245,151, 0, 33,112,188, 63,128, 91, 90, 36,255,202,176,199, 11, 91, 80, 16, 82,105,207, 77,244,240,134,205,238,168, 76, + 94,145,144, 10, 49,206,204, 5,170,195,160,147,170,185,142,228,180,189,232,211, 44,107, 41,120,131, 33, 29,190,222, 18,109,210, +222, 96,107,159,123,106,150, 2,127, 98,106,202,137,211,192,112,105,211,130, 78, 93, 43, 75, 95,242, 34,124,215, 43, 95,138, 11, + 47,223,143,217,217, 22, 10, 33, 96, 2,176, 35, 85, 88,130,132, 81, 18,137, 54,232, 21, 5, 10,206,156, 8,182, 24,149,128,245, +222, 67,115, 52,110,139, 9,252,176,180,176, 46,224,171, 71, 79,227,200,103, 63,143, 15,220,125, 31,240,224, 17, 4,149, 2, 51, + 93,210, 34,132,172,122, 31,107,110,180, 48, 55, 79,135,222,121, 46, 11, 59,172, 24,133,224, 88,138,158,173,180,121,189, 12, 17, +168, 87,223, 27, 99,228, 24, 47, 81,186,158,152,132, 52, 33, 45, 75,103,212,238,181,158,166,153,178, 86, 6, 80,179,160,114,157, +185,180,117,157,192,212, 5,142,132,153, 89,204, 26,224, 50,205, 97,125,109, 47, 71,110, 86,173, 33,166,119, 66,236,189, 4,151, +159,191, 11, 59,179,105, 76,183, 58,164, 40, 74,141,139,206,111, 99,207,238, 41, 76, 79,105,124,245,196, 0, 15,125,233,126,124, +242,225, 47,224,201,143,127,102,148, 6, 29,106, 63,235,175,149,152, 61,213,176,151, 85,190,117, 61, 7, 28, 53, 38,175,184, 7, + 69,212,146,108,237,106,209,116, 26,153, 82,120, 6,196,140,212,215, 77, 74,218, 11,221,140, 54, 81, 82,211,176,235, 13,144, 44, +184,194,153,156, 8,131,208,112,174,168,180,200,250,216, 35, 45,113,142, 44, 66,139,220,205,173,223, 39,173, 93,150,228, 51, 15, +195, 51, 53,218,122,249,211,186,144, 6,216,113, 0, 0, 32, 0, 73, 68, 65, 84, 0,139,122,202,161,223, 56, 61,142,252, 41,182, +151, 45, 49, 94, 43, 32, 90, 59, 39, 91,228,198,204,160,224,171,226,105,158,153,172,225,235,153, 90,163,169,222,160,170,123,176, +217,120, 21,147,212,138, 75,213, 27,217,248,106,190, 99,138,118, 61,245,170, 54, 39, 91,163,169, 43,174,180,165,217,236, 62,213, +193,108,154,195,104,133, 76,167, 72, 36, 7,171,169, 28,131,178,143,110,214,130,132, 68,146, 72,164, 58, 65,154, 26, 40, 37,224, +172, 68,150,164, 8,193, 98, 88, 90,104, 37,161,133, 7,134, 67, 8, 37,144, 7, 18,137,212,192,162, 3,137, 69, 0, 93, 91,194, +106,129,167,132,128,242, 1, 46,145, 8, 33, 33,215,152, 4,132, 80, 8,214, 66,139,170,213,170,225, 26,197,211,121, 27,189,178, +143,118,106,176,132, 14,156, 92, 36,237,209,198,116, 38,253,204, 99,232,192,120,125,240, 51, 76,117,156, 6, 82,128, 2,170,130, + 39, 45, 44,101,223,160,228,239,229, 92, 72,162, 12,120,213, 85,251,241,137, 47, 28,225,198, 98,138, 3, 64, 98, 57,221, 45,126, +238,193, 2,153, 53, 91, 41, 9, 16, 97,194,247, 23, 53,198,104,238, 28, 88,172, 84,200, 58, 18,255, 55,127,207, 91,240,194, 87, + 30,192,174,221, 51,152,205,115,216,178, 68,175, 40,209, 27, 20, 16, 74,194, 14, 45, 78, 23, 20,229,154, 40, 9,167, 4,148, 20, + 80, 16,112, 69, 9, 64,160, 95, 18, 3, 30,246, 11,244, 11,139,233,233, 22, 90,173, 4, 45,157,160,173, 37, 94,122,197, 62,188, +241,234,139,240,198,111,250, 58, 60,122,114, 30,159,250,135,187,240, 63, 62,254,105, 98,226,129,245, 62,205, 53,178,157, 3,220, +176, 98,110,145, 81,106, 77, 81,240,182,172, 74,108,214, 25,250,100, 46,171,101,237,177,206,192, 39,127,174, 23,121, 14,236,217, + 81, 77,220,241, 99,213,189,157, 7,230,251,216, 80,173,241,210,210,158, 26,249,194,107,227, 81, 53, 33, 81,216,241,158, 15, 27, +221, 47, 39,158, 2,116, 23,253,221,187,176,100, 75,100,101,129, 52,105, 99,255,197,187,113,209,222, 54, 46,185,160,131, 68, 43, + 92,176,219,162,149,103, 80, 42,197,135, 30, 89, 4, 30,125,112,164,173,111,168,228,187,171, 89, 20,198,122, 88,212,153, 68, 70, +204, 78,233,138,254, 97,192,140, 92,144,245, 73,213,253,109,207, 0, 26, 18, 45, 65, 74, 19,173,158,153,162,137,153,206,128,190, +165,244, 94, 33, 33,181,132,105, 27, 4,142,179,233,232, 4, 82, 8,248, 16,144, 43,141,190,243,112,240, 48, 34, 67,233, 61, 20, +103, 32,149,214,193,194,195,141, 10, 45,113, 0,167,209,196,236, 68, 78,130,228,128, 11, 58, 45,183, 31,202,149,172, 26,158,232, +217,102,173,156,245,126,230,163, 66, 87,204, 20, 85,189,236,237,132,155, 52, 90, 51, 29,187, 75, 29,215,189,119,224,186, 32, 53, +225, 79,112,151, 72, 55,209, 52,108,163,207, 27,226,254,139, 41,214,190,178, 8, 25, 0, 46, 33,255,254,232,128,177,130, 80,163, + 29,103,239, 83,215, 20,184,130,118, 14,180, 53, 48,179, 3,157, 60, 71, 91,165,232, 36, 25,100, 80, 80, 2, 48, 58,133,115, 67, +180,211, 28, 74, 8, 36, 70, 33, 75, 82,164,121,134,196,208,198,161,121,160, 96, 8, 45, 61,130, 43,161,157,131, 48, 2, 29, 87, + 32,241, 14,137,247,112,174, 4, 66,137,204,121, 4,239,224,189, 69, 22,128,129,176, 84,117, 19, 64,225, 73, 62, 79,117, 2,129, + 0, 47,128, 84, 25,248, 16,160, 37,157, 56,163, 12,156, 35,159, 94,128, 64, 33, 20,249, 57,202,146,203,126,114,202,194,114,209, +174,107, 5,157,108,119,240,215,168,186, 19,251,123, 37,119, 64, 26, 6,242,201,104, 54, 3, 26,174,170,231, 56, 31, 52,213, 64, +170, 32,131,128,145, 26, 78, 6, 60,122,124, 14,111,126,245,245, 40,243, 33,230, 78,204,211, 70,178,150, 11, 88,184,179,219, 27, +245, 84,160, 24,171, 80, 14,168,226, 90,191, 87, 5,224, 69,134,222,158,166, 42,131,105,139, 59,151,197,210,147, 45,110,208, 67, + 27, 55,189,250,133,248,190,239,126, 11,190,235,166,239,193,203, 15,188, 16,211,221, 54,180, 36,166,122,186, 95, 96,169,176,208, +165,133,245, 30,169,243,120,252,196, 60,156, 23, 80, 70, 33, 88,135, 76, 27, 88,239, 49,149, 24,204,245, 10,164, 30, 72,148, 68, +123,166, 3, 47, 4,164, 13,200,179, 4,157,118,142, 32, 4, 84, 16,176,165,133,128, 64,146, 37,184,238,192, 53,248,186,175, 63, +128,125,187,166,241,240,201,163,232,159,236,209, 33, 95,232,147,191, 90,114, 81,141,216,235, 32,176,169,172,223,227, 52, 42, 81, + 69,219,151, 92, 3,115,185,148,190,216,183,187, 78,104,162, 86,161, 57,144,103, 61,105,151,173, 14,249, 77,181, 4,230, 22,104, +222,181, 28, 55, 53,111,116,191,198,212,200, 24,244, 23,235, 90,199,234,106, 58, 84, 65,180,214,158, 89, 78,120, 13,235,203, 40, +232,109,233, 36, 22,145,163, 61,211, 69, 75,165,216,217,157,193,215, 92,216,198,229, 23,239,128,145, 10,157, 86,138, 78,150, 64, + 36, 6,189,178,131,153,233, 93,120,176, 95, 34, 56,143,160, 13,194,249,251, 16, 46,216, 3,236,217, 75,193,144,171, 5,167,174, +227,249,144,232, 42, 0,176,157, 98,223, 11, 46,193,252,177, 57, 14,174,170, 9, 92,214, 82, 96,152,125, 6, 48,244,200,116,102, +218,180, 15, 90, 9, 55,200, 18, 72,186,109,164,105,130, 60, 33, 5,108,214,100,152, 54, 57,118,230,109, 36, 74, 97, 58,237,160, +107,114,104, 41, 49,155,117,208,209, 25,218,105,134, 92, 25, 76,165, 45,180,141,198,180, 54, 72,181, 70, 43, 77, 97,125, 64, 80, + 26,193,212, 44, 77,136,133, 99,120, 47,216,114,237,249, 95,238,181,153,177,123,112, 69,182,216,203,157,179,125,130,175,250, 40, +148,190, 58, 15,178, 86, 35, 34, 6, 28, 39,186,242,181,143,130,251,184, 10,166,224,130, 80, 37,151,181, 45,106, 41,103, 27, 85, + 10, 71,221,218, 98,156, 65,140, 97,137,149, 20, 45,231,252,151,213, 9, 9, 28,203,178,101,209,239,138,125,233, 83, 25, 96,218, + 72,167,167,176, 35,201,161,133,129, 81, 64,110, 50,164, 73,138,224, 45,140, 78,144,232, 12, 64,137, 86,218, 66,154,103,208, 34, + 64,170, 0, 33, 2,197,107,129, 34,181, 69, 8, 16, 92, 79,184, 35, 45,108, 0,210,224, 96,157, 67, 34, 5,242,210,162,112, 5, +116,172,168, 6,139,196,121,244, 80, 98, 80, 82, 62,163,210, 9,156, 45, 96,116,194, 38,252, 0,165, 53,164, 15, 48, 74,161,240, + 1, 90, 8, 24, 24, 20,176, 16, 82,160, 28,198, 98, 25,174,146,186,214, 27,120,162,107,121,140,114,139,234,153, 27,206,247, 84, + 19, 68, 55, 54,100,168,219,159,173,162, 96,148,152,199,108,248, 25,114, 14, 12,145, 18, 48, 10,137,210, 20,179, 0, 64, 10,129, + 32,129, 47,127,245, 97,204,205, 47, 49,243,103,109,127,104, 89, 82, 93,157,177,167, 47,191, 22,238,212,169,202,124, 86,214, 44, + 9,245,249,136,105, 67,101, 57,158,138, 17,209,153,229,142,125,117, 19,148,164, 74,132,211, 93, 96,122, 10, 47,122,249, 53,184, +241,187,223,138,239,249,174,215,227, 37, 87,237,199,190,110, 27,139, 46,160, 37, 4,130, 15, 24,148, 22, 67,235, 96,135, 22,139, + 3,139, 97,127,136,194, 5,180, 90, 57,102,167, 91,112,150, 52, 14, 93,150, 72, 76, 2, 39,128,254,176,128,148, 10,221,196, 64, + 6,129,118,158,227,210, 29,211,104, 75,133, 2, 2, 83,153, 65, 30, 4,230,188,195,233,162,192,210, 82, 15, 39, 7,125,188,237, +199,126, 9,223,247,147,223,139, 87, 92,123, 13,186,193,227,254,207,124,153, 36,250,165,211,212,108,168, 44,137,121, 42, 93, 69, +175, 71,255,123, 76,157, 26,153,233, 86,107,111, 43,170, 6, 27, 35,135,112, 45, 53, 80,202,181,247,154,229,146,154,243, 92,118, +213,139,101, 58,140,201,241,168,218,205,150, 51,117,174,202, 33,118, 27, 79, 59, 58,131,169,107, 13, 49,127, 12,243, 34, 71,123, +170,133,169, 36,199,243,206,159,198, 84, 59,193,244, 84,134, 32, 20,180, 81,200,140,134,208, 10, 58,107, 97,110,161,192,241,249, + 5,132, 52,197,215, 29,184, 12,215,126,205,126, 92,188,179, 11,209,206,112,226,244,252,217,165,243, 1, 68, 88,133, 64,114,241, + 5,216, 59, 53,139,227,115,115, 19,174, 42,206,189,198, 51,160,167,129,226,134, 89,221,156,220, 44,237,156,203,118, 27,164,105, +138,221, 89, 11,185,210,152, 77,186,152,201, 58,104, 39, 45,236,200,167, 97,164, 70, 55,233, 80, 77, 16,165,145, 40,131, 84, 39, + 80, 82, 32,145, 18, 25,167,121,182, 76,130, 34, 0,185, 73,209, 50, 25,114, 45,209, 54, 26, 66,105, 40,163, 81,218,192,101,132, +201, 50, 72, 76,239, 28,149,132,150, 53,215,137, 8,128,206, 41,138,222, 58, 78, 19,100, 41, 57,186,205,192,129,169,165,173,206, +156,228,134, 74,138,207, 17,184, 76,119, 44, 30, 21,107,119,184,130, 92, 25,145, 17, 59,191,241, 51, 20,121,200,168,153, 78,160, +116, 63, 97,185,200, 21,107,241,177, 65, 89, 96,103,126, 8, 20, 0,232,237, 89, 50,117,173, 73, 59,108,229,164, 89, 77,181, 49, +157,102,152, 78,219,208, 74, 66, 10, 32, 81, 26,214, 89,116,210, 46,188,119, 80, 10,152,106, 77, 35, 73, 21, 50, 99, 32,132,135, + 18, 20,196, 21, 64,233,109, 74, 10, 88, 91, 82,219,116, 9,104,231,144,115,161,142,196,123, 40,231, 49, 12,142,252,159,222, 66, +120, 65,193,119,222,195,133,152,173, 16,224,189, 67, 16, 26,130,163,180,165, 16, 80, 66, 64, 10, 9, 15,138, 34,148, 66,192, 33, +160,165, 19,244,157, 69, 16, 18, 46,148, 44, 40,176,100, 22, 56,204,119,173,195, 89,247, 7,249, 45,170,103,222,105, 19, 83, 83, +226,204,136,252,232, 48,140,154,156,229,102, 8, 14, 85,148,116, 44,138,144,155,209, 6,117, 66,192, 40,201, 21, 60, 5, 66, 16, + 72,210,148, 2,128, 53, 71,238,198, 90,195, 67,187, 70, 81, 24, 13,119,234, 4, 17, 57,203,117,246,235, 13, 71,226, 28,198,130, + 51, 43,205, 73, 43, 35,109, 60, 75, 43, 38,100,200, 84,184,235,162, 61,232, 25,131,239,127,195,155,241,154,131, 47,199,133, 23, +238,134,181, 1,137, 45,113,186, 95,224,177, 19,115,120,234,212, 34, 78,205,247,113,106,110, 17,110, 88,114,141,131,128,211,167, +230, 81, 14, 75,244, 22,250, 88, 90,234,195, 46,245,176, 48,116, 40, 29, 96, 18,131,197,133, 1,188,243,112, 11, 75,152, 31, 20, +152, 31, 20, 40,157, 69,191, 44,112,122, 48,196,209,165, 30, 22, 6, 67, 28,239,245,240,212,194, 18, 22,251, 67, 12, 6, 5,190, +242,200, 28,238,253,220,231,240,215, 31,254, 27,124,195, 55,126, 3, 46,191,106, 63, 46,127,254, 37,184,255,232, 49, 12,231,230, +184,108, 40,103, 33, 36,154,155,190,248, 42,168,170,180,220,184, 98, 29,146,252,168, 28,233, 4, 99,175,207,243, 90, 81,235,158, +250, 3,252,255,212,189, 89,175,165,217,121,223,247, 91,227, 59,236,225, 76, 85,213, 85,213, 35,217, 77,138,162, 72,145, 14,101, +201, 84, 36, 69, 52, 36, 68,146, 45, 89,138,146, 72,182,128, 36,178,157,139, 36,128,131, 0,185,200,167,200,125,130, 92,229, 19, +228,194,128, 1, 33,130,156,196,144, 5, 77, 16, 35,155,180, 40,138, 17,201,158,187,171,206,176,167,247, 93, 99, 46,214,122,207, +222, 85,221, 93,221, 93, 85,164,232, 13,116,215,116,234,212, 57,239, 94,107, 61,235,249, 63,255, 97,202,105,190,134,237, 30, 30, +163, 77,159, 79, 30, 48,238, 31,231,245,216,133, 76, 35,234, 41,120, 93,212,165, 44, 63,250, 53,231, 88,142,231, 75, 12, 45, 55, + 78, 58,132, 80,244,157,198, 85, 2,251,224, 64, 41,193,229,229,142,111, 94, 93,112,231,153, 57, 47,156,158,210,216,150, 59,207, +220,226,246,233, 13,210, 92,241,214, 59,231,143, 95,216,175,187,198, 76,124,231,138,243,222,146,191,243,106,189,252, 79,142,122, + 85,159, 45,197,223, 92,166,129,166, 16,126, 59, 3,167,179,170, 78,106,192, 42,230,139, 25,115,221,114,214,244,180,182,101,217, + 46,232,181,165, 55, 29,125,211,131,144,244,166,197, 40, 77,202,137,222,116, 52,198, 98,148, 70, 73,137, 20, 26, 37, 21,173,105, + 32,103,150,237,156, 86, 53, 12,209,177,108, 58,230,182,165,211, 22,131,132, 70, 50,230,234,217, 64,220,135,191,124,175, 47, 59, + 83,164, 43,236,173,158,135,109,229, 17,168,253, 62, 74,113, 79,130, 27,199,242,224,114,133,197,242, 52, 94, 43, 99,224,194, 59, + 16,123,153,166,115,251, 44,121,204, 1,115,126,178, 26,142, 31,127,109, 73,117,144,199, 46, 15,172,113, 15,228,149, 19, 74, 48, +133,233,152,138,134,196,248,132, 69, 93, 85,194, 69,223,194,124,129,109,123, 90, 85,230,227,173,214,244,182,131,148,232,154,150, +144, 35,139,182, 69, 43,141,181,170,214,161, 88,116,227,120,148,200, 8,161, 16, 49, 66,244, 88,107,209, 49, 96,115, 68, 74,133, + 26, 29, 34,102, 68, 76,200,148,138, 65, 13, 18,153, 33, 9, 65,139,192,147,174, 27,152, 84,187, 25,173, 12,141,212, 8, 33,105, +149,193, 87,196, 64, 0, 62, 39,172, 50,196, 28,112, 62,178,176, 13,187,232,113, 76, 27,113,178, 58,172,249,213, 31,118,187, 20, + 7,214,167, 79, 75, 22,215,117, 5, 9,201,234,189, 5,118,234,226,174,173, 42,171, 87,253,181,100,164,218, 51,118, 53, 4, 64, +234,122,115, 21,104,163,138, 60, 29, 48, 82,161,181,194,133, 88,173, 79,171, 6, 52,139,162, 25,125,212,248, 65,203, 34,245,154, + 24,165, 74,236, 3, 47, 14,195, 31,166,185,147,200,239,223, 85,154,106,188, 32, 4, 88,203,231,191,240, 89,126,250, 71, 94,230, +159,252,151,191,202,223,255,202,151,249,212, 39, 95,225,159,255,235,127,201, 43,207,127,146,182, 51, 92,109,183,188,123,185,229, +237,203, 45,126,181,101,179, 25,136, 49,193,206,115,113,239,138,203,149,195,111, 3,195,106,195,226,248, 6,166,233, 89,159,175, + 24, 99, 34,141, 25,219,247, 40,165,121,245,219,111,240,206, 91,247,216, 93, 94,241,238,189,251,140,227,136,219, 6,222,124,231, +156, 55,222,190,199,110, 53,178,189, 88,115,117,181,101,187,218,178,186, 92,225,199,196,255,246,191,252,239,165,198,238, 60,159, +249,194,223,162,233, 37,203,227, 57,127,235,179,159,194, 37,207,107, 95,251,102,121,175,142, 22,181,216,214,131, 76, 30,132,140, +184,240,160,245,228,135, 65,114,248,114, 72,136, 3,228,227,129,121,220,199, 41,166, 15,217,182, 10,234,184,169, 22,243, 28, 15, + 72,122,223,207, 78, 51, 61,216,169,107,189,151,169,165,136,216, 57,118, 77,203,172, 49,164,220,112,181,139, 88, 45, 81, 82,113, +111,200, 24, 37,240, 62,112,185, 9,124,245,219,175,242,236,145,226,206,242,152,110,185,224,232,120, 65,211, 24,206,102,115,222, + 22, 35, 87,111,220,127,252,142,113,114, 81,243,142,124,255, 98,127, 89, 74, 21,165,176, 7,177,185,153,167,255, 12,167,209,150, +209,251, 16,151,201, 3,220,244,245,223,111, 11,121,121, 94,213, 26,139, 14,180,164,209, 45,167, 77,203, 51,253, 49,203,238,136, +153,233, 56,153, 29, 99,164,162,181, 51,148,208,244,186, 69,203, 50, 91,159, 53,165,179, 23, 73,160,148, 70,203, 98, 0,102,165, +162,211, 13, 90,107,122,221,163,180,230,180, 61, 42,205,147,212, 8, 4,189,177,232, 36, 9, 42, 49,162,246, 55,181,244,125, 40, +236,147, 99,160, 81, 7, 17,174,213, 95, 34,196,125, 76,174, 86,133,247, 33,216,123,209, 91,189,151,185,169,170,163,215,106,159, +214,168,170, 35,169,169, 35,176, 92, 27, 41, 23,246,223,223,227,162,181, 82, 84,137,117,172, 30, 36,213,128,102,242,190,135,194, + 79, 48,146,235, 67,252, 0,245,123,178,162,110,171, 15,173,109, 97,121, 68, 99, 13,167, 93,135, 17, 10, 37, 37, 70,106,180,210, +228,156,105,180,194, 84,200,202, 72,137,212, 10, 69,164,209, 18, 5,152, 4, 70, 73,148,200,104, 4, 50, 70, 98,206, 68, 63, 34, + 83,198,198, 84,237, 33, 51, 58, 37,154, 92,228,175, 1,129, 65,224, 99, 64, 11,137, 65,178,145, 2, 41, 37, 93, 83, 24,170,141, +178, 52, 90, 97,109, 71,171, 45, 41, 7,180, 54, 24, 33,217, 69, 95,141,110,202,215,185, 9,158, 44, 4, 49, 30, 6,166, 76, 15, +244, 67,130, 90,230, 51,232,151, 37,172,198,213,226,250,164, 16,188,172,139, 39,248,247,122,124, 79, 93,220,212,145, 95,187, 98, + 29, 26, 22,136,122,131, 84,133, 1,111, 5,141,181,132,152, 17, 72, 4, 2, 41, 96, 8,161,106,217,107, 23, 57, 49,180,169,112, +241, 7,117,235,114,210, 63,203,125,242, 82, 22,251, 27,249,225,247, 33, 14,139,124,124, 47, 73, 70, 73,154, 79, 62,207,111,253, +252,127,200,207,124,229, 75,124,246, 71, 63, 69, 99, 53, 43, 23,136,110,228, 19,207,188,192,239,255,225,159,240,226,179,183,217, +109, 3,235,171, 45,171,171, 43,214, 23, 87,172,214,107,194,198,147,145,108, 86,107,118,155, 45, 18,133,146, 13,198,118, 28,205, + 23, 72,105,202,179, 8, 96,173, 37, 68,137,214, 13, 82, 25, 98, 16,196, 24,105,250, 5,218,182,220,127,251,109,182,155, 53,227, +118,195,119,222,120,157,113,179, 97,187, 90,115,113,255, 62,227,176,227,107, 95,255, 43,126,245, 63,249, 13,254,221, 87,255,140, + 63,254,163, 63,226, 19, 47, 61,207,118,181,197,246, 45,159,249,236,167,232,143,150,124,243,254, 5,108, 15, 66, 39,166, 27,248, + 4,249,153,154, 57, 16,252, 71, 43, 34,135,249, 2,211,129,117, 72,240,122, 28, 75,227, 67,251,217, 9, 98,156,230,144, 31,228, + 61,240,180,114, 11, 30, 9,191,107,132,150, 15,232,206,203,254,119,184, 97, 71,238,103, 56, 23,185, 90,101,118, 14,130, 20,215, +145, 5,231, 91,207,235,175, 95,112,255,254, 59, 12,126,199,243,103,183,184,243,236, 45, 82, 74,184,224,112,110, 96,166, 52,127, +121,255, 10,174, 86, 79,167,120, 60,188, 39,174,121, 20, 60,221,226,213,183,229,243, 47,142,203,251,117,116, 90,201,111, 51,184, +253, 12,156,157, 21,147,161,163,101, 41,226,203,234, 7,223, 22, 34,220,141,217,130, 59,139, 37,203,118,201,162, 91,208,105,203, +178, 93,160,132,196, 40, 67,111,122,180,212,100, 18, 74,234, 18,164,149, 5, 70,153,122,102, 75,140,178, 40,161, 48,186,197,167, +192,162,153,209,180, 29,173,105,139, 97,101,202,104,109,104,109, 91, 1, 37, 65,175, 44, 86,103,182, 89,145,235, 94,191, 30,195, +125,175, 94,125, 91, 57, 59, 21, 29,155, 28, 3, 83, 44,197,219,202,189,183,194,228, 27, 34,168,126, 3,149,221,174,204, 62,114, + 54, 23,120, 27, 87, 25,253,147, 68, 47,198,125,231, 31,211, 62,145,116,202,139,143,177,134,155,241,209,160,248, 73, 34, 60,241, + 54, 68,174,193,104,114,111, 46,150,170,181,177, 60,216, 32, 79, 60, 83, 55,186, 22,137,182, 46, 26,203,173,126,137,200, 18,173, + 21, 51,211,225, 98,196,106,141, 68,162,133, 64,107,115,173,249, 47,158, 5,138,150,128, 17, 5,114,215,201,163,132, 66, 40,208, +209, 49,134, 84,102,241,131, 67,121, 7,174, 16,154, 92,240,216, 84, 66, 28, 76, 40,100,185,136, 64, 86,110, 88, 6,180,182, 72, +173, 17, 82,163,165,164,237,218,194,184,111, 13, 50,107, 20, 2, 33, 50, 90,154,242,177, 64,204,137,153,177, 92,142, 59, 98,168, +115,151, 88,175,112,206,191,127,192,253,225,107,113, 82, 28,151, 76,117, 45, 10,225,201,225, 55, 31,202,194,252, 32,147,150,247, + 36, 70,213, 27,176,152,136, 41,213, 53,174, 47, 68, 51, 89, 9, 98, 5,177, 17,244,214,178,157,146,127, 66,222, 91,155, 78, 69, + 60,171,154,158,244,136,220, 98, 43, 15,228, 75,105, 47,231, 57, 36,119, 29, 90,133,190,207, 33,247,236, 79,253, 56,191,244,243, + 63,205,127,252,149, 47,115,124,251, 20,173, 52, 62, 70,222,190,191,226,106,189, 67,187,192,110, 28,121,241,238, 29, 82,148,228, + 0, 42,105,136, 18,163,151, 24,213,113,122,251, 46,253,108,142, 53, 11,158,123,225, 37,186,249, 17, 93,219,161,181,197,197,145, +101,219,210,216,150,147, 27,199,220,185,121,140,182,134,229,124,206,217,141, 19, 78,206, 78,232,102, 75,186,121,203, 75, 47,220, + 70, 53,115,220,214,177,217,238,208,210,178,243, 37, 14,116,189,219, 17,131,231,199,190,248, 89,180,142, 60,255,169, 23,249,194, + 23, 62, 13, 73,112,121,113,206,230, 98,133,178, 45,207,125,242, 5,238,206,123,254,237,159,254,121,217, 39, 20,130, 98,185, 81, + 15,229,178, 55, 62,225,108, 49, 31,204,203,159,212,189, 76, 86,167,143,107,187, 3,177,119,236,154,210, 22,167,206, 48,231,239, + 77, 7, 95,187, 79, 33,229,251,178,251,133,146,101, 31,134,145,171,203,115, 94,195, 51,134,129,232, 10,169,209,197,200,232, 18, +175,189,181, 98,189, 26, 73,110,197,189,237, 37,103,179, 25, 70, 25,150,199, 51, 46,206, 47,217, 12,107, 98, 12,252,197, 95,124, +183, 72, 55,159, 58,216,144, 14,230,156,226,201,231,247,211,179, 49, 61, 44, 79,232,111,158,225,219, 22,110, 28,151, 98,189,152, +195,141, 83, 88, 44,225,228,102, 65,247, 78, 78,145,203, 37,207,158,157,241,204, 98, 65,167, 37, 55,250, 57, 71,109, 79,163, 44, + 55,103,199, 72, 4,139,110, 9, 66, 32,208,116, 77, 15, 57,163,181, 68, 25,131,210, 10,211, 40, 76,211,144, 66, 68,106, 73,219, + 53, 4, 31,177, 74,145, 50,116,218,148,130,222,119, 36, 95, 81, 10,153, 17, 41,227,130, 43, 57, 30,169,228,114, 52,186,101, 23, + 29,163,172,233,144,168,247,111, 84,158, 22,244, 62, 21,236,107,219, 87, 81,214,181,119,101,198,191, 29,202,243,155,144,179,209, +149, 34, 46, 83, 57,191, 91,187,175,194,177,186,225,217,202, 25, 50,125, 81,127,184, 80,205,129,194,254, 74, 58, 65,226, 19,146, + 38, 68,205,136,248, 24,151,225,233, 60, 23, 7, 17,183, 83,108,173, 47, 40,247, 3, 72,221,193, 26,123,252,162,174,116,121, 48, + 71, 61,204,143, 88,206,103,197,214, 85, 40,230,141, 37,198, 72,111,139, 65,135, 86, 10, 37, 4, 90,107,140, 84, 24, 35,145, 57, +210,202,132,170, 51,111, 43, 51, 17,129, 16, 9,225, 67,209,219,239,182,164,209, 49,250, 1,181,115,164, 24, 81, 62,176,168,218, + 69, 19, 83, 33,211,145,145, 66,225,144, 8, 20,201, 88,178,148,196,156, 48,141, 69,169,210,169,182,125,139,214, 10, 35, 13, 34, +231, 50, 75,182,150,144,139,148, 66,107,195, 24, 28, 33, 69,118,185,186,126,185,106,197, 41,100,121,152,143,154, 47,247,243,125, +134,245,118, 91,160, 82, 45,159,112,198,200, 71, 95, 4,147, 79,242,244,163,168,173,243,236,164,228, 33,207,123,178,216,123,180, +199,148, 24,199,128,146,150, 60,214, 46,111,234,214,199,218, 13, 90, 9, 27, 87, 36, 28,143, 42, 46, 42,215,220,100, 81, 46, 1, +211,191,115,109,111,124, 16,105,121,120,200,125,238, 11,252, 23,191,241,203,252,204, 87,126,130,126,185,192,121,143,243, 17,231, + 60, 23,247,175,184,186,119,137,219, 5,118,187,128,209,134, 97,231,217, 92,174,105,237, 12,107, 91, 78,206, 78,185,253,204, 41, +207, 62,123,131,227,101, 79,223,181,156,157, 30,209,180,150, 89,215,114,227,198, 49,243,229, 12,221, 54, 44,143, 22,204,250,150, +166, 85,244,125,195,115,103,115, 60, 18,163, 52,125,219,112,251,198,146,101, 59,195,199,204,243,183,142,121,225,133,187,220,123, +103, 68, 36,193,201,226,148,179, 27,119,184,188,186,207, 59,235, 13,110,116, 44,151, 75, 86,171, 11,134,209, 49,155,205, 32, 11, + 86,235, 13,113, 28,145, 82,241,210,167, 63, 65,219, 89,190,249,245,111,212,141,239,247, 35,147,137, 72,248, 36,235,226,208,223, +253, 73,215,215,100,243, 58,133,154,240,144,111,252,196,149,184,134, 36,229,211, 33,130,190, 31,234,244,126,100,185,131,143, 17, + 57, 67,242,228,119,207,185, 60,191,226,117, 55,242,206,249, 37,140,150,139, 11,199,229,249, 21,227,120,133, 22,153,222, 24,214, +195,192,189,203,203, 18,111,224, 71, 82, 30,249, 63,254,252,235,228, 55,239,125,112,172,242, 19, 23,246, 10,197, 63,141, 78,180, +111,203,136,235,229,231, 65,105,210,201, 49,185, 81,208,245,229,178, 62,155, 21,255, 7, 91, 83, 49,151,199, 60,183, 56,225,133, +197, 49,187, 80, 72,201,119,251, 37,119, 23,167,144, 21, 39,179, 19, 0,206,102,167,136, 44,233,219, 25,182,111,216, 14, 27, 22, +199, 75, 80, 10,171, 45,109,107,201, 66, 33, 99,198,244,197,111, 68, 8,129,170,190, 33,182,209,116,179, 57, 57,229,154,178, 43, + 73, 41,149,166, 33, 69,180,212, 4, 18, 70, 27, 98,136,236,188,167,215,150, 44, 5,187, 84, 27,166, 41,161,240,105,159,143,241, +161,162,151, 38, 43,237, 84, 10,121,172,161, 77,219, 97, 79, 94,157,230,229,136,253,185, 29, 15, 18, 42,167,188,120, 33,246,190, + 12,178,169,112,125, 85, 24,201,131, 70, 38,214, 17,166,146,123,247,184,143,179,183,205,228,172, 55,133,143,229, 3,203,101,181, + 15,221,114, 15, 34,116,143, 87,212,117, 77,151,233, 42,137,171, 43,190,215,183,154, 25,141, 86,164, 84, 34, 79,203,108, 69, 34, +165,196, 42,131, 18,178,160,186,201, 51, 83, 2,171, 36, 86, 22, 35,215, 32, 5, 45, 16, 93, 33, 42,177, 25,112,110,100,187,219, + 18, 71,143,242,129,185,139,100, 33, 8, 46,211,139,253,244, 77, 10, 67, 20, 18, 33, 53,209, 90,132,182, 72,221,208,216,134, 36, + 20,166,181, 24, 85, 50,150,149,210, 8, 5, 50,171,218, 13, 58,164,208,248, 88,194, 32,124, 12,228, 12, 67,240,196,213,102, 47, + 33, 10, 97,127,107,123,212,124, 57,228,210, 89,239, 66,145,244, 76, 11, 74,126,143, 10,251, 52, 91, 59,156,189, 78,133, 61,213, +188,120, 97, 75,172,226,102, 87, 96,248, 41, 87,184, 46,178,236,253,126, 33, 6, 95, 55, 89,173,214, 62, 21,199,183, 71, 29,224, +211,124, 49,186,210,221, 77,112,243, 52,251, 61,244,255,158, 66, 24, 62,245, 57,126,253, 87,190,194, 47,255,226,207,240,220, 43, +119, 73, 33, 97, 26, 69, 74, 2,183, 26,217, 94,109,217, 94,108, 8, 33,145,178, 68,209,208,181,115,102,253,146,103,158,185, 69, +107, 27,148, 52,244,139,142, 69,219,209,181,134, 70, 25,206,142,103,220, 60,233,121,241,108,198,173,147,158,190, 85,204, 91,201, +173,163,150,121,219, 48,159,181,196, 44,232,117, 25, 17,205,172, 34,132,132, 16, 18,171, 20,243, 89, 67,107, 13,202,104,110, 46, + 58, 62,249,210, 29,206,135, 68, 51, 91,240, 35, 63,244, 50,219,171,128, 74,158,191,190,119,159,133, 49,204,218,142,221,176, 67, + 37,201,108, 62, 71,105, 93,247, 90, 66, 54,150, 23, 63,245, 18, 9,193,119,190,241, 87,213, 86, 50, 87,253,122, 53, 56,250, 65, +121, 29,242, 51,200,251, 98,212,204, 75, 39,104,186,253, 40, 74, 60, 20, 68,241, 52,214,245, 67,190, 11, 31,106,245, 58,113, 52, +142,230,132,113,203, 16, 70, 98, 26, 9,126,133,206,146,171,225, 62, 34,134, 2,185,103,135, 79, 9,231, 6,190,254,250,119,249, + 55,111,191,201,230, 91,247,224,242,252,233,146,210,228, 83, 30, 75, 52,182,140,182,142,142,225,249,103,160,237,120,246,238, 93, +152,117, 4,221, 34,102, 11,178, 52,165,144, 43, 1,205, 81, 57, 15,155, 5,167,182, 65,234,150,147,217, 17,183,250, 30,135,161, + 21,154,174,105,176,202, 50,107, 58,180,212,232,166, 67, 55, 10, 25, 5,203,147, 35,226,224,104,154,166, 20,110, 18, 70, 20, 8, + 62, 19, 80, 20,254,147,212,178, 4,107, 41, 10,177,217,104, 16,145,228, 35,155,113, 75, 14,129, 32, 18, 42, 75, 92,116,197,206, + 59,102,124,114,168,154,131, 30,181,192,249,186,158,198,167,200,134,159,210,207, 38, 98,170,213,251,117,173,196, 94,213,100,212, + 30,113,158,136,188,215,166, 57,105,207,121, 17,178,156,159,147,183,123,206, 5,158,143, 53, 54, 86, 86,200,126, 24,203, 30,137, +190,120,225, 7, 95, 57, 70,149, 91,165,244,199,191, 4, 79, 35,182,148,246, 36,217,107, 53, 76,222,171, 96, 30,122,118,143, 87, +212,167,194, 97,139, 55,240,252,236,132, 83, 59, 35,103,129, 84,146, 70,119, 24, 89,188,217, 5,146, 70,149, 25,186, 36,161,100, +198, 2, 70,100, 90,163,201, 34,161, 82, 66,229,140, 27, 7,164,143,228,209,179, 27, 7,196, 48, 96,119, 1,231, 10,244,174,146, + 64,103,232,180, 66, 43,131, 82,154,166,159,163,219, 30,154, 30,219,206, 80, 77,139,210, 6,217, 54, 8,107, 16,170, 28,222,212, + 57,187,136,197, 59, 62,196, 2, 9,133,156,137, 41, 33, 37, 92, 13,107,148,210,132, 16, 56, 31, 6,178,168, 93,167,243, 92,167, + 2, 61,106, 62, 22, 83,185,249,143,110, 95,208, 15, 33,104, 25,247, 48,230,211,218,252,211,141, 78,214, 64,137,201,207,123, 90, +176,153, 98,107,170, 39,248,169,118, 91,177,194, 66, 62,148, 13,144,235,101, 68,169, 26,180, 80, 25,150,155,243, 42,135, 10,143, +247,181, 77, 48,243, 4, 35, 29,189,200, 47,252,202, 79,243, 15,126,249,103,121,233, 51,159,192, 54,138,237,214,177, 27, 60,227, +214, 51,108, 71,220, 48, 18,156,199, 59,143, 18,150,229,226,132,179,179, 19,102,125, 75,223,155, 26,234,163,176,157,162,177,138, + 89,103, 88, 54,134,219, 39, 45, 39,139,158,190,105,144,170, 32, 38,157,149, 44, 91,141,150, 2, 37, 10,145, 42, 35,171,202,162, + 32, 8, 82,194,141,133,165,111, 20,189,213,228,148,139,188, 13, 73,215,104,158,187,125, 66,210,154,148, 51,139,229, 49,199,167, +183,136,235,129,111,191,243, 22, 86, 75,164, 84,188,179, 94,209, 40,193, 48, 14,228, 24,177,218,144,147, 68,104,205, 75,159,124, +129,115, 63,240,206,119, 94, 43, 93,194,118, 34,211, 72, 30,116,188,248, 1, 40,236,135, 23, 67, 83,209,184,190,169, 7,159, 46, +107, 68,240,224,200,231, 73,215,242, 7,196,179,126, 96,178,218,100,137,125,243, 6,159,249,212, 43,124,254,149, 31, 98,217, 88, +132,202, 92,172, 46, 25,253,150,139,221,134,215, 46,239,145,200, 24,101, 24, 82,224,171,175,191,205,155, 95,255, 14,187,111,125, + 7,214,171,167, 88,208,167,129, 41, 79,199,163, 98,130,218,103,115,184,123, 11,158,191, 13, 55,110,243,195, 55,158,229,164,233, + 72, 8, 62, 57, 63, 98,200,176, 52, 13, 27,219, 86, 6,182, 0, 59,227,110, 55, 99,214, 20,227, 36,163, 53, 74,104, 22, 77,139, +233,122, 22,182,135, 20,176,218, 34,164,161,237,117, 33,189,117,109, 49, 8,155,119, 53,147, 71,163,107,231, 77, 74, 72, 36, 89, + 56,132,148,165, 54,250, 34,215,146,178, 36, 18,134, 24,137, 68,164,128,221,232, 17, 66, 34, 73,228, 36, 24,115,153, 1,207,187, + 25, 91, 55,208, 54, 13, 90, 40,118, 58, 19, 69, 77,134, 20, 21, 9, 18,117,205, 61, 14,194,209,216,154, 36, 57,117,205,181,169, +240,149,196, 54, 89, 11, 78,222, 15,177,234,208,243, 4,207,219,189, 29,110,136,181,121,173, 99, 40, 37,106,167, 47,170,172,172, + 6,206,104, 85,246, 68,223, 22,102,189,209,133,100, 42,171,213,110, 62,200, 13,120,156,189,114,120,129,158,198,151,249,176, 99, +127,239,231,124, 60, 71,185,201, 54,112,110, 97, 54,199,231,140,173,118,121, 11, 91,102,233,160, 80,178,204,174, 11,153, 60,160, +149, 32,197, 68,223,154,226,176, 56, 56,176,170,100,159,123,200, 33,226,134, 1,225, 60,202,143,196,171, 13, 73,104,244, 54, 16, + 20, 12, 10, 90,161,217, 24,133, 54, 22,213,119, 68,221,210, 88,131, 64, 18,117,233,250, 11,244, 92,159,171, 12, 56, 38,213,151, + 32,235,162, 3,179,157, 98,220, 66,171, 52, 49, 6,182,206,211,155,134,149,171,198, 20,147,233, 73,160,204,100, 92,101, 41,199, +244,225,102, 18, 70, 86,143,225,201, 91,187,158,221,170,125,240, 25, 62,169,125,228,161, 22,252,240,247, 66,216,235,197, 1,220, + 37,232,227, 98, 60,147,124,149,172,181,123, 7,167,139, 77,249,179,144,247, 30,206, 91,247, 24,201, 24,239,243, 58,112,229,250, +185,255,252, 87,248,210, 79,253, 24,167,167,115, 98, 74, 92, 93,142,172,175,174, 72, 41,145, 35, 24,221, 18,182, 1,163, 91, 8, + 13,253,201, 13, 78, 79,230, 88,107,232, 27,203,124,102, 9, 33,147, 17,228, 36, 80,141,100,102, 44, 11,107, 80,100,156,139, 8, + 60, 66, 42, 92,128,139, 77, 34,101,207,172, 73,116, 86,178, 13,133, 21, 93,136,183,138,227,121, 33, 77, 22,133, 77, 66, 43,113, +157,227, 81, 87, 11,222, 39,122,107,248,210, 75, 55,216,141,129,123,219,200, 38, 30,211,205,231, 12,191,251, 59,136,148,137, 34, + 50,134,192,197,234,138, 69,191,100,244,145,198, 59,210,213, 21,110,216, 50, 63, 57,226, 23,126,254, 43, 92, 13,142, 87,255,228, +223, 61,232,155,126,237,199,249, 3,242,234,219,253,177, 48,173,143,113,138,118,116,149, 91,193,131,133, 75,235, 39, 91,199, 47, +127,178,116, 84, 95,255,198,251, 79,119,106,164,106,174, 26,222,137,127,214, 62,115,131,163,217, 18, 45, 21, 39,203, 99,186,174, + 33,249,196, 27,151,111,113,181,115,220,219,236,120,103,187, 99, 27, 61,241,254, 21,249,114, 11,227,138,252, 52, 45, 91, 63, 40, + 47,254,113, 29,197,160, 6,170,204,225,185,103,224,248, 4, 22, 55,144, 41, 51,235,231,184,221,154,231, 23, 55,184, 55,172,249, +100,211, 48, 2, 23,227,200,168,138,177, 80,223, 52,244, 70,163,133,198, 54,246, 90,154, 37,181,166,207,145,224, 29,182,233, 49, + 66, 33,165, 68, 38,137,238, 44, 70, 78,254, 4,245,172, 84, 16,115,192,200, 76, 96, 36,185,128, 18,153,156, 51, 46, 4,148, 46, +197,114, 28,124,149, 84, 41, 98, 40,157,173,173,166, 72, 67, 8,100,114,137,191,214,154, 24, 35,103,179, 35, 6, 63, 98,103, 22, + 45, 19,219,214,242,154, 53,165,136,174,135,114,238, 68, 87,214,216, 48,124,188,181, 53,186,125,231, 45,168, 49,218,181,171,138, + 53,143, 93,213,220,249,105, 29,155,154,111,161, 36, 12,235,178,254,213,129, 45,179, 79,251,153,121,116,160,230, 69, 17,116,237, + 70, 23, 10,154, 69,216, 59,202, 77,254,239,147, 10, 73,233, 58,210, 10, 31,127,191, 60,198,250,209,143,189,136,219,166, 20,170, +182,199,100,129,243,129,163,118,142,139, 17, 33,202, 77, 38,166,128, 50,134,144, 19,173,210,132,156,232, 40, 48, 88,223,116,104, + 50,209,121,164,146,248,237, 64,151, 33,248,192, 48, 12,100, 23,138,174, 63,120,140,173,174,117,141, 33, 54,179, 66, 24, 94, 30, + 99,154, 22,225, 61,169, 53, 40, 36,194,103, 98,215,209,166, 64,142,137, 36, 5, 86, 52,100, 34, 49, 70, 50, 9, 33, 53,201,101, +132, 40,209,167, 46,122, 2, 17,169, 5, 4, 69, 78, 1,143,195, 40,205,104,106, 96,193,218,239, 31,112, 76, 31,242, 6, 76,179, +210,112, 45, 93,188,246, 48,158,126, 93,174,244,213,204,224, 9, 11,166,169,129, 3,138, 7,201, 69,215,240,169, 45,115, 35, 29, +247,213,170,213,133, 32,212,232, 10, 37,197,226,209, 28, 14, 32, 97,107, 97, 92,237, 55,200, 19, 28,222,127,231,151,127,142, 47, +255,228,151,185,243,252, 41, 66, 10,134,157,103,125,181, 99,115,181, 65, 90, 89, 70,143,187, 17, 47, 18, 18,205, 51, 55,158, 69, +105, 75, 99, 53, 90, 9,140,209,204,122, 91, 46,216, 25,130,243,180, 70,176,104,203, 72, 39,230,196, 16, 51,110, 40, 12,126, 37, + 5,163,203,220,219, 4, 66,138, 88, 85, 51,134,180,198,167,196,213,170,100, 3, 68, 41, 8, 49,211,233, 4, 99, 66, 38,104,218, +226,182, 55, 84,114,103,204, 25, 25, 50,198, 20, 68,160,239, 90, 98, 18, 60,183,236, 80,252, 60,175,126,251,187, 12,155, 21, 62, +254, 53, 62, 58,180,182,164, 48,226,130, 39,196, 64, 8, 22, 55, 6,110,189,112,155,223,252,213, 95,226,127,221, 69,174,190,250, +141, 18, 82,225, 63, 42, 29,246,251,244,106,108, 53, 85,169, 95,151,169,135,223,122,245, 96,184,201,212,209,103,158,138,167,249, +115,119, 79, 57,233,230,252,249, 67, 69,189,228,123,132,253,207,107, 65,159, 32,205,219,139, 25,183,207,110,113,111,125,206, 11, +183,110, 35,141, 33, 69,143,209,207,208,154,134,119,183,107, 86,247,207,201,110,132,243,119,159,110,142,193,163, 10,250, 7,125, +172,109, 11, 55,229,131,158, 89, 99,203,236,252,198, 41, 60,247, 44,116,115,152, 29,131, 53,204,133,102,235, 29, 11,211, 50,132, +128,160,152,141,188,189, 94,177,176,109,137,170,165, 40, 57, 0,146,146, 92,121,207, 51, 77, 71,163,138,103,135,167, 40,128,112, + 35,130,140,214,138,182,107,139,202, 32,101,180,149,132,209, 87,115, 67,135, 38,144,180, 71,187,128, 19,174,120,128,120,143, 68, + 16,125,198, 79,173,111,146,196, 93,177, 97,142, 42,161,133,100, 23, 71, 90, 93, 28, 33,165, 44, 73,153, 90, 40,148, 46,210, 10, + 33, 51,164,142, 16, 2, 47,158,157,114, 62,236,216,180,150,232, 28, 92, 14,123,203,241,237,199,136,166,158, 26,153,107,187,214, +169,177, 58,144,109, 74,189,183,168,181,128, 59,184, 97,247,237, 62, 5,239,176,176,167, 74,134,155, 92, 31,175,155, 40, 11,210, + 85,219, 86,246,204,119,113,112, 78, 78,249, 28, 57,237, 77,196,198,239,237,216, 77, 63, 86, 33,105,219,186,233, 45, 56,199,209, + 98, 73,175, 53,224, 17,162,197, 84,200, 64, 73,141,243,158,214,180,196,232, 81,253,131,246, 16, 0, 0, 32, 0, 73, 68, 65, 84, +100,108, 83,158,174,115, 35, 70, 74, 84,202,152, 4, 94, 25,216,172, 8, 33, 96, 98, 68,133,132, 19, 13, 93, 83, 35, 82,173,102, +222, 22,189,228,242,228, 4, 21, 50, 62, 38,236,124, 86,130,128, 98, 66,180, 22, 81,137,108, 66,107, 76,166, 44, 38,138,214, 47, +186, 18, 50, 32,200,120,231, 16, 82,144,210, 30, 82,119, 57, 20,163,154, 12,173, 86,140, 94,237, 45, 14,145, 31,173, 83,159, 10, +187, 72,251, 91,227,245,162,227,193,159,123,249,228, 93,206,132,239, 75,185,191,113, 30,190,173, 74,150,247, 43,172, 96, 88,192, +162,169,193, 3,166,116,230,187,117,245,231, 30,203,223,247,169,166,136,141, 15, 6,133, 60,198,215,217,255,248,151,248,205,175, +252, 36,175,124,246, 69,180, 16, 12,206,227,198,192,250,114,139,119, 14,100, 41,232,243,126,129, 93,156,210,116, 45,120,137, 66, +211, 46, 12, 90, 72, 78,102, 22, 99, 20, 18, 65, 99, 52, 33, 43,206,179,192, 71,207,189,181,195, 84,147,157, 88, 67, 37,118,222, + 19, 66, 68, 68, 65,200,137, 97, 72, 12,163,103,116,145,229, 92, 23,232,190,149,184,109, 96,187, 13,132,172,104,231,134, 35,147, +203,218, 89, 11,180,146,244,141, 37,228, 98, 78,180,146, 30,163, 36,125,163, 88,180, 2,107, 53,214,104, 62,247,210, 13,142,102, + 13,247,239, 95,113,118,235, 22,171,139, 43, 94,191,255, 29, 70, 31, 72, 49, 34,149,192,168,128,237,122, 46,238,157,243,236, 75, +119,249,167,255,217, 47,241, 63,255,241,215, 14,230, 50, 63, 64,175, 36, 31, 66,146,216, 75, 27,167,174, 93, 60,253,127,246,213, +223,251, 3, 94, 61, 44,126, 7,200, 83, 70,151,194,174,245,117, 65, 23, 49,145,149,228, 91,111,190,195,173,217,155,220, 62,189, +137, 80,146, 24, 61, 57,192, 24, 2, 55,150, 71, 44,187,150,203, 55,222, 46, 33, 34,181,160,231,167,253,197,219, 26,142,180, 27, +247,197,226, 48, 20,228,250,251,234, 42,130,215, 66,120, 40,149,208,216, 2,253,206, 58, 56, 89,194,209,188,116,119,214, 22, 18, +150,131,165, 21, 32, 21, 66, 55,100,183,229,184,155,227,134, 45,207,119, 45,247,124,224,221,114,147, 39,137,140, 53,134,133,181, +116, 82,179, 11,142, 99,219, 97,155, 6, 17, 18,222,121,164, 84, 28,213,156,116,165, 37, 90,203, 98,171,225, 3, 86, 11,162,247, +228, 16,144, 58, 34, 6, 79, 34,163,165,160,217, 57, 6,145, 49, 25, 84,140, 5, 89, 22,130, 81,149,102,167,164,149, 54, 64, 98, +209,204, 8, 57,162, 77,195,224, 6, 90,101, 65, 39,134, 16, 88,116,115,188,223,146, 77, 67, 59,151, 92,185, 45,189,130, 43,173, + 88, 55,154, 75, 20,116,177,248,196,115, 5,222,194,246, 67,146, 28,141, 45,163,207, 41, 43, 33, 38, 16,110, 47, 3,155, 80,211, + 36, 30,156,233,216,218, 88,185,170, 77, 23,178,188, 23,227,186, 28,163,186,173,118,178,117,180,106,218,189, 95,188, 60,104,208, +166,189,108, 38,127, 18,185,255,185,146,123,118,253,211, 64,182, 62,228,245,241,103,234,186, 90, 94,246, 51,232, 91,154,147, 37, +189,210, 88,109,144, 66, 32, 69, 38,229, 76, 66, 84,189,122, 33, 7,168, 12,157, 76,184, 16,233,148,196, 20, 80, 8, 13, 40,165, + 80,126, 68,198,132,218,185, 50,178, 72, 96,148, 38, 26,141,233,122,218,182, 67,219,134,182,159, 97,140, 65, 90,131,182,134, 76, +174,188, 7, 77, 32,147, 83, 38, 73, 93, 33, 39, 73,200,165, 99, 79, 66,236, 51,147,153,204,190, 34, 57, 70,198,228,240, 62, 16, +115,172,235, 33,177,141, 99,241, 94,113,174,144,155,166,212,182,195, 44,229, 15,155, 77, 78, 86,131,217, 23,164, 97,210, 1,123, +246,176, 80,240,143,121, 29,211, 7, 26, 99, 5, 97, 44, 24,191, 63, 96, 67, 47,102, 69,191,106,155,114,156,185, 80, 14, 55, 31, +202,247, 18,135,242,119,198,106,103, 56, 86, 61,101, 13,122, 33,133,247, 18,241, 62,162, 70,249,215,127,251,183,248, 79,127,237, +239,114,231,185,155,184, 49,224,124, 32,250, 92,127,140,215,211, 7,133,225,120,126,196,114, 54,227,246,209,146,153,109,144,173, +194, 72,197,162, 49,204, 90, 85,227,196, 19,228,204,106,235, 24,221, 8, 34,147,125, 34, 10,193,213,182,132,183,196,152, 89,175, + 2,171,171, 29,231,235, 45,187,221,136, 15, 30, 31, 18, 82, 72,238,189,189,226,222,102, 7, 17,108,149,151,197,224, 8, 89,113, +113,233, 25,131, 99,244, 17, 55, 70, 92,242, 16, 51, 65, 8, 4,146,205,224,184,220, 56, 70,159,153, 55,146,209,121,180,146, 44, +250,134,219, 55, 23, 28,157,206,249,196, 11,183, 16,237, 2,171, 90,124,101,192,175,118, 91, 72,145, 70, 23,111,128,103,159,191, +193, 23,126,234,111,243,175,127,231,255,225, 7, 38,236,227,129,179, 73, 87,230,239,100,184, 84, 11,162, 76,188, 71,103,246, 81, + 15, 38,253, 1,247,151,135,127,127, 42,232,170,234,135,167,249,103,101, 49,139,201,135,161, 22, 77,177,139, 92,244,130,190,230, +141,183,166, 97,181,185, 66, 10, 88,239,182,252,233, 95,125, 23,222,126,245, 26,181,122,234, 5, 93,214,180,182,182,219, 95,124, +212,193, 65,158,115,189, 40, 85,207,110,161, 32, 12,251,125,212, 90, 80, 29, 28, 31,149,196,191,163,121,209,149,119,109, 41, 38, + 85, 1,137,110,176,148, 68,202,165, 44,137,131, 34,122,174,124,160,201,145,123,110,199,102,220,128,223, 33,117,135,147,154, 59, + 93,135,149,130,101, 99, 48,213, 67, 66,213,128, 43,163,138,217,212,188,183,215,130, 20, 50, 37, 60, 43, 71,114, 12, 5,132,168, +118,221,132,136, 30, 35, 65, 75,172,143,200,154,149, 33, 43,129, 75,138,124,205,229, 82, 70, 99,164, 68, 91, 67,219, 24, 18,169, +152,125, 9, 16, 66, 48,239, 91,156, 27,232,172, 45,102, 66,100,230,182, 37,166, 80, 56,181, 89,149, 99,218, 10, 98, 18,251,140, +243,198, 22,136,254,144,179,112,152, 45, 17,124,173, 77,121,111,216,162,197, 94, 58,145, 39,130,167,170,103,220,193,251, 56,212, +226, 63,233,190, 85,174,246,220,186,202,200, 84, 33,185, 54,181, 97,138,197,116,168,196, 40,155,242,107,217, 84, 50,221, 52,163, +143,229,189,119, 99,181,205, 86,149, 53,175, 31,207, 79,226,123, 90,212,219,190,232,109,251, 6,164, 70,181, 13,141,177,204,141, + 65,203,150,156, 34,141,105,176, 82, 19,146, 71,150,119,147,148, 2,141,132,133,166,116, 49, 66, 98,115, 70, 33,203, 51,244, 9, +147, 37, 42,122,162, 75, 88,109,112,198, 34,155, 14,211,207,104,141, 69, 89, 75, 59,235,137, 62,162,171,183,176, 8,177, 20,108, +169,145,100, 66, 77,132,147, 2, 54,209,163,108, 49, 70,201, 57, 18, 67, 66, 8, 65,140,169, 64, 72, 57,227, 98, 32, 36, 79, 68, +144,147,199,167,226, 74, 23, 83, 34,196,136,159,152,141, 83,210,148,143,133,240,246,145,141,187,210,158, 85,169, 38, 39,162,218, +169,167,248,152, 33, 5, 15,221,244, 98,253,122,140,173, 70, 7,213, 47,190, 95,212,244,188, 74,216,112,187,253, 92, 52,135,122, + 1,136, 48, 78, 58,244,176, 95,116,250, 33, 22,253, 20,245,247, 33, 68,160,230, 63,248, 18,255,245, 63,254,135,124,241,203,159, +195, 24,205,110, 44, 33, 7, 41,102,178,200,164,148,137, 33,145,131,164,177, 29, 55, 79,110,240,220,233, 41,203,197,140,227, 69, +139, 80,146,155,139,142,219,199, 29,157, 45,220, 8, 33, 96, 51, 68, 86,131, 99,227, 28,187,157,199,187,192,198,123,214,235, 29, +219,245,200,229,197,150,132, 33,197,196,118, 51,224,119,142,113, 23,217,173, 71,132, 78,197,215,223, 39,148, 22, 8, 13,227,110, + 96,116,158,205,122,139, 31, 28, 62, 10,182,155,145, 97, 28, 9, 33, 51, 14,129,245,214,177, 25, 60, 46, 41,114, 78, 4,239, 25, + 35,228,156,104,173, 40,121, 29, 25,122,173, 88,180,154,101,111, 89,246, 51,238, 62,123, 11, 59, 59,226,232,228,140,123,111,191, + 77, 12,145,166,177, 37, 60,207, 71, 94,120,225, 25, 62,255,147, 63,198,239,255,206,239,253,128,117,234, 53,255,122,146, 25,197, +176, 15,220, 73, 60,126,184,134,212,123,183, 51, 93,198,104,197,146, 51,188, 23, 62,133,189, 52, 72,215,131, 86,213,208, 27, 33, + 30, 44,236,126,196,125,231, 77, 94,253,206, 95,241,141,237, 21, 89, 57,122,107,113,206,241,199,175,127,135,237, 55,191, 5,126, +252,224, 98,254,137,151,249,244, 79,124,145,123,127,245,215,143,184,121,124,200,243,154, 46, 67,227,184,151, 80, 93,187,140,229, + 3,195,160, 90, 8,164, 44,207,162,105,192,206, 74,103,222,218, 18,176,210, 54, 85, 45,162,202,254, 77, 19, 81, 42, 17,108,203, + 11, 77,135,200,145,224, 7,124,138,164, 48,144,220,142,239,110, 86,228,113,139, 80,154,185, 2, 77, 65,152,132,182,180, 53, 23, +192, 72, 69,140,137,166, 51, 52, 2,102,115, 83,199,203,213,252,171,250, 83,229,148,209, 58, 33, 82,113,238, 36,102, 68, 12,228, + 24, 80, 49, 34,114,177,162,176, 2,180, 80, 64, 68, 8,137,110, 44, 70, 91, 76,107,208,141, 65, 27, 77, 22,208, 54, 77, 33, 76, + 75,129, 49,138, 24, 35, 93, 91, 96,247,242, 22, 75,188, 31, 49, 82,145,115,105,150, 78,187,142,251,195,128,106, 44, 81,203, 26, + 21, 61,141, 53,171, 23,186,182,149,116, 60, 49,217, 15, 50,237,179,219,155,183,196, 74, 98,156,194, 46,114,189,156, 38,202,179, + 14,126,239,177, 46,155, 82,208,175,199, 52,182,172,215,144, 10,154,137, 40,223,188, 16,123,189, 58,147,180,211,151,117,234,170, +211,155,169,121,244,166, 58,212, 81,211, 47,197,247, 62, 11,224,227, 21,245,190,173, 48,146, 41, 55,167, 89,143,178,134,179,174, + 47,129, 43, 74,208,155,142,148, 19,137, 92,154, 84, 33,144,100,218, 28,208, 57,128,200,180, 82, 33, 82, 36, 42, 69,147, 74, 97, +143,128, 30, 74, 81,237, 81,120,173, 80,243, 57,182,105,208,198, 18,148, 98,214,119,228, 24,209,173, 37,197, 90,144,116,177,129, +117,209,147,140, 33,121,143, 19,137, 49, 6,100,134, 40, 37,161,250,121,103, 37,137, 62, 84, 87,191,120, 93,184, 5,144,235,131, +207, 41,226, 98, 66,145,145, 66,176,217,212, 52,171,237, 88,180,222, 34,215, 91,216,227,220,236, 15,108,103,227, 19,144,228, 14, +217,237,135, 63,159,244,138,105,138, 91,181,101,145, 42, 85, 10,248,110, 40,139, 55, 84,134,168,171,172,244, 84, 11,119, 99,247, + 16,209,116,112, 79,183,225, 84,103, 85,227, 7,155, 69,156,254,228, 79,240, 63,252,246,175,242,210, 75,119, 42,241,180,204,187, +189,247,140, 33,226,118,129, 97,240,108, 46,183, 24,221,115,243,198, 45,158, 61, 61,225,232,168,165, 51,166,146, 67, 51,179, 70, + 33,165,192,197,200, 16, 51, 99,130,245,198,115,126, 57,176,221,121,134,209,179, 90, 13, 92, 93,110,217,172, 6,182,187, 1, 63, +122, 98, 78,108,199, 80,188,222, 47, 7,156, 27, 8,209, 17,125,201, 5,200, 62,161,148, 34, 69,201,102,181, 69, 74, 65, 74, 25, +183, 29, 24, 54, 35,155,203, 17,183,113,184,113, 96,231, 29, 41, 4,182,155,145,113, 44, 23, 9,171, 4,189,145,236,198,136,208, +146,152,114,229, 33, 85,243, 36, 37,105,172, 98,222, 27, 94,188,121, 68, 63,155, 33,237,156, 20, 5, 73, 4, 4,138,144, 18,219, +209,113,231,217, 51, 62,247, 19, 63,206, 31,252,159,255,247, 15, 86, 97,143,213, 1,239,253, 2,119, 30,231,101,236, 62,170, 52, + 85,130,230, 24,203, 33, 60,107,246,100, 35,173,247,178, 34,216, 39,103, 77, 45,182,172,126,245,213,212, 67, 92, 27,238,212,175, +115,181,227, 45,231,249,230,219,111,241,205,183,222,100,251,221, 55,201,227,250,209,223,195,122,197,223,254, 59,255, 17,183, 62, +253, 9,190,251,141,111, 60, 30,107, 93, 86, 5,201,244,181,235,135,252,248,167,203,178,214,165,136,207, 23,176, 60, 65, 30, 31, +145,151,179,131, 44,123, 85,138,130, 82,251,142, 51,133,210, 68, 9, 65,204,137, 24, 60, 97, 92,211,165, 76,218, 94,208, 4,199, +184,189,226,221,237, 10,198, 1,225, 7,192,243, 66, 51, 99,214, 47, 57,178, 13, 90, 74, 66,202,215, 33, 44,157, 22,116,115,195, +220, 42,218, 70,162,165,160,111, 37,186,122,150, 79,118, 4,201, 23,110, 74,218, 13,197,139,127, 8,197,162, 59, 23,200, 93, 9, +137,105, 12,198,180,216,182,197, 54, 22,213, 53, 40, 99,139, 47,137,181, 40,169,200,185,204,238,181, 42,132,232,198, 54,196,224, +209, 82,212, 16,180,132,175,239, 81, 18,197,253,115, 32,176,108, 91,132, 20, 8,163,112, 86, 22,228,176,235, 10,218, 41,227,158, +137, 46,170, 13,172, 72,117, 92,193, 94, 97, 20, 40, 5, 53,199,189, 93,175,212,165,232, 83, 73,193,147,235,219, 48, 22, 79, 14, + 95, 47, 9,186,202,214, 68,222, 7,124, 9, 91, 85, 32, 84, 51, 25, 81,244,233,169,218, 2, 79,151, 58,173,170, 11,103,189,236, +153, 74, 88,252, 62,116,233, 31,175,168,107, 93, 61,190, 21,204,106,234,143,214,204,103, 51, 52,146,185,181, 37,214, 84,148,141, + 55,201, 34,148,128,144, 3, 46, 7, 22,178, 60,160, 46,139,210, 77,231,140,164,108, 36,149,138,180,204, 38, 81,162,110,109,135, +237, 59,178,178,100, 37,209,198, 48,166, 64, 86,229, 96,148, 36,164, 54,136, 24,217,230,136, 82, 18,231,194,117,198,201,232, 61, + 89, 22,214,189,203, 9,157, 82,129,226, 67, 34,197, 2, 31,249, 80,224, 31,159, 28, 32, 8, 49, 17,115,192, 42, 69, 22,153,115, + 63, 98, 90,131, 27,171, 94,209,213,212, 41,255, 4,126,209, 79, 18, 35,120,248, 94, 72,249,224,165,224,176,184, 79, 9, 91, 50, + 23,107, 67, 31, 96,187,131,113,183, 47,212,147, 43,216,195, 29,255, 3,159, 99,234,212, 39, 56,182,182,108,215, 16,252,190,187, +249,217, 95,255, 69,126,235, 31,253,125,142,230, 61, 87,155, 29,219,245,192,110,112,108,119,158, 24, 51,195,102,100,183, 25,136, + 46,161,153,243,204,157,103,248,220, 39,110,114,231,164,165,181, 6,231, 19,177,118, 96, 62,129, 71,178,118,137, 55,223, 90,113, +117,185,101, 61, 4,134,144,216, 14,158,205,122,199,230,202,177, 91, 15,248,224, 24,183, 3,193, 7,198,113, 32,120, 71,116,129, + 24, 3, 57,149,241, 71,172, 58,252,148, 34,195,110,199,118,189, 99,216,141,172,207, 47, 16, 66,225,156, 35,249,177, 34, 53,144, +115,196,143, 14,165, 53,195,232, 10, 23, 67, 70,164, 80,180,179, 98,173,235,198, 72,211,106, 6, 95, 80, 39,170, 92,174,240,199, + 4,141, 49, 40,173,137,178,229,153,219, 55,217,110, 3,110,216,161,219,134, 97,189, 97, 12,137,231, 94,184,201,115,159,248, 36, +127,246,251,127,244, 24,216,245,191, 7,175,105, 86,220,170, 50,119,182,109,145,136,118,179,122, 24, 86,242,230, 4, 89,155,169, +176,137,125, 65,159, 58,225, 44,246,168,209,251, 25,238, 72,138,229,235,197,101,249,111, 28, 74, 33,248,160,103,167, 75, 44,232, + 55,183,107, 94,190,243, 44,127,253,245,175,239, 33,245, 71,237,205,198,150,175,185, 53,123,100, 97,114, 15,211, 15,141, 39, 38, +253,179, 86,165, 11,188,121,198,252,120,206,252,120,206,216, 88,178,177,213,209, 44,214, 17,218, 65, 54,192,100, 87,154, 98, 41, + 60,227,134,237,184, 97,117,117,159,221,246,156,215,238, 95,225, 55, 87,188,182,170, 5,189, 85, 28,205, 58,110,182, 61,199,205, +156,214,182, 40, 37, 64, 89,186,156,176, 82,211,181,146,229,204,208,181,197, 0,108,222, 42,186, 86, 33, 98,194, 54,170, 18,147, + 51,209, 7, 68, 78,196,245, 72,206,137,184,222,146, 71, 71,118, 30, 65, 46,231,182,110,139,153,152,209,116,205,140, 44, 21,221, +172, 67,100,133,181, 6, 41,101, 97,190, 91, 83,198,108, 85, 94,155, 98,192, 24, 75,162,132,112, 73, 81,124, 78, 93, 8,180,198, + 18,115, 44, 6, 98, 82, 18, 98, 36, 9, 73, 18,130,104,234, 57,118,212,150, 11,144,243,165,176,235, 41,173,208, 20,107,110,171, + 32,200,178,230,144, 85, 55,174,246, 50, 76,125,224,149,129,170,217, 21, 19,201,174, 22,236,209,213, 5, 85, 47,101, 82,148,130, +158,134, 18, 7,157, 43,220,126, 77,134, 22,251, 28, 7,228, 1,121,234,192,202,217,249, 3, 31,136, 39,100,193, 77,126, 8, 19, +195, 62, 61,110, 81,159,236, 64,219,190, 44,236,190, 41, 48,154, 82,220,232,122, 50, 25,171,219, 58,151,206, 40, 33,201, 57, 33, + 40,208,187,200, 25,159,224,140,200, 32, 51, 45, 18, 35, 4, 89, 42, 68,150,200,148, 17, 8, 68,206, 36,211,208,204,122,178,181, + 37,232, 72, 27,178,132, 70, 75, 92,138,164,156, 80,218, 20,233, 92,142, 32, 20,131,247,132, 84, 50,197,163, 47,182,177, 33, 38, +140, 16,101,159, 8,144, 46, 34,140, 4,153,241, 46,144,114, 34, 11, 73,240,158, 24, 2, 62, 7,132,144,164, 84, 82,186,102,178, + 33,228,196, 54, 87,150,231, 24,107, 30,111,252,155, 61,103, 31,238,162,141,222, 23,228,233,207, 38,184,127,136,101,118, 30,195, + 30,154, 63,204,182,126,212,231,152, 22, 96, 83,229, 46,170,250, 38, 95, 31,124,165,216,255,226,111,254, 26,191,240,107, 63, 71, +223, 88,222, 61, 95,177, 94,237, 24,135,192,118, 23,240, 99, 49, 0, 73, 49, 99,245, 12, 35, 91,142,143, 79,121,246,230, 9, 77, + 53,126,241, 46, 17, 66, 98, 12,153,213, 48, 18, 92, 34,184,200,253,203,129,119,207,215,220, 59, 95,179,190,220, 49, 12, 35,171, +243, 29,187,237,192,110,189,102,231, 6, 98,240,184,193,177,219,108, 9,163, 71, 32, 24,135, 13,227,110, 64, 25,197,176,217,162, +141, 41, 69,158, 76, 8,158, 97, 59,224,221, 64, 76, 9,231,119, 56, 55, 34, 20,228,236, 9, 99, 64,217,150, 97,187, 37,231, 76, + 38,147, 92,194,246,134,172, 45, 41, 22,109,104,132,162,121,175,227, 37,137, 68,107, 81,221,118, 51,179, 89,195,113,223,176,114, +208, 88,195,141,211, 37,235,130,221,227,189,195, 15, 35,194, 24, 94,124,249, 46,119,238, 62,199, 87,255,240, 79, 63,160,144,255, +123, 84,208, 31,190,127, 88, 83, 70,117,218, 20,173,175,148,229,240,173, 9,137,165,123,105, 74, 1,166, 66,213,147,167,245,225, + 75,240,225, 29,142,148, 31,192, 17, 72, 31,204, 90, 23,192,253,243, 82,208, 39, 8,246, 81,133, 93,235,253,197, 3, 30,204,224, +158,138,251, 84,224, 39,178,148, 22, 37, 11,226,248, 8,121, 60,227,120,214,211,118, 45, 94, 75, 22,198, 20,103, 53, 33,247,172, +107,113,192, 68,140,161, 60,155,213, 21, 92, 94,192, 59,239,146,175,118,140,111,190, 11,171, 53,187,243,251,229, 18,208,104,132, + 41, 49,167, 47, 46,207,138, 23,187,208, 72,105,145, 57,209, 91, 75,171, 4,139,185,165, 49,154,227,153,102,209,149, 46,189, 53, +146, 89,171, 17, 33,151,112,172, 92,208, 39,191, 29, 32, 38,194,197, 21, 41,248,242,252, 67,177,127, 45, 53,180, 65,182, 6,221, +244,101,162,208, 55,228,148,153, 29,117,228, 92,164,161, 77, 99,137, 41, 34,170,155,232,148,182, 23, 67,198, 71,143,182, 22,239, + 35, 81, 36,180, 82,248,148,208, 82,145, 36,140, 62,208, 24,197,152, 34, 43,239, 49, 82, 18,173,134, 93, 93, 7, 93, 91,189, 54, +100,121,206, 34,237,253, 54, 52,101,124, 17,198,130,130,140,245,207,146, 42, 90,114,101,107,224, 77, 61, 39,167,247, 74,230,234, +219, 94,211,218, 38,227, 26, 89,223,139, 41,187, 60,213,116, 52,217, 20,216,125, 50,234,210, 83, 8, 75, 40,159,127,116,123,111, +248,244,148, 92,243,100,253,223,245,122,127,239, 90,253,120,240,187,172, 29,122,215, 94,207,134,111, 44,230,164, 36,153,155,134, +144, 60,173, 52, 52,218,144, 43, 33, 45, 19,203, 27,149, 2, 22, 24,114,230,148, 18,119,106,116,131, 77, 32,132, 36, 10, 48, 33, + 35,173,161,233, 58,178,212,133,140, 97, 52, 57,197,210, 36, 42, 81, 50,235, 41, 40, 76, 36,145,133, 64,145, 25, 70,135,212,130, +113, 61, 16,157,135,152,104,164, 38,133,128,212, 18,124, 68, 24, 69,172, 51,110, 41, 51, 62,100,198,232,200, 41,225, 83, 68, 85, +253,253, 54,184, 98, 73, 26, 61,107,231, 56,110, 91, 54, 87,219,178,241,220,184,223,128,127,163, 7,168,126,176,115, 57,132,227, +167, 66, 29, 83, 9, 37,152,110,138,135, 7,214, 33,209,238, 81,159, 35,213,219,238, 68, 70, 65,215,195,178,144,127,126,241, 31, +254, 26, 63,251,247,126, 26,107, 13,171,237,192,213,197,142,171,119, 46,137, 41,163, 26, 77, 12, 17,239, 60,182,233,152, 47,122, +180,208,104, 97,144,141,194,214,113,105, 78, 5, 54,223,121,207,224, 3,195, 16,185, 28, 6,238, 95,172,216,238, 70,220,206,177, +217, 57, 86, 23, 23,236, 86, 27,114,242, 4,225,233,218, 6,211, 25,148, 82, 52,125,135,247,174, 54, 71,153,209, 5, 66,130, 76, + 70, 41,141,247, 99,185,249,167,200,224,118, 72, 36, 99,204,196, 16,112, 33, 32, 19,120, 95, 46,122,214, 26,164, 82, 12,219, 29, +237,220,226, 93, 68,106,139, 54, 18,211, 88,178, 47,198, 69,227,152,104,172, 38,102,232, 26, 67,170, 70, 70, 25,129, 86,154,163, +206, 50,107, 20,111, 94, 12,197,173,110,222,178, 25, 2,227,118,131, 27, 6,114,200, 36, 41,120,233,229,187,156,156,221,226,223, +254,233,255,123,176,115, 63,134,220,205,216, 58,135, 85,223,191,156,234, 7, 10, 93,189,244, 77, 14, 90,211,248, 71, 83,138,248, +196,241,152, 8, 75, 91, 87,153,198,149, 56,102,108,233,170,115,117, 33, 52,242,193,194,254, 97, 7,226,163,164,101,239, 87,160, +223,239, 2,192,161,173,241,251, 4, 55, 77, 36,190,195, 56,225,105, 68,160,229, 62, 76, 73, 29,252,158, 48,197,143,125, 62,135, +229,156,103,231, 61, 95, 60,157,113,199, 26,238, 52,150, 99,149,105, 51,220,167,186,130,229, 10,243,250, 88,216,244,155, 29, 92, + 92,193,197, 10,222, 57,135,221, 21,220,187, 40,138, 21, 95,231,198,203, 57,116,182, 56, 32,246, 51, 26,213,176,108,150, 88,163, +209, 90,161,132,102,222, 54,156,206, 52,243, 86,115,107, 97, 56,157, 25, 58,163, 88,106, 65,171,196,117,152,156,212, 16, 92,100, +112, 35,164,204,112, 85, 52,253,121,231,136,187, 1,157, 32,197,132,210, 22,221,119, 24,221, 96,186,242,115,178,160, 93,180, 4, +151,200, 6,172, 46,238,137, 82, 10,132,144,228, 92, 8,212,185, 74,100, 75,100,121,172, 1,118, 5,193,141, 41,225, 40,242, 59, + 41,139,171,103,202,153, 31, 62, 94,242,134, 27,137, 33,150,139,162, 82,123,155, 87, 33,106, 86,123,141, 36,213,166, 32, 41,209, + 23,162, 27, 53, 73, 45,248, 82,108,141, 41,235,210,135,242,113,162, 42, 12,130, 43,191,214,162,204,225,117,165,197,171,106, 94, +211,217,162, 22,162, 94, 24,162,171, 94, 38,234,192,190,117,202,218,144,149, 60, 39, 31,140,155,126, 82,208, 77,195,123, 4,107, + 85, 25,114,184,198, 63,122, 81,175,217,214,232,174,124,179,141,133,182, 45,100, 8, 93,216,202, 66, 10,172,178, 69, 38, 6,248, + 28, 81, 8,114,206,136, 92, 10,231, 82,137, 98, 9, 91,195,221,149,177,184,148,104,178, 36, 40, 73, 86, 6,169, 53, 65, 22,141, +114,204, 5,186,153, 76, 15,144,146, 44,192,199, 88,158,169,139,236,182, 91,116,134, 97,181,194,185, 1,157, 18,109,130, 93,112, + 36, 81,100,115,187,156, 80,185,104, 40, 99, 42, 8, 66,164, 72, 44, 38, 19,126, 23, 2, 62,122,172,182,184, 24,112, 49, 96,132, +228,254,110, 44,208,112,240, 48,248,239,157, 95,244,199, 38, 53, 29,192,228,135, 80,250,161, 51,216,225,143,215,142, 75,122,191, + 24, 14,255,254,251,125, 14, 45, 31,180,185,109,116,133, 53, 3,255,232,191,251,199,124,249,239,254, 56, 66, 10, 54,187, 66, 86, + 27,182, 3,126, 24,201, 72,114, 44,207,217,152,150,174,233, 88,118, 45,243,206, 98,149,162, 81,138,163,185, 65, 74,216,140,137, +139,157, 99,181, 25, 89,173, 70, 46, 87, 27, 46,175,182,172, 47, 55,108,174, 54,184,193,179,189,218,144,114, 68, 91, 73,215,105, +206, 78, 79,233,230, 45,177,118,118, 66, 64, 59,111, 57, 57, 91,114,116,180,164,157,245,204,231,109,153, 26, 12, 1,173, 53, 82, +105, 98, 8, 12,110,192,104, 67, 72,133,149, 47,201,104, 83,102,143, 46, 56,146,143, 8,138, 89, 70, 99, 53, 57,129,181, 13,218, + 74, 36, 26,219,107,132, 79, 56, 37,233,181, 70, 72, 65,240, 48,239, 20, 86,203,234,107, 81,160,206,222, 42,146,144,172,118,129, +227, 70,113,231,236,152,171,144,185,255,238, 91,144, 50,209, 39,146, 16,188,240,242, 93,222,220, 57,222,249,214,183,247,108,233, +143, 4,193,235,125,231, 8,223,223,162,174,171, 4, 72,176,119,239,210, 53,230,178,111,202, 33, 89, 52,172, 7,116, 99, 81,214, + 80, 78,229,224, 53, 77, 37,140, 86,222,134,154,172, 56,217, 67,159,143,114,226, 58, 52, 96,202,249,209, 28,148,235, 51, 81, 62, +136, 2,168,131, 75,132,170,249,217, 15,195,154,178,146,159,174, 61, 33,234, 97,207,164,104,169,123, 37, 86, 71, 52, 59, 43,185, + 24,198,150, 70,168,111,249,212,188, 71,137,204,204, 88, 82,246, 52, 82, 35, 85,226,237,161,100, 93, 20, 31, 12, 15,155, 17,214, + 99,201,143,184,218, 20,121,213,184,171, 69, 63,236,207,227,163, 57, 52, 6,161, 53, 89,107,110,206,102,156,205,110, 16,210,200, +113,115,132,209, 22,169, 5, 51, 93,236,143,159, 59,110, 57,158, 91,140,148, 28,155, 34,101,235,141, 66, 2,214, 8,198,173, 39, +164, 76, 10, 17,191,243,132,237,142, 52, 56,198, 97, 68,134, 88,209, 77,176,179, 35,162,177, 36,219, 32,109,131,182,229,204,110, +109,233,198, 91,107,241,201,151, 44,246,144, 48, 74, 21, 46, 19,144, 66, 32,167, 72, 8,190,102, 71, 21, 62, 66, 8, 1, 41, 36, + 46, 38,100,149, 52,134,156, 80,202,240,218,110, 75,206,133,100, 25, 99,220, 39, 82,198,253, 24, 5, 68, 33, 26,250, 58, 7, 23, +170, 92, 18,109, 83, 81,230,118,127,182,249,176, 39,186,201,138, 22, 73, 91,160,121, 79, 33,197, 37, 15,186, 50,218, 85,157,161, + 79,219, 48,109,235,252,190, 94, 68,115,101,243, 78,113,197, 70,236, 35, 90, 39, 39,184, 84, 77,104,158, 40,116,105,154,229,203, +247, 94, 80, 31,171,168,203, 26, 61,215,232,253, 28,204, 40,140, 49, 44,218, 2,187, 47, 77,143, 39,160,165,194, 5, 71,163, 44, + 46,249, 50, 43,215, 18,153, 18, 67, 10, 52, 74, 32, 16,180,218, 84, 41, 69,177, 50,148,202, 64,215,147,148,169, 4, 69, 65,174, + 10,176,156, 19, 89, 9,156,243, 36, 4,113, 44,249,217, 97,220,161,115, 34,143,174, 4,105, 92,173,200,162,232,209,149, 44, 76, +247, 40,192,202,140,143,153, 4,168, 92,179,215,115, 66, 10, 69, 8, 14, 41, 36, 57, 11, 16,146, 49, 12, 40, 33, 42, 11, 62,178, +114,190,220, 18,165,132,203, 45, 79, 53,128,224, 73,110,111,239, 55,163, 63,156,135, 79, 29,199,244,107,127,208,173, 79,139,225, + 48, 4,230, 3, 47, 10,245,192,189, 38,210, 37,126,227,191,249,175,248,209,159,248, 17, 66,202,108, 54, 35,187,173, 99,125,185, +197, 13, 1, 33, 53,255,226,143,255,128,119,223, 57,231,135, 63,253,105, 22,221,156,190,109, 49, 70, 49,111,123,158,191,187,228, +185,211, 25,173,149,196, 12, 87, 99,145,164, 93, 94, 14,236,134,145,113, 40,196,183, 68, 34,134,140,180,144,146,231,228,228,152, + 91,183, 79, 56,154,247,244,199, 29,179,101, 83, 58,145,197,140,174,181,156, 30,207,120,249,165, 27,116,179,134,101,107, 56, 58, +233, 11, 60,158, 18,253,172,229,232,104,198,209,217, 12, 55,122,198,113,192, 42, 77, 74,169, 92,242, 83,113,170, 75, 33, 21, 84, + 47,103,140,153,149,176, 10,153, 11,226, 36, 20,136,140,115,158,119,222,190,224,237, 55,222,229,106, 53,224, 83, 38,136,204,209, +172,225,116, 97,136, 49,179,113,153,182,209, 24, 45, 9,185,232,106, 82, 12,156, 44, 13, 74,181,172,119,153,205,230, 28,211, 52, +108,215, 91,186,174,229,243,159,255, 33,254,229, 63,255,221,131, 46,189, 50,119, 77,133,173,229, 65,183,152, 14,224,121,165,190, +255, 69,125,234, 92,197,193,148, 32, 79,197, 91,149,116,191,147,101, 41,242, 70,213,228,190,218,137,231,202,172,159, 58, 41, 57, + 29,176,149,215,225,253, 30,178,140,241,195,179,230,167,162,124, 8,161,127, 80, 81, 79, 15,117,234, 83,246,245,117,114, 76,189, + 68, 60, 28,190, 49,217, 49, 43,246,182,207,141, 41,228, 45,219,195,141, 19, 56, 62, 46, 68, 64, 91,207, 73,219, 66, 95,212, 39, +243,198,114,167,147, 44,148,193,103, 95,145,118,141,206,153, 83, 5,175, 93,108, 97,189, 43,251,107, 51,192,246,162, 64,239,163, +175, 73,145, 60,232,224,135, 42,235, 98,209, 35, 90, 67,163, 45,103,221, 17,173, 50,156,204, 78, 24,220, 64,163, 20,198, 52, 44, +187,150,103,142, 59,218,185,161,183,146,165, 41, 16,247, 92, 74,148, 20, 52,178,176,222,165, 20,236, 86, 14, 23, 60,195,213,134, +205,214, 49,120,199,214,121, 6,169, 25,141,197,156,156,225,108,139,154,117,228,166, 37,117, 22,165, 53,170, 83, 4,169, 42, 87, + 2, 68, 46, 36, 89,109, 4,110, 12,229,222,153, 50, 41, 70,114,202, 40,169, 74,209,206, 16,146, 32, 2,161,252, 69, 66,206,132, + 24,105, 85,203, 16, 35, 89,150,224, 18, 7,133,111, 21, 42,249, 55, 86,168, 61, 76, 5,180,114, 52, 76,253, 51,165,247, 73,103, +162,194,235,218, 20,251,221,209,237, 17,150,237,118,191,246, 38,235, 87,106, 55, 62, 93,152, 51,133,148, 39, 42,193,120, 74, 43, +204,106,210,204,213,200,214,184, 39,203, 77,232,231, 97,163,244,164,208,187,156, 28, 40,167, 53, 28,222, 3,193,127,188,153,186, +168, 80,159, 85,213,160, 62, 35, 91,203,210, 22,155,193,148, 18,141,148,236,188,163,179, 45, 57, 7, 20,162, 24, 20,196,136, 20, + 25,133,192,133,132,210, 26, 89, 18, 1,208, 82,145,149, 70,154, 14, 45, 21,194, 20,232, 93, 40, 81,185, 35, 69,170, 22, 98, 34, +231, 2,153,198,156,241,187, 21,126,181, 34, 12,142,148, 2,140, 59,178, 20, 52, 66,213,247, 81,128, 44,198, 10, 8,139, 34,151, + 46,159,140, 76, 25,169, 21, 49, 59,188, 80,197, 9, 79, 21,205, 37, 66, 16, 83, 36,231,204,214, 7,146,148,120, 41,201,209, 23, +104, 44,135,167,151, 3,156,158,194,225,122, 8, 49, 30,118,233,106, 10, 54,168,238,117, 66, 92, 91,232, 62, 80,196, 15, 97,202, +135,255, 51, 21,110, 55,250,154, 25,255,219,255,227,127,203,103,191,244, 67, 92,173, 71, 54,235,129,213,197,154,148, 5, 74, 42, + 84,107,144, 82,240,202,157, 23,249,230,171,175,146,183,129,231,238,222, 45,145,186, 73,208, 26,195,209,204,160, 43,187,125,187, +243,108,182, 35,187,109, 96,179,219,177, 93, 13,108,215, 35,227,206, 21,196, 71,102,194,224,153, 45,123,218,206,210,116, 37, 41, + 74, 27, 69,215,106,150, 71, 29, 71,203,134,227,147,142,211,101, 87,235, 76, 70, 40, 65,219,232,107,216,207,206, 12,183,110,204, +217,236, 28,141, 53,164, 24, 73, 89, 16,146, 39, 71,129, 79, 1,171,245,181,242, 65, 43, 69, 22, 1,173, 5,198, 42,114, 76,172, + 55, 87,188,251,246, 61,190,249,173,111,241,246,189,123,228,112,194, 91,239,188,197,159,126,237,235,188,253,250, 57,175,223,119, +108,178, 36,250,132,209, 2, 45, 4,179, 70,145,144,164, 44, 88,111,182, 40, 45,240, 94,208,205,122,238,223,187,143, 54, 6,101, + 20,155,213,142,211,103,142,249,161, 31,253, 2,127,244,127,253, 43,246,246,177,178, 22,109,189,191,249,139,135,138,247,148, 8, +246,253,236,210,101, 13,114,158, 12,105,186,166, 88,155,202, 50,234, 98, 57, 43,135,175,150, 48, 4,104,106,252,100,161, 32,215, +206,190,126,142, 48,148,143,203, 31,115,246, 56, 17,133,166, 3, 46,231,247,118,237,239,167, 48,121, 95,248,253, 96, 46,254, 65, +170,148,154, 33,129,109,144,207,222,166,187,115, 27,223, 26,154,231,239,194,209, 17,185,179,176, 92,148, 75, 75,219, 86, 8,190, +224,218,109,163,184, 99, 13, 89,148,144,148,153,180,196,228,232,114,102,244, 35,223,121,103, 5,235, 45,172,214, 69,165, 50,214, +174,157, 15,136, 59,158,183,112, 60, 3,173, 17, 89, 48, 95, 44, 48, 18,230,166,167, 51, 22,171, 91,250,166,101,222,180,156, 29, +181, 52,109,153,165,207, 91, 93,117,233, 25, 35, 36,173, 46,170,141, 20, 34, 97,240,116, 22,214,219,200,102, 53,176, 14,130,181, +208,140,237,130,173, 49,168,126, 78,104, 90,152,207, 8,214,208,245,229,188,110,122,139,208, 6,137, 2,161, 11, 74, 39, 36,126, +140, 68, 23,145, 58, 17,171,127,134,172,218,251, 12,136, 84, 26,174,152,203, 94,156,124, 66,114,245, 24,145, 90,178,245, 14,159, + 35, 57, 73, 86,222,145,195,193, 37,110, 74, 41,203, 83, 84,111,229,253,200,154,138, 54,249,146,200,122,145, 84, 21,154,207, 19, +131, 93,149, 61,213, 53,251,172,245,201,106, 54,184, 66,138,147,169,102,213,223, 42,163, 14, 83, 59,125, 65,105,114, 69, 40,144, +189,154, 52,241,182, 94, 48,235, 91, 55,233,231,159, 70, 19, 56,201, 74,165,126,176,210, 63,180, 94, 63,222, 76, 61,197,242, 64, +250,190,108,192,166, 72,219,140,144,180, 66, 35,117, 33, 59,204,108, 91,152,199,128, 86,250,186,227,141,117,163,105, 33,200, 34, + 35,181,166, 81,229,176,210, 82,161,108,131,208,117, 6, 83, 97,246,156, 33,107, 73, 16,133,185, 78,206, 36,191, 35, 58,135,173, + 49,151, 54,130,202, 69, 83,169,100,137,122, 53,186, 41, 35, 19, 99,105,148,197, 42, 89,200, 24, 33, 34,201, 36, 37, 25,221,128, +150,138,157, 47,238, 95, 69,108, 86, 72, 30, 84,205,186, 32,179,137,177,248,133, 79,190,240, 62,214,195, 85, 60, 26, 22,252, 94, +100, 78,127, 80,183, 62,253,155, 83,161,158, 76, 60,168,112, 97,245,103,102,116, 15,126, 93,239,215,165,191,223,204,189,126,175, +255,244,127,250,103,124,250,243,159, 96,189, 30, 73, 49,226,199,186, 17,115,198, 13,142,236, 51, 82,106,218,166,229,243,159,126, +133, 23,158,123, 14, 66,145,192, 44, 22, 45,199, 39, 61,189, 53, 37,216,200, 71, 46, 86,158,213,214,115,181, 29,217,108, 11,219, +118,216,248, 98,235, 43, 50, 74, 26,186,182, 65, 73,141,109, 53,243, 69,135,212, 69, 54, 54,235, 44,243, 70,179,104, 45,173,214, + 88,163,144,162, 16,216,250,198, 96,132,160,107, 45, 93,163,177, 82, 18, 98, 98,183,246, 88, 93,180,180, 41, 70, 82,200, 37,164, + 66, 89,150,139, 14, 55, 56,208,138, 93,220,210, 74,193, 56,236,248,235, 55,223,224, 27,175,189,137,115,130, 69,119, 74,202,146, +174,189,205,167,190,248, 57,140,232,145, 33, 51,140, 27,190,246,221,111,242,187,127,242, 85,126,255,207,254,156,215,190,253, 6, +139,155, 55,121,246,230,172,192,138, 62, 17,114, 96,240,137,243, 33,112,121,190, 41,132, 66,183, 37,230,178,158,118, 59,199,237, + 23,111, 50, 34,248,238, 95,252,101, 41,228, 90, 87,139, 74, 14, 32,121,177, 55, 47,250,155,122, 77,136, 65,174,157,205,209,178, +204, 43,115,101, 15, 55, 13,180,245, 18, 98,106, 71, 62,133, 8, 81,101, 94,162, 30,176, 57,215, 61,149,246,100,177,143,178,111, + 30, 62,224,166, 78, 61, 61,162,160, 95,255, 61,249,232,207,251,190,204,119, 3,243, 99,110,188,242, 9,126,248,246, 29,190,253, +181,191, 68,157, 29, 97,206,110,115, 98, 12, 27,219,151,238,124, 54, 47, 5,162,105,234,104, 66, 50,102,193, 12, 74,151,156, 18, +131, 27,145, 49,114,127,183,225,254,118,203,187,111, 92,130, 91,151, 46, 48,184, 71,191,183,198, 22,248,184,235,160,179, 8,171, +104,141,229, 70,183,224,164, 91,128, 16, 44,154,158,152, 50,243,217,156, 89,103, 48,189,229,120,102,174, 57,138,157, 81,104, 45, +208, 82, 48,207,165, 46,249, 16, 89,173, 3,110, 72, 92, 37, 73,150,134,119,101,135, 71, 34,186, 35,180,106, 80,182,193,152, 6, +219,245, 88,163,176,189, 98,244,133, 79, 33,148, 98, 76, 25,159, 5, 57, 39, 92,134,232,227, 53, 7, 69,146, 10, 89,174, 18, 34, +179, 20, 72, 41,138, 71, 72, 44,235, 33,231, 72,111, 90, 20, 10,153, 18, 46,197,194,127, 9,129,148, 51,126,234,188, 75,128, 67, + 69,125,234,154, 17,236,139,182,210,101, 77,181,213, 57,179,179,229,158, 28,235,154,149,170, 20,126,165, 10,107, 94,202, 2, 3, + 52, 85,195,158, 37,184,109,121,198,119,110,208,156, 29,163,250,134, 72, 53,230, 26,134,253, 40,114, 28, 10,223, 44, 85, 19,175, + 92,247,166,148,251, 11,166, 60,224,155, 60, 41,178,251,136, 46,253,227, 23,245,105,227,236,226,245, 77, 56, 91,195, 38, 68, 78, +251, 89, 97,192, 43,137,150, 26,159, 3,173,178,236,130, 43,146, 77, 33,137,169, 20, 0, 45, 96,222, 90,178,200,104,101, 48,218, +146, 84, 49,143,209,182, 33, 27,133, 20, 5, 34, 79, 90,144,124, 42,186,116, 9,195,232, 72, 34,209,110, 86,140,163,195, 8,129, +161, 28,204,198, 40,230, 82,146,234,173, 75, 26, 75,175, 13, 66,168, 66, 48,205, 25,165, 37,129,196, 38, 4, 58,165,217,166, 29, + 99, 40,183,185,109, 8,200, 20,113,201,177, 75,197,168, 38,196, 64,204,137,171,177,134, 11,140,190,220, 0,121,136, 96,118, 88, +200, 31,158,121,124,148,228,166,199,133,225, 15,217,235,135,240,250,196, 70, 57,212,211, 78, 48,210,225, 60,253,240,224,123,224, +123, 50,176,163, 0, 0, 32, 0, 73, 68, 65, 84,115,164,189,222, 83, 38,248,220, 23,249,103,255,253, 63,225,211,159,121,158,221, + 24, 73, 49,177,219, 56,164,148,104,173, 8, 46,224, 6,143,214,154,228, 19, 90, 27,218,166,132,237,100, 47, 88, 44, 91,238,156, +206, 57,154,183,180, 86,147, 82,102,179,173, 5,125, 28,217,237, 60,209, 21,166,188,146, 18,221, 72,154,214,150,204,230,222,114, +122, 54,199, 52,134,174,211,116,173, 98,217, 55,180, 70, 23,251, 86,171, 80,170,216, 65, 42, 41, 74,144,146, 16, 52, 74,161,180, +160,109,202,218, 72,128,214,138,221,232,203,104, 50,102, 98,246,164,144,241, 62,150, 28,247, 52,178,176, 13,243,126,198,253,213, +134,251,235,129,147,238, 22,183, 78,239,114, 60, 63, 99, 27, 50,175,159,191,198,215,223,254,255,184,120,253, 93,222,125,247, 91, + 52,218,224,162,103,227,182,133,212,233, 19,111, 93,173,184,247,250,134,175,191, 49,114, 30,203,220,178,213,162,192,156, 72, 98, + 18,196, 44,216, 92, 92,177,186, 56, 39,231,116,205,156,127,229, 51, 47,243,175,254,197,239,213, 53, 38,139,215,192,195,228,185, +148,254,102,139,186,148, 92, 7, 14, 40,138, 76,200,214, 20, 55,226, 30,134, 55,166,116,234,145,194, 70, 86,213,152,101,242,224, + 14,110,111,179, 58,249, 55,124, 20,168,242,208,233,112, 26, 33, 61, 60, 83,127,148, 3,226, 7, 21,246,135, 47, 2,147,243, 91, +215,193,236, 4, 94,121,158,159,121,238,121,250,254, 6,183, 94,254, 52,179,179, 51,190,112,242, 28,255, 38, 9,100, 63, 47, 35, + 60,211, 66,183, 4,219,178,180, 13,163,105,120, 70, 41,206,133,228,118,142,136,228,233, 1,233, 70, 24, 29,127,248,237,243, 82, +208,183, 97, 63, 51,127,228, 25, 44, 96, 62, 43,207, 91, 73,116,215,209, 41, 77,171, 13,141,180,204,236, 2,165, 36, 77,219, 50, +239,123,148, 81,180,141,166,239, 53, 86, 23,189,122, 57, 11, 4,115, 9,207, 14,130,185,147,156,135,192,189,181,227,124,204,140, + 89,178,217, 70, 92,130, 17,129,145, 2,221, 25,154,121,135, 54,154,153, 81, 72, 83,116,226,178,178,177, 99, 76, 24,163,113, 57, + 19, 82, 38,250,226,200, 72,206,252,255,196,189,105,143,100, 89,122,223,247, 59,219,221, 34, 34, 35,183, 90,123,157,238,153,238, +153,158,149,228,144,179,144,166,104,120,100,137,180, 32,201,162, 12,193,134, 97, 24,134, 13, 88,111,253, 9,244, 73,252,206, 48, +224, 55,130, 0, 3,150, 44,195, 16, 8,129, 34, 9,209,195,197,163, 25,206,210, 51,189, 86, 87, 85, 86, 85,102, 70,196, 93,206, +234, 23,231,220,140,172,154,154,149, 51,102, 2,133,206,174,206,234,138,136,123,239,121,158,231,255,252,151,228, 35, 9, 89, 12, +110, 60, 41, 41,164,150, 8,161, 80, 36, 98,146,196, 20,209, 82,150, 59, 39,226,136,136, 40,217, 20, 82,154, 75,146, 84,242, 24, + 50, 99,189, 92,239,144,178, 27,206,140, 28,201,217,174,178,236,186, 67, 89,205, 76,229, 62,104,171,178, 35,175,138, 29,111,217, +191, 27, 85,238, 99, 83, 28,232,138,163, 92,101, 8, 77, 69, 24,166, 76, 92,156,166,108,208,100, 10,212, 95,215,121,143,222,180, + 89,233,160, 18, 52,203,146, 98, 90,216,244,198,228, 95, 84,217,159,225,106,199,254, 51,162,107, 79,153, 64,205, 60,167, 37,167, +191,245, 25,250,119,238,253,156, 69, 61,148,142,218,134, 43,198,173,234, 26, 98,140,172,234, 38,239, 37, 83, 96, 97, 58,156,183, +153, 9, 95,170,137, 86, 57,142, 47, 23,118,141,198,160,181, 34,206,246,130,166, 34,136, 12,125,250,148,167,233,148, 98,182,116, + 77, 96,221,148,189,159, 99, 68, 90, 71,155, 66,209, 3, 43,144,217, 0, 36, 20,153, 81, 43, 21,149,169,152,164,192,200, 60,249, + 67, 98, 12, 62,243, 96,100,162,119, 3, 83, 76,196, 24,153, 98, 32,132,132,141,150, 62, 70, 76,138, 76,209, 51,134,192, 16, 2, +202, 72,236, 80,144,138, 84,178,117, 67,202,123,173,217, 60,227,122,227,243, 60,210,206,143, 43,236,241,175, 49, 49,137,178,195, +153, 95,135,247, 69,255,250,188,235, 23,159, 62,208,174, 31,124,115,131,162,203,205, 92,138,124,247, 27,191,206, 63,253,253,223, +229,213, 87,110,176,157, 44,206,102, 66,141,181, 33,155,196,184,128, 27, 61,206,122,188,139,153,232, 41, 43,110,223, 62, 98,217, +214,220, 57, 57,224, 83, 47, 31,113,247,176, 99,213, 86, 24, 35,241, 46,107,206,123,231,217,246, 19,211,224, 8, 4,170, 90,114, +124,208,113,120,188,100,213, 54,180,139,154,170,169, 88, 46, 27,218, 54,103,149, 47,154,108, 65, 89, 75, 73, 91,101, 98,150, 20, +100,199, 58,178, 44,199,199,116,245,207,148, 18, 74, 73, 92,202,122,220, 36, 4, 55,110, 46,104,186,134, 36, 53,253, 48,224,220, +136,212,146,187,119, 94,198,232, 21, 62,118,172,218, 99, 22,102,137,199,210, 79,151,188,247,248, 61,254,223,143,126,192,187,247, + 31,209, 15, 35,247,238,221,227,131,113,203, 73, 91,113,105,123, 98,176, 24, 41,176, 62,112,208,180, 28, 47,150,132,221,200,238, +177,231,157,119, 31,240,120, 28,240, 94,224, 37, 56, 23, 48, 90,242,240,163,135, 36,161,184,127,118,159,182,174,112,253, 68,187, +236, 88,159, 28,243,221,111,253,160,200,111, 74,150,121,186,122,170, 51,145,231,111,226,235, 11,159,132,143,206,246, 89,213, 93, + 57,184,116,225, 91,164,184, 55,174,145,101,234,105,230,103,164,202,174,134, 37,116,228,106, 29,180,219,100,114,211,245,103, 67, + 21, 11, 86,165,139,135,118,120, 26,141,146,215,166, 21,249, 12,249,109, 46,242,215, 73,162,215, 81,172,231,173,170, 4,249,253, +164,107, 13,133,169,242,158,188,238,224,228, 24, 78,143, 57, 61,121,129,170, 94,160,214, 71, 44,186, 53,178, 90, 50, 24,195, 74, + 26, 30, 8, 9,205,138,165,174,248,120,189,224,139,221,146, 94,213,124,177,169, 9,186,230,213, 74,209,187,145,102,154, 16,253, +200, 69, 63, 18,156,229,221,179,199,185,160,255,180,150,193, 85, 38, 41,179,168, 65,231,251,249,184,109, 57, 48, 45,135,221, 10, +173, 53,181,106,105,154, 6,105, 26,132,145, 28, 29, 54,212, 38,123, 64, 84,149,196,250, 64, 83, 41, 54, 54,176, 35,112,223, 89, + 30, 91, 71,232, 35,155, 33, 48,133,196,214,131,143,129,160, 52,149,150,212,117, 69, 85, 86, 83,149,206, 69, 84, 75,208, 85,222, + 97, 71, 37, 81, 41, 18, 18,244, 54,159,179,169,164, 60, 75, 41,179,147,238, 24,144, 74, 35, 34, 8,153,175,107, 76, 16, 9,120, + 60, 85,146,196, 96, 73, 34, 19,172, 31,185, 33,155, 28,134,148, 67,107, 36, 56,239,247, 92,142,124,216,228,243, 42,196, 61, 12, + 62, 35, 90, 41,229, 34, 77,218,123, 31,204, 16,126, 73,176,203,135, 74, 93,172, 96,155,252,123,166,202,223,155, 18, 29,237, 3, + 60,217,230,130,158,128,182,219, 19, 73,108,145,216,205, 8,147,174,243,253, 28,108, 81,166, 20,117,138, 44,197, 61,149,220,148, +168,178,244, 45,253, 53,247,237,193,210, 47,187,172,144,224,231,141, 94,245, 62,239, 22,188,133,113, 36,132, 37, 65, 64,239, 28, +139,170, 34,132,132, 19, 19, 66,234,171,152, 86, 23, 60,157,174,217, 57, 87,194, 95,242,244, 24, 72, 40, 41,137,192, 32, 2,141, + 82, 76, 50, 91,181,202, 36,136, 66, 34, 69,200, 77,127, 83,227,167,128, 84,134,169,105, 88, 41,137, 68, 96,129, 6,129, 39, 17, +241,212, 42,199, 52, 70, 60,141,212,108,253, 72, 74, 25,206,247, 5, 98,151, 82, 93,173,248, 34,137,232, 92,113,226,206,222,238, + 54,134,210, 0, 10, 90, 45,217,217, 80,172, 93, 21, 76,133,120,209,212,121, 10,121, 38,132,226, 41,232,123, 46,164,115,218,217, + 47,210,204,255,250, 62,252,122, 99,161,245, 62,160, 0,160, 57,129,221,195,189,139,157, 46,176,174, 44, 7,153,245, 79,191,174, + 57, 20,102,178,168, 47,126,145,255,241, 31,255, 46,183,110, 29,211, 91,135, 31, 61,206, 39,198,126,194,109, 39,188,145, 89, 87, +238, 28,166,174,233,218,142,174,109,185,113,178,230,112,209,112,220, 54, 28, 30,212, 84,198,224, 17,232, 4, 33,228, 6,175,173, + 53,245,168, 88, 24, 67,106, 34, 82, 24,186, 78,113,184,108, 56,232, 42,170, 42,223, 23,143,183, 83, 38,186, 10,129, 79, 9, 37, +196, 21,225, 73, 37, 24, 93,196,151, 38, 42,164,132, 15, 57,128, 66,144,208, 10, 34, 57, 37,106, 33, 12, 34,102, 78, 7, 73,178, + 88,100,120,116,220, 14,128,160, 94,156,114,121, 25,248,193,135,223,195, 37, 79,171, 12, 67,152, 24,253,196,197, 48, 50, 78,150, +139,209, 33,107,145,107,234,144, 96, 51,240,199, 37,142,164,171, 37,175, 30, 30,210,153,200,163,161,231,160,223,112, 99,169,177, +253,134, 16, 3, 15, 63,122,159,147,211,155, 44,215, 45, 71, 39, 43,142,150, 53,175,189,241, 49,254,236, 79,191,206,217,118,160, + 86,231,172,143, 15,120,116,239, 33, 47,188,246, 42, 44, 86,215,238,169, 6,252,144, 15, 16,255, 55,167,190,248,242,107,111,242, + 71,147,135,239,191, 95,228, 69,213,158,112, 38,202,247,190,248,197,171,178, 95, 79,117, 46,186,253, 46, 79,188,233,218, 1,182, +155,138,186, 34, 62, 69,144, 71,181, 80,207,200, 82,202,223,135,248,195, 58,243,164,159,150,246,120,255,252,103,172, 42,191,231, +125,222,253,247,219, 60, 81,167,107,140,104,231,243,239, 25,153,247,169, 55,215,121, 71,174,117,126,214, 23,199,124,242,228, 22, +232, 5, 13,138,164, 36, 71,109, 67,116,142,229,201, 9, 63,216,238,192, 77,156, 52, 29,199, 4, 30,122,248,213,229,154, 71,231, +231,188,209, 5,166,237, 19,190,149, 22,156,125,244, 4, 30,220,135,116, 93, 30,251, 51,156, 9,215, 87, 14,149,161,110,115,147, + 84,107,197,110, 26,169, 85,139,234,114, 51, 99, 67,160,211, 13,227, 20,193, 68, 78, 90,201,118, 8, 44, 59,205,217,214, 34, 36, +156, 91,143,177,158,225,194, 33, 82, 34,197,136,221,141,224, 5, 3,130, 86, 37,164, 49,180, 2,164, 20,200, 20,144, 8,132,203, +164, 82, 69, 64, 36,129, 10,185,216,134,148,168, 67,246,114, 8, 33,103,174, 11,153, 16, 73, 99,234,116, 69,171,240,110,142,185, + 78,153,199, 18, 21, 99, 24, 73, 72, 70, 63,224, 98, 66,167,196, 24, 2, 74, 64,171, 5, 27, 79,153,112,109,201, 97,151,215,140, +104, 10, 33, 83,139,189, 98,231,202,122, 88,194, 82, 61, 93,195, 18, 48, 21,109,250, 52, 27, 21,201,226,156, 90,238, 23, 89, 84, + 28,222,103,196,102,188, 78,208, 44, 50,205,249,114,212, 42,163, 83, 83,202,223, 55,203,226,102,167,247,168,130, 20, 16,171, 60, + 20,155,194, 9,208, 99,110, 22,254, 58,233,109,223,248,222, 95, 3,126,191,186,177, 34, 56,145, 59,117,109,168,171, 42, 59,168, +198, 72, 91, 25, 34,146, 74,202,236,170, 21, 34,181,174,112,193,210,152, 6, 37, 36,149,210, 24,153, 77,238, 43, 93,161,234,138, +170,174, 89, 29,174,243,218,195, 39, 98, 97, 54,134,152,163, 6,133,200,123, 32, 59,246, 28,232, 12,185, 10, 37,105,141, 38,200, +108, 21,216,153,154,136, 32,170,132, 84, 21, 3,145,182,105,114, 20, 38, 17, 97, 20, 46,192, 24, 29,117,221,112, 49, 58,108, 74, +136, 18,152,224,163, 39, 10,193, 24, 61, 62, 5, 42, 45, 56,159, 60,131,143, 25, 90,179,182, 72, 24, 10, 67, 86,215,249,230, 8, +101, 92, 84,197,107, 93,170, 61, 17, 67,166,253, 77, 38,197, 47,198,126,243, 58, 35,247,106,234, 41, 30,217,215, 39, 16, 31,224, +181,151,242,129,187,219,236,225,160, 84, 8,116,149,218, 19,152,230, 73,198, 21, 93,250, 39, 63,203,255,244,223,252,125,222,120, +229, 22,219,201,114,254,100,199,102, 51,144, 98, 66, 8,129,115,142,177,183,217,117,202, 71,218,166,227,244,198, 33, 55,142, 15, +184,181, 94,210, 40,157,225,240, 36, 24, 93, 98,103, 35,151,147,103,231, 60,155,237,196,102,176,236,172, 99,176,158,182, 82, 44, + 91, 67,215, 24, 26,147,239,157, 32, 4,181,145,116,181, 46,171, 89, 73,165, 36, 54,228,132,190,209, 7, 6, 31,136, 41, 49,249, +128, 43,228,153, 16, 83,118, 7,140,241, 74, 7, 79,177,165,204,134, 67,130, 85,173,185,232, 39, 36,112,180,108,232, 7,199,135, +247,222,225,223,189,243, 29,222,254,206, 7,220,127,231, 17, 31,220, 59,227,254, 59,143,120,244,131, 75,118,214,194,162,202, 16, +163,214,220, 94,118,156,222, 58, 64,174, 27,218,198,208,214, 13,151, 59,203,165,155,232, 83,226,114,178, 36, 2,147, 79, 52,166, +102,189, 62,101,177, 56, 98,185, 62,166, 58, 48,216,205,150,203,161,231,248,112,193,119,223,126,143,203,113,224,201, 56,176, 50, + 21, 70,107,218,174, 69, 25,248,224,131,179, 61,180, 28, 67,201,154,254,155,131,221,223,255,230, 95,101, 8, 82, 74,168,219, 92, + 89,175,152,227, 51,251,188,192,163,243,228,110,195,222,174,184,183, 25,134,119,236, 11, 90,138, 79,195,144, 66, 67, 91,158,157, +217,172,230, 89,119,184,121, 26,191,126, 30, 81,154, 3,127,173,248, 95, 73,151,100, 49, 39,161, 48,239,175,165,104,205,251,233, +122,149, 15,244,155,167,121,242, 58, 88,102, 79,246,118,149, 27,172,170,229,172, 90,240,198,106, 9, 70,163,144, 44, 5,168,174, +163, 50,146,203, 32,120,189,169,121,185,170,145,149,161,209,146, 49,192,205,197, 18, 45, 35, 74,213,220,172, 4,223,189,236,225, +252, 73,246,188,248, 73,123,252,231,125,117,217,205,147, 85, 11, 50,187, 23,118,218,100,166,123,179, 96,217,174, 80, 73, 97,234, + 26, 83,213,200, 90, 99,165, 36, 10,208,181, 34,144, 56, 27, 61,187,152,120,188,177, 52, 41,209,111, 39,130, 13, 92,156, 79,108, +138,137,147, 19, 49,135,170, 72, 56,212, 25,186, 87,228,218,134,183,172, 42,197,146,132,140,129,198, 36, 42,153, 57, 77,102, 12, + 44,140,192, 91,207,218, 72,140,204,126,244, 46, 38, 82,113,105, 75, 82, 96, 93, 86,184,120,103,145,210, 96,157,103, 8, 14, 65, +192, 71, 65,239, 7,124,153,166, 67, 74,140, 49,146, 82, 96,154,121, 65, 41,238, 67, 88,162,216,187, 18,218,130,166, 94, 31,172, +164,200,133, 54,201, 61, 50, 35,196, 30, 66,215,229, 92, 60, 92,228, 34,188, 94,228,169,186, 42, 1, 71, 77,125,205, 57, 80, 21, +179,174,148,163,185, 21,249,254, 81,229, 44,174,212,254, 60,158, 37,117,179,151, 68, 44, 36,202,170,202,175,111,190,150,166,161, +200,180,184, 10,181,255,105,214,182,207,221,228,206,190,180, 63,235,244,232,201,147,235,110,128,101,203,229, 56,209, 30, 24, 42, +173,242,123,149,121, 63,168, 0,173,178, 25,141, 86, 57,212, 66,154, 12,135, 68, 45, 89, 84, 13,222, 7, 24, 28, 71,235, 99, 98, + 76,180,117,205,214, 57, 68, 76,184,204,130, 64,106,133, 74, 16,123,203,186,233, 16,222, 33,149,166,149,217,112,163,142,142, 24, +115, 39, 86,215,154,201, 58, 60,176,208, 21,131,155, 64,231,189,102,239, 61, 19,160,117, 69, 31, 28,117,101,114,224,142,130,138, +132, 77, 33,195, 59, 17,140, 20,220,223, 77, 88,145, 88, 24,197,165,115,249,144,153,161,207,182,202,147,122,219,230,110,203,150, +174,173,160, 19,121,210,136, 57,179,215,164,189, 46,242, 23, 57,173,135, 31,227,152, 53,119,126,223,252, 22,212, 39,251,191, 55, + 20,226, 82,163,242,158, 73,213, 48,110,246,211, 79, 57, 52,255,251,255,252,107,124,226,213,219,124,244,232,156,243, 39, 3,227, +182,207,131,208,177,161, 63,223, 33,165,202, 82, 63, 64,169, 26,169, 53, 70, 27,214,109,131,136, 2, 76,158, 94,165,132,193,123, + 70,159, 3, 93,166, 41,224,188,203, 73,107, 62,178,106, 20,181,150, 24,149, 53,232,181,150, 4,159,211,247,124, 72, 87,207,164, +245, 1,169,100,182,246, 77, 17,231,178,193,140, 81,130, 90,102,235,225,193,103, 21,195,186, 49, 28,215,154, 39,222,161,162, 34, +164, 64,165, 20, 19, 2, 37, 35, 86, 36,162, 11,124,244,254, 19,222,122,233, 6,127,231, 87, 63,206, 7,175,221,225,243, 79,182, +108,207, 30,115,113,255, 62,255,230,222, 67,238, 95,236, 56, 62, 88,178,179, 83, 38,118, 93,244, 88,229,168, 94, 61,226,245,211, + 23, 0,201,232,122,142,154, 53,143,250,115,222,125,242, 17, 99,244,220, 89, 31,113,227,224,148, 23,143, 95,193, 52, 10,161, 36, + 93,183,128,148,208,169,195,138,158, 39, 31,124,200, 52, 90, 72,146,117,211,241,157, 71, 15,217,244, 59,186,229,130,113, 24,120, +235,205,143,243,199,127,244,151,133,195, 49, 75,169,228, 47, 75,163,246,156, 7, 92, 63,127,130,156,119,132,215,115,170,159, 82, +200,148,189,162,223,150,201,153, 12, 47, 87,250, 26, 23, 32,238, 51,218,159,125, 22, 26,253,244, 68, 42,126, 12, 74,117,253,229, + 94,127,173,243,189,174,100,137,227,140,251, 2,110,231,169,188, 20,253,102,193,167, 94, 57,229,155,125,226,173,227, 37,255, 97, +112,249, 16,215, 69,117, 80,215,249,185,111, 50,114,178,113,150,163,102,149,225,220,174,206,219,200, 36,249,204, 97, 71,140,137, +206,123,238,133,196, 75, 82,178,213,146,190,223,225,245, 1, 55, 87, 59, 52, 1,150, 7,112,120, 10, 15,166, 61, 82,240,211,126, +205, 70, 61,199,213,158,176, 15,180, 85, 77,165,178,106, 8, 33, 17,117, 13, 70,147, 42, 73, 31, 5,210, 38, 38, 13,187,173, 67, + 40,168, 98, 34,248, 64, 27, 2,143,135, 68,178, 30,119, 49, 50, 77, 14,225, 34,209, 7,164, 15,164, 41,178, 90,106, 84, 72, 24, +160, 85, 18,182, 30,161, 36, 85, 8,212, 74,113,128,160,237, 3,203,166,195, 74,129,104,243, 94, 60, 44, 20,151, 2, 6,159,152, + 72,104,163,216,141, 57,231, 67, 38,143,170, 27,252,118, 3, 66, 50,216,204,169, 48,218,144,130,163,213, 57,207,131,104,233, 84, + 94, 3,100, 87, 76,168,140,193,150,128,159, 43, 25, 89, 44,126,240,243,122,212,152,162, 8, 33,239,219,103, 7,195,186,228, 96, + 84,134, 43, 59, 87, 91,206,194,121,181, 97,212,158, 24,185,217,237, 99,136,107,179, 71,117,148,134,118,158,208,219,114,127,149, +123,202,135,125,202,219,108,136, 51, 27,210, 44,154,253,128,215,150,149,213,193, 34,251,159,136,226, 55,111,251, 34, 1,245,215, +182, 74,254,167, 6,115, 20,159,248,141,127,134,110,138,199,240,207,120,131, 93,193, 27, 2,140, 97, 20,130,163, 98, 25, 27, 82, +162,171,187, 76, 52,148, 25,182, 1,137, 81, 6,231, 45,139,170,197,152, 10,239, 29, 74,107,170,170, 66, 42,153,173, 61, 71,143, +119,129,152, 66,134,232,189,205,126, 3,198, 92, 73,213, 4,130, 78,105, 84,165,104,171,154, 88,188,182,149,202,190,193, 90, 41, +122, 60,190, 50, 56, 41,136, 82,224,203,244, 23,165,194,133, 84, 10,132,194,147, 24, 98, 68, 42, 65, 64, 49, 5, 71, 20, 96, 99, +196,123, 79, 4, 46,103, 59, 65, 55,199,244, 5, 24,124, 62,128, 76, 73, 65,211,114,207,190,212,213, 85,224, 12, 34,128,207,121, +200, 25,134,249, 5,234,220,159,149,160, 93,119,154,131,124,160,165,196,242,139,159,226,205, 79,127,146, 7,223,127,167, 4,107, + 20,214, 39,100,233, 76,244,229,192,200, 13,203, 87,255,209,239,241,197,175,124,150, 39, 23, 59,206, 30, 92, 48,141, 14, 33, 36, +139,163, 37, 82,192, 56, 58,148, 84,153,132, 40, 52,141,233, 88, 45, 23,220, 56, 92,177, 48, 6, 93, 73, 42, 45,179,172,176, 20, +228,201,122, 38,231,121,120, 57, 48, 12,150,144, 34, 93,173, 56, 57,104, 56, 89,214,116,149,166,174,179,129,139, 72, 96, 83, 68, +149,196,189, 90, 41, 92,202, 69, 62,165,132,143,145,169,172, 2,188, 15,153,171, 17, 2, 75,149, 77, 53,106, 9, 71,181, 64, 37, + 65, 91,107,140, 82, 28, 47,170,204, 50,247,217,184,232,171,119,143,185,191,245,124,251,189, 75,234,165,230,159,252,202, 43,188, +113, 99,141, 93,116,220,121,241, 5,110,117,135,252,173, 79,189,206, 73, 85,115,115,209,241,202,225, 1,111,223,127, 12,135, 13, + 55, 15, 14, 89, 54, 71,212,213,146,179,254, 12,235, 39,142, 22,167, 28,117, 71, 88, 59, 32,180,196,166,192,163,221, 37,253,180, +165, 51,154, 16, 18,170,170,105, 79,142, 88,159,172,121,244,209,123,220,127,248,144,179,237, 37,141, 82,216,232, 57,219,141, 28, +183, 53,218,212,172, 78,143, 56,239, 39, 30,199, 2,225, 45,234, 60, 57,110,182,240,242,139,121,215,187,219,254,116,132,178, 89, +226,248, 60,255,105, 93, 12, 83, 84, 93, 10,118,169, 20, 17,126,200,217,238,106,197, 83,149,123, 59, 93, 13,231, 87,171, 32, 81, +216,193,241,218, 58, 71,183, 69,195, 92, 98,140, 99, 40,207,197,143, 32,179, 25, 83,140, 61,194, 62, 6,152,244,252, 41,253, 89, + 7,184,249, 25, 48,229, 92,155, 9,125,130, 12,115,170, 98,164, 21,129,213, 33,191,243,137,187,208, 45,248,212,233, 1,163, 50, +124,108,125,204, 3, 93, 19, 40, 36, 40, 53, 59,226,105,106,165,184, 45, 13,171,186,197,106, 77, 40,159,109, 15, 8, 31,185,211, + 42, 30, 76,129, 35,165,121,140,228, 52, 70, 70,173, 57,145,130, 71,187,137,202, 40,190,179,221, 16,182, 27,112,187, 44, 95,155, +157, 27,137, 63,217, 29, 80,138,252,218,219,114,173,180,166,174, 52, 71, 85,203,141,118, 77, 83,119,232,182, 35,233,138,164,103, + 99, 26,137,175, 52, 91, 31, 25,109, 98, 40,124,150,201, 5,122, 23,176,189,195, 59,207,110,211, 51,238,118,216, 97,196, 13, 3, + 79, 54, 23,248, 48,176, 10,129, 54,122, 26,111,105,132,162,149,130, 54, 37,148, 11,168, 16, 80,253,150,195, 32,104,156,227, 80, + 36, 78,132,164, 78,176,144,146,227,153,188, 22, 18,163,205, 38,100, 81,130, 39, 27,205, 88,114, 38, 67,116, 83, 1, 99, 2,181, +132,173,179,212, 90,161, 99, 65, 85,147, 96, 91, 84, 34, 50, 37,166, 48,171, 38,202,125,161,138,124,208,198,124, 47,135, 82,228, +141,218,123,186,171, 98, 35,107,202,218,104,110, 78,187, 54,159,233,203, 54, 23, 86, 93, 96,117,235, 11,217,173,144,186, 42,185, +135,252, 83,122, 70,217, 81, 10,249,220, 44,198,107,164,198,114, 6,102,120,158,125,112,207, 12,205,147,114, 3,217, 85, 5, 61, + 48, 37,168,166,202,182,236,198,228, 65,108,158,226,141,250,177,104,175,166, 42,111,206,245,249, 65,252, 89,119,235,253,148,223, +100,183, 32,180,145, 39, 67,207,170,110, 88,181, 11,118,211, 68,103, 42, 98, 20,104,165, 8,201,227,130,167, 53, 13,162,216, 8, +106,221, 20, 94, 86, 96,219,111,113, 5, 58, 75, 50, 75, 96, 4, 30, 97, 76,238, 64, 67, 68,104, 67,136, 17, 45, 50, 44, 34,200, + 72,158,150, 58, 55, 19, 37, 3,120, 34, 81, 91,195, 16, 29,178,173,137,147, 39,146, 47,104, 26, 29,168, 72,136, 57, 64, 64,138, + 28, 3, 58,216, 17, 85, 12, 27,130, 29,242,231,111, 42,198,105,204, 55,198,124, 65,231, 32,138,142,253,174,164, 41, 83, 59,177, +200, 27,124,177, 19, 28,179,204, 69,216,125,135,104, 13,248,205, 47,103,224,242,215,118,235,222, 23,147, 5,205,246,235,127,193, + 95,118,119,246, 41,113,179,127, 65,152,181,190,236,157,242, 62,253, 43,124,249,171, 95,100,234, 29,231, 23, 59,236,224,233, 86, + 29,235,227, 5,187,157,205, 58,236,170,152, 5,249, 72,219,180, 28,173, 87, 88,155,216, 92, 58, 90, 93,161,141,206,241,182, 33, + 91, 75,246, 54, 50,249,136,240, 41,155,212,233,226, 52, 72, 34,250,136,151, 34, 39, 74,185, 12,143,139,226,167,158, 27, 68,152, + 98,134,211,189, 15, 76, 33,160,129,187, 11,195,214,121,108, 36,235,210,133,160,174, 36,166, 16, 39,183, 73, 82,213,249,129, 90, + 86,186,168, 51, 20, 42,229,176, 8, 93, 43,190,252,214, 93, 14,239, 58,132,155,248,151,223,251,144, 79,158, 30,178,104, 43,222, +126,239, 33, 7,171,142, 91,199, 45,159,251,204,139,124,233,238, 17, 95,127,255, 17, 31,127,245, 14,127,240,141,111,211, 85,138, +255,240,240,109,110,117,135,108,118,231,180,139, 53,141,214, 28,180, 43,130,219,240,253,199,247,248,246,238, 17,156,245, 48,129, +124,105,205,155,199, 7,188,122,114,151,203,199,231,220,188,123,139,110,125,155, 15,238,127,157,247, 31,111,121, 18, 2, 71,141, +225,184,209,188,254,202, 43,208, 86,188,124,231,136,255,234,239,253,109,198,205, 84,164,179, 9,239, 44,214, 58,126,243,197, 19, +222,221,142,220,187,127,198, 63,255,147, 63,229,251,127,242, 39,207,191, 31,230,201,126,158, 96,174,166, 61,251,244,228, 29,138, + 51, 87, 20,121, 79, 45, 96,191, 64,252, 81, 13,165,223, 67,153,243,200,152,138, 53,177, 42, 15,230,172,170,104,155, 61, 68, 63, +142,123, 39, 48, 51, 51,233,175,161, 87,222,231,226, 43,202, 68,227,226, 30, 77,212,250,153, 41,253, 57, 19,140, 47,137,130,161, +200,157,204,140,104, 85, 64,137,198,140, 64,183,162, 90, 47,104,215,199, 60, 30, 29,147, 94,209,170,136, 87, 45, 7,106,226,108, +102, 67,199, 0,228,102,224,165,234,152,191, 36,241,149,177,199, 87, 29, 15,189,231, 70,157, 21, 54, 46, 6,118,219, 68,155, 18, + 46, 4,150, 62,112, 33, 19, 77,128,247,135,129, 59,109,199,159, 61, 60,195,234,186,228, 41, 52,192,112,109,152,210,123, 53, 65, +224, 71, 35, 37, 77,243, 84, 35,181,214, 53,175, 44,142, 48, 90,211, 45, 14, 80,166,193, 10,137, 23,217, 37, 81,135,128,244,158, +158, 60, 45,214,129,108,186,148, 34,135, 33, 50, 4,136,214,147,236, 68,231, 61,151,155, 39,108,135,145,139, 96, 57, 89, 44, 48, + 65, 98,162, 64, 43,131,242, 19, 76,145, 74,107,100, 74,172, 72, 28,168,154, 62, 76,220,162,166, 9,128,205, 17,184, 49, 36,182, + 41,177, 6,188,148, 96, 2,187, 36,216,246, 57,138,117, 8, 16,165,198,121,176, 73,224,163,133,152,216, 38, 79, 35, 4, 67,136, + 57,249, 48, 72,182,113,226, 88, 73, 30, 90,143, 79,137,202, 40,172,191, 86,216, 92,200, 77,163, 36,103,116,212,234,202, 19, 38, +251,245, 87,153,244,166,203,120,189,185,132,195,155, 87,217, 33,121,184,241,217, 44,104, 94,139, 84,165, 33, 30, 11,241,120,156, +242,223,129,202, 30,244, 70,239,137,199,218,236, 25,237,115, 35, 60, 7, 21,213,106,111, 49, 27, 11,169,180,196,204, 94, 33, 71, +162, 88, 5,207, 16,126,167, 11, 2, 81, 66,106,132, 4,209,149, 84, 66,191,143,149,157,182,207, 41,234,214,230, 23,253,243, 70, +194, 57, 11, 99,121, 80,235,138,209, 84, 32, 39, 26,165,209,166, 33, 4, 79, 83, 53, 56,239,179,109, 32, 1, 37, 4,163,179, 44, +171,150,132,199,135,188, 43, 7,152,220,136, 49, 6, 65, 78,231, 97, 4,161, 36,202,228,110, 44,196, 68,165, 13, 82, 72,100, 74, + 40, 45,208, 90, 34,165, 36, 90, 15, 77,131,176,142,224, 70,236,178, 35, 13, 3,187,209, 83, 53, 21, 97,202, 19,172,212,154,224, + 66,118, 52,210, 26, 3,244,222, 17,230,157,135,169,193,123, 42,149,120, 56,236, 8, 66,130, 42,222,189,182,192, 47, 90,238, 77, +191, 98,249,240, 27,157,247,135, 49,236,147,116,150,139,124, 3,232, 42,103,241,206, 36,167,174,185,150,219,251, 75, 40,236,215, + 39,150,249,151,125,239,233,131, 83,235, 98,252,241, 52,148,249, 15,127,227,147, 28, 28, 46, 24,122, 71, 93, 85,196, 54,210,173, + 26,134, 41,224,125, 32,248,144,161,247, 49, 66,212,144, 36, 77, 91,209,181,154,227,101,199,201,186,161, 49, 10,173, 4,147,143, + 87, 62, 17, 25,164, 72,156,116, 21, 73,102,139,212,186,146, 44,235,236,212, 85, 43,144, 73,226, 93,222,125, 87, 38,179, 94,173, +207,170,133, 90,136,140,150, 26,133, 72,137, 86, 9,142, 27, 73, 31, 2, 62, 9,142, 69,162,145, 32,100,226, 50, 69, 84, 20, 60, +216, 57, 22,149,166, 89, 42,166, 8, 55,187,134, 70, 43,238,157,247, 84,141,226, 83, 55,150,124,226,101, 69,171, 37,223, 61,219, +240,199,223,127, 76,178,137,118,181,200,172,210,193,161,158,244,252,145, 11,156,172, 59,254,233,215,126,141,223,248,220, 39,248, +171, 15, 30,241, 23,127,254,109, 8, 19,127,241,216, 49,212,142,239, 61,252, 30,173, 54, 60,222, 92,112, 62, 76,121,157,211, 25, +208,129,248,120,195, 55, 31, 92,240,225, 75,151,124,246,228, 9, 97,218,112,252,194, 29, 62,241,218,167,249,236, 23, 86, 28, 30, + 53,156, 30, 85,124,236,100,193,113,171,217,218, 64,140, 9,119, 43,175, 9, 14,154,236, 3,177, 48,146,202, 72,158, 12,158, 99, + 27,249,170,150,252,195,127,240,219, 92,140,142, 15,207,123,254,234, 59, 31,242, 7,127,242,111,248,247,255,242, 15,114,241,126, + 22,189,126, 14,124,159,102, 78,198, 83,147, 50,224,126, 68, 81, 9, 49,167,254,173, 86, 87,220,162,252,255,141,249,126,130,167, + 7, 4,235,193,216,130, 94,197, 31,173, 6,185,190,150,250,113,164,161,167, 26,215, 31, 1, 81,207, 68,209,201,150,116,184, 17, +148,205, 16,122, 4,150, 29, 7,183,143,249,220,237, 35, 30, 76,142,182, 91,208, 72,131,174, 26,188,183,188, 46, 91,162,115, 60, + 22, 83,209, 53,231,117,195,247,118,143,249,220,193, 17, 31, 76, 19,157,245, 44,155,134,139,113, 96,170, 42, 86, 36,190,229, 19, +159, 58, 88,224, 67,100,212,138,208,247,244, 68,110, 24,205,187,110,226, 65,242,185,104,175,186, 60, 8,236,158,121, 15,234,153, +141,200,243,222,223,236, 3,128,130,186,227,184, 57, 0,109,232, 86, 39,128,200, 50, 49,165, 24,172,199, 8, 5,109,102,189,143, +206,102,146,127, 37,137, 33,114, 75, 36,250, 0,149,245, 56,159,101,118,143,206,207,168,172,227,124,216,178, 86, 18,101, 61, 85, + 91, 50,215,181, 66,248,136,209,138, 70,105, 90,165,104, 66, 64, 37,201, 43,170, 65,183, 6,233, 50, 87,105, 12,142, 74, 26,150, + 17, 92,217,109, 75,165,176, 9, 14,170,192,189,201, 33,148,100,176, 16,181, 33, 22,215, 60, 27, 71, 26,169,241,193,211,136,188, +130,105,141, 38, 18,217, 13,158,227, 74, 18,167,196,214, 63, 19,128,163, 75,246,192, 44,250,153,175,217,172,106,208, 6,213,182, + 4, 1, 75,221,210,175,142,178,185,213,220,224,166,178, 90,165,104,202,103,253,183, 47, 67,161,243, 57,223,125,178,249,140,191, + 90,125, 62,207,182, 53, 62,237,251, 62,133,189, 74,169, 42, 78,117,117,149,121, 78,211,144, 45,106,131,205,141, 71, 27, 96, 96, +111, 83, 60,199,246,174,171,140,112,205,107,178,177,217,115, 82,226,248,148, 25,154, 34, 30,253, 51,250,221, 47,198, 33, 77, 43, + 44,146,227,197, 65,102, 43,147,117,232, 62, 6,140, 52,132, 20,179,113,143,146,212, 82, 35,148, 68, 11,205,228, 28,198,232,108, + 56, 83,236, 10, 19, 18,235,178, 23,180, 49,249,165, 6, 33,209, 74,162,234,138, 78, 41, 92,136,212,198, 16,139,255,182, 48, 21, + 82, 10,122,159,205, 82,108, 49,213, 87,166,194, 21,178, 84, 10, 41,155, 36,248,108,136, 16, 98, 98, 76,146, 68,196, 9, 65, 31, + 34,194, 71,156,144, 92,122,139, 22, 2, 23,115,246, 58,163, 43, 45,180,156,147, 72,242, 1, 35, 74,182,239, 12,181,248,180,135, +229, 41, 36, 57, 81,172,183,116, 85, 76, 15,202, 69,255, 57,201, 16, 63, 53, 52,255,211,252,251, 51,191,255,247,254,219,127,130, +146, 96, 71, 79, 8,185,184,132, 72,201,176,167,216,233, 10,130,135,186,174, 89,173,150,220, 61, 93,115,178,234, 88, 45, 43,150, + 38,147,106,102,215, 80,151, 34, 33,164,156,167,160, 5,146, 68,163, 20,167,107,195,210,232, 28,211, 56,191,148,144, 81,155, 84, +248, 47,214, 7,100,138,184,152,167,250,144, 2, 33,230, 73, 40,133,200, 50, 6,100, 8, 28,196, 68, 37,160, 18,146,147,148,232, + 98,226, 72, 10,172,200, 83,129, 69, 48,110, 7, 78, 43,195,113, 83, 97, 18,124,235,108,199, 7,151, 35, 8,112, 8, 78, 15, 58, + 94, 59, 93,242, 36, 8, 92, 72,220,190,181, 4, 35,233, 55, 35,110,116, 60,222, 78,216,201, 51, 38,137, 49,134, 95,255,252,107, +188,122,186,166,221, 89,254,175,119, 63,228,163,221,150,147,174,166, 51,154, 86, 27, 86, 90,179, 37,145,106, 69,210, 18,121, 80, +241,249,211, 99, 94,190,121,194,209,141, 5,191,255,183, 94,231, 31,125,233, 99,124,233,205,219,124,254,229, 99, 62,125,123,141, + 20,130,203,193, 35, 82,126,126,124,136,236,172,103, 42,132, 64, 18,152, 74,177,168, 12,125, 16,124,112, 57,161, 82,228,229,211, + 37, 95,184,125,196, 75,119, 14,249,237, 47,126,129,127,252,251,191,199, 43, 47,189,196, 31,254,209,159, 34,144,121,109, 37, 4, + 34,101, 67,165,108, 2,146, 15, 32, 97, 52, 34,169,125,241, 87, 62, 79,217,209, 62,127,143, 61, 75, 38,173,203,208,160,119,123, +226, 82, 74, 48,244,207, 88,179, 22, 34,102,112,123,185,219,117,107,215,249,240,251,113, 30,239,215,139,254,179, 43,166, 31,154, +100,203,142, 83, 25, 56, 88,103,104,179,237,114,228,235,170,205, 59,204, 69, 67,234,106,110, 54, 13, 73,213,188,118,184, 38, 42, + 56,210, 25, 53, 56,172, 5, 15,109,228, 50,133,189,115,153,200,222, 2, 70, 72, 14, 98,162, 14,142, 46, 5,206,172,101,185,125, +140, 53, 21,223,159, 70,118, 33,114, 71, 73, 30,218,137, 35,165,232,157,167,247, 17, 29, 2,223, 24,167,124, 80,251, 30,118,187, +167, 19, 21, 37,251, 40, 80,226, 15, 15, 90,179,202,230,228, 6,172, 22,176, 94,243,194,209, 13,126,227,246,203, 28, 44, 22, 24, + 45,168,181,193,232, 26, 27, 50, 41, 46, 42, 69,240,137, 33, 6,162,148, 52, 82,208, 72,193, 97, 2, 23, 34,235,152,176,131,163, + 38,176, 59,127,130,187,124,130,157, 70,150, 9,218,182,166,105, 90, 58, 93,161,149,196,196, 72, 83, 27,140,128,133,169,232,128, +195,202,176,142, 9, 35, 5,173,148, 57, 72, 70, 10,234,226,190, 39,124,162, 49,138,160, 37, 23, 49,175, 52, 71,153,120,178, 29, +121,224, 3, 59,239,144, 36,164, 80,104, 33,104,116, 3,228,193,109,240, 1, 93,144, 58, 45, 36, 33,228,231,160, 83,154,243, 16, + 8,162, 64,234,161,228, 90, 36,153, 27, 37, 93,200,202,198,228,207,169, 93,242,202,250,152,151,186, 21, 47,214, 75, 94, 90, 30, +176,144,134,186,233,184,156,173,101,227,108,141, 88,216,240,148, 51, 91, 42, 82,140,168, 36,114, 13,152,189,231, 93,185, 47,180, +222,147,159, 37, 92,165, 13,134, 18, 24, 19,194,158, 61,175, 85, 70, 11, 40,171, 31, 63,149, 34, 31, 74,211, 88,254,124, 87, 21, +223, 6,246, 49,217,161,188,174, 57, 77,179,170,246,178, 82,165,158,178, 83,254,249,217,239,207, 22,135,144,242, 94,185,210,236, + 20,116,170,202,122,113, 93,229,240,148, 20,169, 10,116,110,148, 42,102, 5,142, 90,213, 72,149, 39,247,170, 64, 15, 33, 7, 40, +227,124,204, 97, 72, 73,225,139,105, 71,221,154, 43,179,131, 99,173, 24, 10, 6, 85,155, 42,147,169, 82,190,105,119, 62, 32,203, + 14, 61,197,204,160,244, 73, 16, 69, 42,103,135,196,249,128,149,121, 42,180, 41,225, 98, 96,112, 30, 75, 98,112, 19,125,132, 41, + 58, 70,239, 50, 51, 49,206,123, 22,181,183,192,140,215,189,126,227,158,253,152,174, 77, 70, 90,150,255,158,246,123,179,217,210, +112, 14,148,144,242,167,119,210,250, 37,126,125,236,111,255, 14, 95,254,245, 79, 51, 12,150,126,219, 19,124,196, 59, 79,211, 53, + 76,253,196, 52, 58,166,222, 18, 92, 64,146,189, 5,106, 99, 16, 66,178, 90,213,172,155,153, 37, 43, 24,124, 36,146,153,234,110, +138,217, 35, 71,230, 98,127,227,192,208, 26,141, 42,134, 44,145,108, 24,163, 77,182, 87,157, 51, 26,116, 10,248, 24,209, 50, 63, + 15,243, 80, 24, 99, 36,185,192,165,143,120,149, 27,142,205,232, 80, 17, 22, 49, 81,249,192,165, 4, 87, 25,140, 81,168,199, 59, +212,119, 30,243,238,195, 11, 76,163,185,209,182,180, 49,114,239,114,199,251,103, 61, 23, 86,178,168, 20,199,173,225,184, 51,220, + 92,104,188,183, 28,117, 29,186,210,108,206, 7,198, 41,112,255,114,228,209,229,192, 43, 39, 75,188,245,124,250,227,183,248,237, +207,189, 14, 23, 3,255,254,175, 62,100,125,208,177, 52, 11, 84,165,105,170,138, 86, 9, 94, 57, 92,242,214,221, 27,252,167, 95, +120,139,255,242,119,191,196, 87,191,240, 26,159,249,248, 29,234, 90, 35,132,160, 15,217,239,122,235, 2, 79,118, 30,239, 35,141, + 81, 28, 52,153, 65, 13,249, 51,234,173, 99,176,142, 16,242,120,172,132,100, 55, 57, 30,238,118,156,237, 34, 85,130,173,141, 56, +239,185,123,208,242, 91,159,127,157,255,225,191,254, 7, 44,239,190,193,191,251,183,255,182, 16,126,179,212, 79, 22, 85,134,136, + 69, 87, 94,210,165,196,204, 36,159,252, 15,155, 39, 92,215,125,167, 82,128, 6,151,155,214,113,147,121, 35,118,122,126,113, 14, + 97, 95,208,231,137,230,138,157,156,246,190, 14, 63,201,231,253,199,253,204,156,123,208,212,124,246,213, 91,180,135, 29, 47,156, + 46,233,186, 10, 86,203,172, 90,146,133,113,108, 12,193, 84, 44, 76,197,171,235, 5, 38, 2,133,215, 96, 68, 86,218,220,159, 70, + 46,230,134,196,185, 2,197,143,172,220, 72, 28,123,130,221,226,135,115,154,221, 57,198, 91,222,187,120,200, 71,214,113, 87, 26, +190, 49,140, 28, 33,121,111,178, 4,239,121, 24, 61,223, 26,122,108,178,121, 42,155,250,204,156, 62,223,101,244,110,126,255,243, + 25, 18,158,137, 70,174,202,100,183, 62,134,163, 31,132,194,155, 0, 0, 32, 0, 73, 68, 65, 84, 53, 28,159, 34,143,110,240,169, +197, 9, 55,186,138,155,221,146, 70, 85, 57,176, 76,230, 97,242,194,122,188,245, 68,153, 93, 50,149,128,133,128, 99,157, 67,173, + 84,200, 94, 19,135, 93,102,162, 55, 49, 51,217, 23,193, 99,140,102,165, 27,142, 23, 11,144,146,101, 33,193, 42, 41,104, 85,141, + 72, 80, 87,146, 42, 65,101, 20, 11,165,145, 90,228, 60, 5, 41, 48,117, 62,247,189, 82,140,165, 65,119, 74,176, 77,137,203,222, + 51,197, 68,111, 45, 65,228,186,161, 5, 68, 12, 40,137,170,107, 66, 18, 40,213, 48,197, 64, 37, 5,131,115, 72,165,168,149,193, + 11, 65, 91,213,212, 85,203, 40, 37,169,169,178,203,105, 93,103, 53,146, 49,176, 62,202,223,183, 75,100,187,226,173,122,193,186, + 94,209,180, 29,219,144, 56,238, 58, 90, 33, 16, 73,112, 25, 10,242, 58,175, 52, 68, 78,118, 76, 49, 92, 5, 11, 45,116,150,194, +202, 20, 73, 59,187, 63,136,230,251, 57,165,125,140, 43,169,144,250,124,174, 15, 59, 91, 92, 61,103,155,103, 81, 86, 87,133,141, +111,228,222, 91,106,230,109, 85, 38, 31,128, 46,236,229,199, 74,229,123,165,106,242,179,217, 84, 25,161,240, 49, 63,123, 34,223, + 51,191,152,162, 62,143, 88, 38, 91,243, 37, 32,181, 21, 62,164, 76,134,210, 85, 94,139, 5, 80, 74,224, 99, 68,146,168,171, 6, + 31,236, 85,252,222,228,125,254, 12,133,192,249,156,195, 27, 72,216, 16,104,170, 66, 34,136, 10,211,106, 22, 8,208, 26,149, 18, + 90,230,110, 41, 1, 21,130, 65,100, 73,205, 38,229, 41, 51, 10,153,181,232, 49,224, 93,204,156, 50, 37, 8, 62, 23,251, 33,120, + 92,202,204,236, 24, 35, 99,132, 62,120,250, 24, 72,200,204,240, 14,190, 4, 8,148, 64, 27, 93,244,145,136,124, 97,230,216,200, +196, 62,141, 71,138,167,243, 37,174, 23,247, 90,229,238,114,198,219,102, 59, 80, 37, 11, 73,162,252,172, 86,191, 56, 9,220, 79, +241,245,123,127,231,107,220,122,241, 6,155,203,158,224, 34,218, 24,172,245, 52,139, 54, 91,194,198,136,148, 26,163,107, 86,171, + 21, 74, 74,218,186, 97,189,236,184,115,210,178, 48, 38,135,163,196,196, 16, 34, 46,101,103,169,152, 50,193,173, 81,130,195,133, +230,164, 53, 40,169,136, 66, 32,149, 40, 9,158,217,182,210, 40, 65,109, 4, 38, 69,142,141, 32,200,132, 8,137, 74, 68, 84, 12, + 57,207, 33, 70,106,239,241,201,179,180,129, 42, 37, 86, 62,178,178,129,122, 10, 36, 45,216, 26,201,129, 79,172,133,196,104,193, +163,221, 64,255,193, 5,239,221, 59,103,221, 26, 94, 92,118,124,108,189,160,157, 50, 81,208, 40,137,140, 5, 1,104, 20,214, 58, + 46,118, 19, 39,109,205, 43, 71, 29,111,127,120,201,232, 2,219,205, 72,229, 28,255,201,167,238,242,189,139,158,155, 55,151,252, +222,151,223,228,226,252,146,127,253,103,239,240,192, 79, 60,217,246,120,225,120,235,206, 11,124,254,179,111,242,213, 47,125,146, + 47,127,238, 85, 78,215, 29, 66,230, 93,231,110,242, 92,236, 60,247, 46, 44,151, 59,203,131,139,137,243,222, 18, 98,160,149,176, + 16, 2,227, 97, 59,121, 54,193,211, 79, 62,251,229, 91,207,163,221,196,102,240,172, 42, 73,140,145,135,155,129,179,222, 49, 89, +135,179, 14,225, 60, 10,201,209,170,227, 51,175,223,229,229, 47,124,133,255,251,255,248,215, 57,175,161, 28, 44,210, 95,147,137, + 69,143, 8,165,224, 56,255,163,221,144,174,242, 2,124, 46,252, 70,102, 8, 81,201, 61,153,237, 39, 17,110,175,249, 84, 92, 65, +168,241,167, 40,234, 63,145,246,155,189,215,213,114,193,209, 65, 75,187,234,184,112, 9,173,107,182, 33, 97,141,202,197,113, 54, +172,215,138,187, 77,197, 82, 27, 42,165, 56, 82,134,148, 34, 75, 89,241,176, 31, 80, 82,241,161,183,249,144,181, 3,244,151,240, +248,156,203,243, 39, 12,110,100,229,123,118,195, 37, 38, 78,124,227,236, 35, 30,110,206, 73,211,192,125, 63,177, 19,130,247,188, +231,108,220,113, 47, 10, 30, 57,139,157,118,197, 83, 98,200,126,226,219,146,190,214,247,123, 9,148, 81,121,106, 83, 69, 69, 80, +155, 44,169,171, 91,184,125, 2,135, 43, 56, 92, 67,183, 34, 9,201,177, 50,124,108,181,200, 86,195, 82, 81, 25,147,215,137,214, +211,187, 28,103,172,188,167, 22,146, 78, 42,150,149, 34,166, 68, 39, 18, 49,101,237,183, 77,145,198,123, 52,130,131, 4,147,115, +172,148,230,176, 91, 16,165,164,107, 27, 84,101,168, 84, 38, 58,107,153,155,111, 33, 4,203,202,228,140,117,173,104,164, 70,182, + 21,210, 40, 82, 37,241, 90, 19, 73,104, 33,184, 0, 54, 36,198, 20,185,191,205, 6, 95, 83,185,222, 14,149, 45, 99, 5, 4,109, +202,252,148, 77,196,162,128,139, 24, 72, 66, 99,147, 66, 74, 69,212, 53,171,170,195, 55, 29, 72,141, 93, 28,146,154, 85, 38,149, +181, 11, 88,173,203,212,190, 0,221,241,114,187,228,160,238,216,121,139, 87,154,133,214, 12, 49,224,131,167, 82,146,179,164,114, + 79, 37,184, 82,103,164, 82,156, 59, 37,145,222, 49,140,142, 3, 2,227,197,112,141, 63,146,246, 5,125,230, 89,205, 77,239, 60, +237, 79, 37, 5,212,239, 19, 8,111,221, 57, 96,183, 29,185, 50,194, 87, 50, 15,139,241, 90,252,175,187,214,252, 94, 95, 51, 24, +189,207, 91,160,112, 96, 22, 93,177,204,205,218,251, 95, 92, 81,191,218,131,101, 61,168, 77,138,182,109,104,141, 97, 8,174,176, +210,179, 49,136, 80, 57,116, 37, 38,143,245, 46,203, 39, 84,254,164,146,144,196,148, 99,247,108, 76,164, 36, 72, 82, 17, 98,202, + 19,161, 84,116, 70,210, 8,129, 12, 1, 76,246,240,110,133, 32, 37,129, 18,137,209, 69,108,138, 36, 31,176,193,102,233, 84,200, + 12, 76, 31, 2,155,209, 34,101, 78,104, 27,125,222, 51,217, 16, 17,161,192, 61,209, 35, 82,214,173,167,232,114,184,203,149,193, +198,124, 65,253,222, 9,104,198,153, 99,186,182,159,190,214,149,137,107,197,125,142,168, 20,229,130,151,192,135,156,223, 91, 96, +200,182, 45, 17,128, 41, 67, 53,146, 31,195,120, 44,196, 12,253,243, 64,248, 58,235,111, 77,115,229,189,253,181,255,226, 63, 67, +104,201,246, 98,160,238, 26,148, 86, 8, 33,177,195,132,115, 33,239,193,155,134,227,163, 53, 70, 85,156, 28,175, 57, 62,104,185, +113,220,114,212, 84,104,157,229, 44, 83,204,122,241,236,230, 38, 48,228,130,189,106, 53,141,201,112,116, 16, 18, 49,127,160, 69, + 2, 74, 74,212, 2, 14, 4, 24, 18, 50, 9, 68, 8,136,224,145, 49,178,142,145,161, 36, 61,109,198,128, 72,145, 49, 6,156,207, + 28,137,218,122, 6, 34,113, 81,243,242, 54,240,250, 31, 93,112,120,182, 99,167, 34, 27,231, 9, 49,114,107,107, 57,254,104,200, + 65, 24,117, 69, 28, 29,195,251, 79,232, 14, 52, 71,171,134,203,126,100,107, 3, 90, 8, 30,109, 50, 83,255,243,183, 14,185, 85, + 73,254,224,155,223, 39, 4,203,189,203, 29, 34, 73,150, 46,241,237,203,158,117, 91,241,198,199, 95,230,226,209, 5,183,151, 43, +222,122,233, 22,191,249, 43,159,230, 63,254,205, 55,249,181, 55, 95,224,230,170,131, 36,152,166, 64, 63, 69,156, 13,140,147, 99, +180,129, 20,178, 83,225, 16, 60,126,242, 56,235, 24,156, 37,216,128,247,158, 71,195,196,229,104, 11, 63, 33,225, 98,164,119,142, + 77,111, 73, 2,148,150, 37,250,118, 71,163,225, 80, 42,154,224,233,148,194, 40,133,208,154,151,111,173,248,242,239,124,149,237, +110,199, 15,190,247, 1,194,231, 92,172,235,155,244, 31,245,253,243, 21, 23,215, 38,240,103, 85, 24, 63, 81, 57,119, 45,128,229, + 42,112, 35,253,252, 50,207,217,202,117,177,128,131, 37, 31,191,177, 36,162, 89, 87,154,182,170,232, 42, 73,139, 68,213,134,157, +115,133,160,151,145, 49,175, 21,183,140,226, 86, 85, 51,248,145, 86,106, 82, 10, 36, 60,223,239, 71,150,227,150,203,190,135,205, + 6, 30,239,224,209, 6, 46, 31,227, 54, 61,103,147,229,113,140,124,184, 27,153, 66, 36, 93,108,243, 52,223,181,123,244,161, 50, +153,103,144,138,202, 68,170,252,188,121, 91,224,221, 25,237,112,208, 28, 66,187,132,163,195,188, 46,168,107, 88,175,243,254,125, +181,200,103, 64,215,128, 94,102, 7, 77,211,240,235, 77,131, 17,137,174,170, 8, 49, 15, 66,186,100,109, 92,140, 19, 38,129, 73, + 17, 35, 4, 77,165, 88,215, 21,150, 68,240,145, 74,148,224,197,157,167,213, 2,124,192, 72,168,124,160,173, 27,124,140, 44, 22, + 11, 26,163, 80,218, 96,140,201, 4, 89, 45,105,140, 42,214,177, 53, 85,211, 32,181,193, 52, 21,178,169, 16,198,100, 8, 92,101, +165,209, 89, 12,184,144,232,173,231,113, 8,236, 92,150, 59, 63,112, 14,139, 32, 9,149,179, 61,100,102,187,123, 33,139,195,181, +160, 23,134, 90, 72, 62,112,158,195,170, 35,153,154, 74, 43,164, 89, 80,235,134,180, 56, 96, 68, 33,164, 38, 84, 93,254,108,139, +179, 31, 72,100,221,240,153,170, 34, 36, 56,104,187, 43, 41,172, 18,130,133,105, 48, 82,224,189, 99, 19, 11,193,115,174,238,222, +194,228,112,211, 68,232, 51,129,111, 58,223,228, 85,211, 60,160,165,107, 3,109,145, 86,103,114,231,108, 21,158,246,202, 13, 55, +101,116,119,242,248, 85,151,249, 72,115,162, 91, 44,240,123,242,123,191, 16,165,158, 94, 73,205, 69,221, 22,146,156, 42,197,104, +134,252,117,169, 3,222,255,130,139,250, 92,204, 38, 11, 50, 49,104,141,151, 2, 31, 66, 86, 10, 72, 67, 72,158,209,251, 60,173, +120, 95, 82,180,114, 34, 90, 18,185,152,251,152,161,216, 84,138,101,144, 32, 16,196, 20,105,180,161, 13, 25, 82,234,148,194, 59, +143, 16,130,152,242, 4,226,125, 44,196, 55,207, 48,141,140, 49,225, 93, 62, 52, 61, 48,186, 9, 37, 2,214,193, 16, 3, 82, 8, +108, 0, 79,160, 18,121,114,151,222,210, 17,209, 8,130,119,212, 9,172,205,136, 66,110, 39, 75,103,230, 66,129,212,195,190,235, +154, 97, 51,113, 45, 88,226,122, 65,159,255, 93,138,124,193,107,185, 15, 25, 80,133,229,232,109,134,142,116,185,168,243,206,164, + 49,207, 88, 10,234,171,154,158, 9, 53,146,159,201,111,182, 91,192,114,149, 15,143,148,192, 77,124,237,247,255, 46,253,206,102, + 21, 64,109,176, 83, 64, 72, 73,240,158,232,114,188,224,173, 27,167, 28, 45, 23, 32, 36,181,210, 28,175, 26,142, 22,217,163, 64, + 75,145, 45,100, 67, 42, 62, 15,146, 74,100, 55,191,202,100,243, 24, 83, 75,100, 97,156,202,236,239,154,247,197, 36, 38,151, 57, + 21,146,132, 73,137,206, 7,142,125, 98, 25, 18,139,201,115, 18, 4, 75, 23,168, 99, 96, 51, 57, 84,130,203,193,131, 11, 12, 17, +132, 79, 28,104,197, 99, 5,175,254,233, 71,164,119, 62, 32, 61,186,100,249,161,101, 57, 70,170, 23, 14,168,180,194,125,240, 17, +219,179,115,158, 92,230, 29,109,244,145,135, 15,119,232,206,224,132,224,114,152, 72, 82,113, 99,221,177,181,158, 15,183, 61,175, + 31, 29,240,205,123, 27, 30, 93, 92,162,128,239,124,248,128, 11,167,121,247,254, 5,231, 54,145,132,224,213, 87,238,240,210, 43, +183,249,213,207,190,202,167, 63,118,147,174,170,152, 92, 96, 24, 3,206,229,149,210,224, 60, 23,125,158,206,157,205, 28,129, 80, +154, 67, 81,228,142,227,232,184,247,100,203,131,221,200,163,126, 98,179,243, 76, 33,100,251,219,152,145, 54,153, 34,206, 5,162, +144,140,219,137,237,110, 96,165, 53,119, 14, 22,172,201,104,198, 52,121, 62, 60,159,184,152, 38, 94,191,181,230,247,127,251,215, +249,222,253, 7,188,253,237,119,178,154,228, 57,178,119,241,203,132,130,174,187,161,205,171,167,249,217,248,121,215, 79, 77,149, +167,178,131,108, 10,115,171,174,185,177,170,168,181,206,121,246, 69, 95, 29, 16, 60,158, 66, 41,232,249,254, 27,164,224, 99,149, +100,231, 29, 85, 76, 12, 33, 16,237,136, 14, 1,227, 7,190,123,185,195, 61,185,132,179,115,216, 60,129, 48,229, 52, 53,173,114, +243, 61, 31,172,162,192,160,155,190,132, 93, 85,249,161, 44,169, 84, 82,107,126,115,177, 98,155, 18, 95,170, 42,156,243, 8,165, +153,250, 77,110,102, 78, 78,120,241,246, 33, 39,183,142,145, 93,205, 96,170, 60,129,181, 85,254,187,148, 44,251,213, 61, 84,155, +164, 66, 41, 56,169, 52, 85,242, 57, 51,193, 77,140, 62,177,115, 3,219,209,103,211, 72,145, 72, 81,176,104,154,220,115,104,129, +141, 89, 11, 48, 12,129,147,165,102,112,145,165,214, 8, 59,161,154, 6, 63, 77, 44,154, 54,123,177, 87, 53, 93,173, 73, 82, 81, + 27,133, 80, 58,171, 91,218, 6,105, 12, 81, 74,218,166, 98,170, 12,162,210,168, 90, 19,106,149,157, 69,203, 78,124, 32, 48, 2, +143,167,137, 9,199,217,148,159, 23, 43, 53,136, 64, 37, 43,134,152,245,239,173, 4, 41, 13,145, 72,171, 20, 59,159, 56, 53,154, + 3,221,208, 72, 69, 83,119, 12, 50,175, 2,164, 54, 28, 40,197, 67, 83,151,122,124,109,178,141,129,207,180, 29, 86, 73, 86, 34, +195,236,139,148,104,234, 58,187,144,138,132, 50, 6, 67,228,195,105, 44,133,215,102, 37,152,117, 89,129,209,143, 48,218, 76, 12, + 29,124, 57,223,217, 75,129,139, 12,143, 68,254,239,178, 52,153,221,236, 47, 47,178,122, 99, 28, 96, 24,192, 91,194, 69,159, 51, + 68, 76,189,223,151,207,158, 10,243,148,159, 10,140, 47,197,222, 6,151, 18,202, 53, 79,234, 85, 65,114,103, 71, 80, 5, 8,245, + 75, 40,234,209, 23,230, 97,222, 27,219,161, 39,182, 13, 90,104,158,216,129, 86,231, 28, 93,102,242, 67,202, 89,233, 46,230,253, +121,150,209,150, 32, 0, 41, 9,178, 28,248, 34,187, 18, 69, 34, 11, 99,184, 41, 5,143, 98,164, 65, 34, 82,202,150,130,228,152, +214,157,181, 88,239,177,206,177,179, 19,194,123,122,239,136, 33, 19,191, 54,118, 32, 18, 11,105, 61, 91, 20,202, 20, 17, 30, 66, +176, 28,214,130,228, 5,135,194,209,137, 72,229, 61,235,152,144,118,202,121, 46,209,102, 70,163, 47,228,136, 57, 96, 32, 81,164, + 10, 51,177, 70,238, 33,120,173,247, 63, 35, 69,134,243,107,147,117,149,226, 26, 4, 32,114, 72, 66,254,115,133, 16, 65,164,132, +126,231, 31,187,154,216,229,190,160, 95, 5,194,252, 12,135,162,187,182,191,219,110, 88,254,230, 87,248,173, 95,253, 20,211, 84, + 26,165, 72, 78,175,139, 9,103, 3,222, 71,186,110,201,205,227, 53,151,151, 3, 50, 9, 42,165, 88,116, 21,149,222, 79, 95,214, +103,216,125, 62,183,179,199,135,162,109,178,212, 76, 23,159, 1,163,115,122, 91, 61,183, 40, 9,132, 72, 84, 36, 84,140, 28, 68, +208, 46,230,136, 99, 23,168,166, 68,114,158,122, 12,172,166,200, 98,242, 76,187, 9, 61, 56, 6,231, 25, 1, 55, 57,110, 28,117, +124,253,157, 71,188,251,253,239,243,231,246,130,182,223,241, 82, 92,113, 28, 87, 28, 76,129,111,159, 63,225,255,217,158,243,225, +176,225,242,114,195, 7, 83,228,206,122,201,147,222, 17,158,244,200, 16,185,148,176,176,158, 79, 28,173, 56,168, 53,105,242,124, +253,124, 71,136,154,203,139, 77,118, 40, 12, 30,107, 61, 47,156,158,114,118,185,161, 94, 53,124,252,238,154, 59,167, 43,214,109, +110,192,108,136, 88, 27,113, 33,146, 68,194, 58,207,118, 59,114,177,181,196, 34,217,105,107,197,232, 34,219, 97, 98, 24, 61, 46, + 70, 38, 27,184,236, 71,250,193, 50,140, 14, 27, 60, 42,102, 88, 82,136, 50, 5,250,148, 85, 28, 49,209,239, 38,166,237,200,170, +173,185,209, 85,244,143,243,251,120,114,185,227, 79,223,190,207,163,135, 27, 38, 41,120,243,238, 17, 95,248,194,103,121,231,236, + 9, 63,248,222,219,136, 57,123, 69,254,255, 80,216,159, 53,140, 17,207,176,238,127,214,194, 62, 79,232,166,206, 26,126,165,161, + 53,220,237,106,148,146, 68, 4, 83,140,217,207, 2, 65,239, 3,103,214,239,137, 76,101,189,117,146, 18,107,145,112,193,179,136, + 14, 25, 61,182,223, 16,237,196, 55, 63,186,128,199,143,114,198,249, 52,238,181,200,170,104,203,231,221,231, 48,230,130,222,111, +178,147, 85, 91,231,102,220, 84,252,206,193, 33,159,172, 58, 34,130,183,180, 66, 39,193,139,109,205,203, 6,206,124,100,168, 5, +111, 28, 29,240,202,241, 33, 90,183, 84,218,240,164,202,137,101, 68,177,255,156,230,231, 95, 23,167, 61, 45, 24, 99,228,118, 76, +172, 68,222,211, 39, 34,163, 29, 56,219, 78, 57, 2,181,236,133,181,202,136,155, 49, 21, 19,226, 42, 64,175,109, 4,155, 62,176, + 48, 18, 93,138,100,180,142,186,174, 8, 74, 32,170, 10, 37, 4, 65,107,164,201, 49,194,149, 81,200, 69,131,172, 12, 65, 27, 82, + 91,227,180,194, 40,137,109, 12, 67,202,205,250,133, 20,108,124,100, 72,145, 71, 62, 49, 88,143, 87,176, 29, 97, 23, 3,151, 66, + 18, 98, 78, 95,211, 66, 80,149,200,237, 24, 19,181, 42,225, 45, 49, 51,172,106, 99,168, 83,162,170, 13,222,122, 78,234,138, 42, +194, 11,181,225, 8,193,155, 50,113, 39, 56, 78,149,100, 45, 5,189,119, 56, 93, 17,195,196, 18, 65, 37, 52,173, 16,140, 34, 81, + 33,139,181,109, 34, 12, 3,223,158,118,244,187,203, 76, 94,180, 54,255, 26,134, 34,207,140,123,185, 89,165,242,112, 61, 7,192, +204, 82,184,201,231, 41,124,217,148, 28, 4,149, 73, 13, 90,149,123, 62,229, 51, 61,204,107,166,144,173,100, 43,246,238,135, 49, +230,154, 50,115, 77,124,220, 35,186, 54, 94, 65,247,121,184, 83,249,204, 15,215,184, 40, 74, 92,237,222,127, 9,147,122,121,129, +174, 64,241,210, 16,140, 98, 23, 45, 70,228,160, 22, 67,246,130, 31,131, 67,201, 66,164, 74, 30, 33,114,196, 94,109, 12,158, 28, +143, 55, 69,135, 20, 2,147,189,152, 56,109, 43,106, 41,217,133,136,241, 33,195,243, 49,129,119,164, 16,233,125,118, 43,147, 68, + 30,122,203,100, 7,156,207,233, 95,147,183, 4, 63,162,133, 96,176, 22,165, 42, 52, 46, 71,112,134,188,244,111,107,133,242,129, + 3,149,243,126,187,224, 57,210,138, 83, 2, 47, 74,201, 82, 6,238,187,140, 44,228, 2, 91,118, 33,178, 92,120,161, 74, 22,178, +216, 67, 52,130, 43,136,249,106, 82,159,245,238,243,142,189, 18,101, 98, 79,217, 34, 51,228,169,248,138, 84, 49,195, 49,110,182, + 69,140,251,162,222,204,122,201, 31, 1, 95, 54,101, 39,167,170,103,124,195, 99,238, 78,167, 1,136,188,240,201, 55,249,213,207, +189,145,185, 5,228,233,220,187,148,239,237,201, 19, 92,228, 96,217, 33,181, 70, 75, 69,215, 85,156, 28,118, 28, 53,154, 69, 49, + 86,240, 62, 50,134,136,247,137, 24, 18,181, 18, 28,180,134, 69,163,203,208,146, 89,234,137, 68, 42, 5, 74, 20, 34,180, 22,130, +138,196, 65, 72, 84, 33, 82,249, 68,116, 30, 19,161,241,137,106,138,132,148, 48, 54, 80, 5,193,194, 69,236,229,128,159, 44,155, +113, 66,251, 64, 60, 90, 48,164,200,159,252,225,215,249,232,222, 35,126, 48,246,124,119,154, 88,250,115, 78, 82, 98,225, 26, 22, +182,231, 27,118,203,219,195,150,209, 59, 90, 37,114,248,207,232, 57,117,137, 35, 99,184,115,216,162,106,201,106,200, 17,195,109, +109,208,222, 99,181,192,138, 6, 59, 12, 60,217,230,164,192,143,127,226, 46,175,188,122,194,205,227, 5,139,218,228, 9, 37, 68, + 38, 23,176, 62,146, 66, 64, 41, 65,112, 41, 31,178, 49,225, 93,206, 60, 88,180,154,182, 49, 89, 46, 84,154, 64,161, 4, 82, 8, +164,204,100, 78,161, 37, 74, 8,142, 14, 91,140,204, 76,246,101, 83,177,236, 12, 74, 72, 46,118,142,237,110, 32, 88,199,199,142, + 86, 52, 66, 50,158,239,104,140,224,219,247, 47,121,251,254, 3,108,121, 61, 30,137,233, 42,190,242,197,207,240,254,163, 39,188, +243,246, 59, 63, 84,208,127,121, 83,250, 51,127,145, 42,178, 80,193,207, 94,216,103,189,122,183,202,240,116, 85, 28,224,148,230, +102, 91,209, 41, 73, 37, 4,145,148, 3,157, 82,226,193,232,185,152, 27,234,170,200,222, 82, 66,198, 68,149, 28,167, 74, 96,199, +137, 46, 38, 6,231,249,223,191,123, 31,206, 31,237,245,199,179,182,127, 38, 23,150,184,103,198, 18,248, 49,108,243,255, 51,148, + 52,186,245, 33,111,173, 79,136,194,240,226,162, 70,167, 72,146,134,166,110, 89,152,196,102,130,117, 85,113, 88, 41,222, 88, 45, + 57,110, 23, 28,106,205, 73,211,112,223, 6,122,202,144, 48, 67,176, 51, 3, 58,132,220, 68, 12, 61,182,239,217,248,158,247, 54, +143, 89,226,120, 50, 90, 54, 46,177, 75, 2, 23,178,140,152, 36,145, 73, 16,164,162, 50, 26, 33, 53, 70, 81,162,172, 5,210, 64, + 35,178, 83,227, 36, 36,161,172,109,186,186, 70,154, 26,154, 26,165, 20, 65, 74,124, 93, 97,171, 12,195, 39,165,241,203, 38,219, + 17, 24,197,164, 21, 35,145, 73, 8, 54, 33, 50, 6,207, 37,137, 15,139,187,231, 35, 18,219, 9, 6, 59,241, 40, 9,100,176,140, + 54,114, 88,235, 98, 50, 37,209, 66,208,201,172, 78, 74, 49,225,129, 70, 40, 86, 82,228,248, 12, 1,134, 44,109,238,164,160, 53, +130, 90, 4,166, 0, 7, 58, 80,197,200,218, 79,220, 82,134,147,232, 89, 0, 55,147,224, 72,100, 23,184,149, 84, 52, 9, 68,242, + 28, 86, 42,167,114,110,206,121, 24, 38,164,247,164,217,131,221, 23,178,104, 40, 59,241,121,205,170,138,110,221, 21, 20,198, 22, +146,105,125, 45, 33,110,142, 37,158, 83,212,196,108, 97,107,138,148, 45,101, 36, 32,165,140,188,136,194,199,210,133,217, 78,225, + 86, 12,197,219,100, 30,228,102, 78,151,143, 25,225, 85, 5, 5, 16,242,169,200,237, 95, 78, 81,191,218,177,205,145,136,249, 67, +177, 90, 48, 17,152,130, 71, 81, 58,187, 16, 73,228,195, 58,196,108, 19,104, 67, 64, 25,195,224, 44, 70, 27, 36,138, 49,120, 42, + 45, 88,104,133,145,154, 24, 2, 90, 40, 38, 63,230, 32,151, 16,232,157,167, 34, 34, 99,226,131,221, 57, 83,244,164, 40,232,221, +142,157,243, 36, 17,168, 35,140,193, 19, 66, 36,122,139, 18,130, 42, 6, 42, 34, 73, 68, 26, 31,104,133,164,177, 19,173,144,172, +132,100,233, 39, 14,148,196, 36,184,237, 35, 15, 35,108, 66,122, 58, 87,189, 47,145,172, 46,114, 69,163,116, 37,206, 79,138,167, + 13,253,231, 29,251, 12, 21, 93,143, 5,156, 97, 60,165,242,133, 27,167,156,210, 21,203,254,125,150,188,204,100,166,166, 2,189, +200, 55,198,243,100,137,186,184,103, 41,145,161,160,107,210,135,103,191,190,242,213,175,240,137, 79,190,140,115, 30,103,195, 21, +146, 49,237, 38,236,232,105,154,138,151,111,157,102, 50,142,209,172,219,134, 27,135, 45,203,198,228,200, 85, 33, 25,125,192,167, + 68,163, 5,198, 72,106, 45,105,180,202, 69,173,120,236,199,226,207, 30, 82, 38,212,205,156, 4,145, 18,186,152,101,132, 24,145, +206,103, 93,108,140,212, 67, 36,141,158, 48, 89,170,222, 35, 54, 22, 51, 68,218,221,132, 25, 6, 46,157,229,116,217,146,110, 29, +240,231,127,241, 54, 15,254,234, 67, 54,187,145, 7, 33,178,182,129,255,115, 24,249, 87,219,135,124,142,137,151,150, 47,241,107, +171, 83,110,121, 71,140,158,101, 63, 34, 71,207,105, 76, 44,235,154, 87, 63,113,135,218,200,236, 53, 52, 6,134, 40, 16,173,161, + 94,183,156, 46, 27,110, 31, 53,188,250,210, 77,236,164, 88, 28, 29,240,242,171,167,188,112, 99,197,113,151, 49,135,221,232,152, +108, 96, 51, 76,108,139,115, 30, 62,102, 4,195, 23, 87, 44, 41, 88, 46, 42,150, 93,195,106, 81,179,236, 42,150,181,193,212, 58, +255,188, 72, 24,163,168,107, 67,221, 24, 14, 15, 90, 94, 56, 94,160,181,198,249,196, 65,171, 81, 82, 18, 4,156,157,109,153,134, +137,197,178,229,215, 94,185,137, 74,129,113,176,140,214,241,205, 7,231,108,199,158,139,237, 37,253,206, 34,162, 33,136,192,139, +183, 14,249,244, 91,111,241,191,253, 47,255, 34, 67,185, 60,237, 33,195, 53,250,200, 47,244, 76,144,215,238,249,171,221,100,250, +233, 25,238,186, 16,226, 22, 93, 38, 70, 45,234,188, 62,146, 34,203, 35, 4,156, 84,146, 70,107,180,202, 25, 2,147,119, 60,153, + 60,239, 88,155,243,176, 67,200,242, 84, 37,192, 59, 46,173,229,174,145,220,219,245, 40,231,248,112,179,229, 59,143, 47,185, 56, +219,228, 61,167, 20,185,160, 63,203, 25,240, 62, 79,116, 67,159,201,110,206,239,223, 99,183,132,163, 19, 42,165,121,171,109,144, + 85, 69, 72,134,182, 85, 76, 46,241,104,242,116, 74,208, 39,184, 89, 25,142,234, 26, 41,178,198,220,199,192,221,166,226,219,219, +205,222,247, 34,148,215,221, 15, 25,254,223,141,249,239,222,245,236,166, 29,231,214,241, 97,138, 60,118, 22,155, 4, 74, 42,148, +144, 24,165, 72, 49,161,148, 65, 10,205,132,160, 85, 50, 7,181,104,197, 20, 35,203, 90,226, 35,180,181,102,244,129,182, 50, 36, +153,243, 43,188,148, 8,173, 24,148,194,214, 6,140,194,105,201, 84, 12,166,166, 36,178,126,187,220,179, 81, 42, 70,145,232, 37, +156, 91,201, 35,151,232, 93, 96,227, 19,187,157,101, 20,137, 29, 2,239, 45, 42,122,106,153,153,226, 41, 38,100,242, 36,165, 72, + 33, 34,136, 36,231,137, 49, 81, 37, 79, 10,137,174,201,180,254,101,107, 48,209,161, 91,141, 8, 1,165, 36, 43, 63, 50,197,136, + 9, 14, 41, 43, 12, 35, 11, 17,208, 41, 33, 9, 24,169, 57, 81,137, 24, 45,210, 91,214,149,198,184,137,237,238, 17,219, 97,226, +141,174,226, 52,194,199, 14, 22, 52, 82,179, 90,180,152,186,161,151,197, 9,116,206, 68,143,177, 16,158, 51, 7, 33, 59,195,145, +207,254,144,138,107, 99,249,185,121,186,118,110, 47,225,148,101,152,107,187, 2,223,135, 18,215,170,247,205,102,136,185, 89,104, +179,185, 87,110,234,102, 20,188,172,122,221,236,198, 88, 76,118,230,181,112,226,151, 88,212,103,239, 92,101, 50,100,165, 51, 29, + 63, 33,136, 90,177, 11, 57, 33,104,231, 45,187,224,168, 11,148, 97, 99,200, 19, 11, 96,180, 33,164, 64, 18,217,110, 84, 8, 67, + 27, 1, 17,104,165,100,240, 83,142,147, 37, 96, 39, 75, 45, 37,113,154,120,108, 71,124,140, 60, 25,119,132, 24, 8, 62, 18,131, +163, 70, 50,133, 60, 41,117, 66,144,130, 43, 68, 45, 80,193, 97, 66,164,142,158, 54,122,140,144,116,222, 35,162,163, 81,138, 38, + 70, 66,138, 52, 74,241, 58, 9, 47, 2,247, 41,172, 69,235,179, 67,148,203,157,255,213,105, 40, 10,185,221, 22, 24,231, 58,185, + 2,114,199, 55,107,117,103, 24,134, 82,208, 99,129,244,187,106,239, 53, 28, 75, 19,225,228,149,124, 1, 89, 18,133, 92,137,250, +123,222, 65, 42,234,124, 19,142, 33,147, 65,126,196,215, 87,190,246,219,220,190,115, 74, 72,137,105,242, 72,173,114,156,234,228, + 73, 17, 94,188,123, 11,211,214,184, 40, 80, 82,114,235,112,193, 65,103,168,180, 70, 25, 93, 44, 99,243,155,175, 5,104,153,173, + 98,141,201, 42, 6, 31, 50,194, 33,201, 33, 43,179, 58, 34,250, 76,120,147, 33,171, 34,164, 15, 40,159,144, 62, 34, 99, 36,217, + 64,216, 58, 98, 63,145, 98, 36, 61,238, 81,151, 35,141, 75,212, 83,192,244, 61, 43,165, 56,190,125,204,187,222,243,207,255,213, + 31, 82, 77,129,197, 24, 24,183,150,205, 54,176, 14,137,175, 4,205,215,197,200,203,227, 64,167, 43,110, 45, 78,120,109,117,204, +189,221, 57,239,143, 27,150, 49, 49, 34, 88, 13, 96,146,100,177,108, 57,124,229, 20, 35,178,150,250, 34,134, 76,222,116, 17,173, + 18, 47,220, 61,228,213, 87,110,241,226,141, 37,181, 82,217, 29,213,121,206, 46, 39, 98,140, 89,122, 86, 24,150, 62,100, 59,219, + 24,178,245,237,162, 49, 28, 29, 52, 44, 23, 13,139,174, 66,203,108,247, 89,107, 81,162, 40,115, 81,151, 5,213,104, 42,195, 65, +219,228,117,145,115,220,174, 43, 86, 81,162,109,228,133, 69,195,127,244,218,109, 62,251,194, 17,211,100,209, 34,113, 57,120,254, +226,131, 71,124,251,163,119,217,108,123,222,184,241, 2,127,247,243,111,178, 17,112,118,177, 99,181,106, 57, 58,232,248,239,254, +254,239,241, 63,255,175,255,226, 74,158,155,126,217,211,250, 92,244,230,102,119,110,116,159,149,193, 61,175,168,107,160,106, 88, + 31,174,160,109, 81,181, 65,181, 53, 65, 23,143,136,178, 82, 58,139,154, 70, 75, 54, 46, 63, 95, 46,122, 38,155,232, 73, 76, 59, +187,223, 80,217,144, 97, 83, 27,248,224,114,224,254,227,129,239,159,143,188,255,228,130,139,203, 93,150,246,201, 50,141,205, 46, +117,206,255,176,253,238, 15,153,232, 40,136,134, 91,183,143,249,237,155,119, 72,186, 35,134,244,255,209,246, 38,191,150,101,215, +153,223,111, 55,167,185,237,235,227, 69,151, 17,217, 49,147, 20, 51, 37,153,106, 76,169, 40, 74,150, 68, 89,178, 74, 50, 92, 5, +215,192,240,200,255,131, 97,120,230,145,231, 5, 15, 12,123, 96, 24,112, 21,108,192, 48,224,129, 97,187, 44,168, 76, 74,114, 73, + 44, 50, 73,145,148, 72, 38,153,109,244,205,235,110,123,206,238, 61,216,251,190,251, 50,197,164, 26,144, 1, 4,162,121,209,188, +119,239, 57,103,237,181,214,247,253, 62, 82, 8, 72,213, 34,165,196, 83,226,160,221,154,221, 90,101,123,175, 20,164,224,169,132, +160, 15,150,153,117,172,186, 46,231,107,172,186,220,157,207,250,172,154, 95,173,243,239, 13,170, 92, 92, 26,133, 9,158,105,219, + 34,145,196,148, 24,212, 77, 22,170, 74,157,199,216, 34, 51, 33,188,208,120, 41, 89,198, 60, 13, 90,117,129,118,160,152,245, 30, +169, 20, 42, 70, 68, 91, 17,139, 69, 25, 9,125,147, 85,233,243, 40, 9, 40,146,172, 48, 73,226,132, 32,216,200, 10, 73, 74, 18, + 39, 83, 78,236, 52,121,245,228,188,103, 21, 96,217, 59,140,144,184, 4,206,121,180, 51,116,206, 82,135, 44, 34,139, 41,230,157, +125,112, 84, 34, 98,173, 5, 34,202, 90,100, 18, 52,210, 81, 37,145, 47, 27,160,138,137, 73, 12, 4,161,168,141,193,120, 75, 74, + 48, 20, 2,153, 28,163, 16,152,232,154, 58, 24,110, 84, 13, 35,183,162, 37, 49,244, 22, 29, 44,202,117,216,110,129, 13,142,137, +132,147,229,138,241,160,166,213, 21,173, 18, 12,181,100, 90, 73,246,154, 58,175,111,154,188, 86,184,188, 78, 55, 40,223,205,179, + 59,149,134,108, 35,100,219,120,215,131,223,194,103, 92,204,117,162,109,242,117, 39, 85,174,143,170, 52,134,178,172, 88, 55, 26, + 10,227,183,129, 93, 27,140,183, 15,219,213,238,230,112, 92, 93, 33,214,241,211, 46,234,148,253,130,208, 37,231, 86,129,177,229, + 96, 35,232,140, 5,157, 71,242,107,219,163,149,198,197,128,172, 52, 34, 9,250,224,137,228, 46,183,213,117, 22,210, 5,207, 88, + 39,150, 41,114, 32, 21,214,152,236, 97, 12,145,181, 51,152,232,209,222,176,182,150, 14,232, 76,199, 88, 8, 6, 74,177,180, 61, +149,212, 52, 66, 32,124,200, 63,166,132,243, 61, 3,149,119, 54, 10,168,131, 99, 15,137, 75, 9, 29, 28, 93,140,244, 62, 49, 70, + 82, 87, 13, 85, 8,236, 9,197,169, 12,204,131,202,111, 84, 42,124, 97,159,182, 34,135, 84,146,220,144,121, 68,158,194,214, 68, +186,185, 24,196,166,187,143, 91,121,189, 16, 91,164,103,218,228, 66,171,242,198, 54,133,153, 93,222,104,177,201,118,239, 63,185, +187,241, 54,139, 62,194,143,143,246,251,226, 31,254, 46, 85,163,233, 58, 71,138,217, 49,176,188, 88, 17, 34,236, 29,238,241,185, +215,111,163,165,198,133,132, 78,146,195,253, 1, 90, 72,132,144, 37,218, 54,223,116,141, 18, 12, 90,141, 86,130,186, 42, 59,249, +144,217,236,214,167,188,103,246,185, 91,143, 5, 42, 35, 67, 64,165,128,176, 30,225,178, 93, 74,184,128, 48,158,212, 57,150,243, + 21,189, 11,120,145, 48,179, 37,118,181, 66,122,136,222, 33,131,103, 52,153, 50,120,233,128,239,124,245,187,124,248,205,135,172, + 83,160, 78, 2, 29, 35, 79, 86,158,207, 10,197, 43, 85,197,211,149,227,105, 88,163,100, 71,131, 96,111,116,192,117, 52,149,183, +124, 79, 4,214,109,195, 9, 9,191, 50,236, 92,159, 34,142,198,132,186, 34,145, 80, 38,176, 91, 41,186,121,199,105,128,107, 7, + 99,148,206, 94,221,139,206,242,236,124,205,247, 63, 60,163,235, 28,107, 27,112, 54, 79, 37, 82,204,135,154, 16, 50, 1,177,173, + 43,166,147,134, 65,157, 15, 68, 66,200,252,241,152, 10,219, 62,146, 95, 21,145, 71,249, 46, 96, 35,216,152,184,247,112, 65,191, + 10, 60,120, 48,227,254,189,103,252,249, 95,189,205, 7,207,206,152, 45, 44, 55,119, 26,246,235,154,163,131, 9, 73, 43,126,238, +238, 17,186,217, 97,247,240, 58,255,209, 47,188,134,214,130,183,159, 93, 32,149,230,217,210,240,221,119, 31,243,243, 47, 93,231, +248,211, 63,195,159,124,249, 43, 31, 37,204,253, 52, 58,245,143,143,225, 55,202,119,119, 69,107, 18,127,140, 10, 94,106,104, 7, + 28,238,143, 24, 13, 90, 68, 91,163,180,194,164,180, 77,136,139,128,204,135,197, 59, 26,166,178,172,209,128,123,157, 35,108,160, + 33,155,233,128,119, 89,125,190, 92,100, 63,113,232,242, 56, 93, 52,185, 59, 55, 54,119, 79,222, 95,153,132,233, 43, 10,228, 43, +157,210,230,254,211, 10, 14,246,184, 51, 29,115,115,239, 0,106,201,163,222,146,170,154,161, 86, 60,178,158, 38, 88,230, 41, 50, + 86, 21, 82, 6,234,148,115, 38, 92, 12,136, 96,185, 88,175,248,206,147,115,152,149,207,107, 54,135,110,145, 5, 87, 33, 22,180, +115, 17,231, 14,244,101,241,181, 34,139, 2,155,170,201,152,101,145,175, 36,165, 42, 66,180, 36, 33, 73, 41,219, 72,173, 7, 71, +202, 49,213, 94,160, 10, 69,173, 71, 35, 43,129, 81,146, 80, 73, 86,165,128,172,125, 78,157, 11, 85, 69, 36, 97,149,190, 4, 9, + 7, 33,233,125,190,175, 29, 69, 35, 66,162, 79,130,245,218, 20,109, 84,192, 90,131,242,142,149, 51,168,232, 16,214,100, 26,104, +138,164,224,209, 41,209,245, 29, 58, 6,170,224,105,132,163, 9, 61, 83, 36, 45, 48,137,121,157, 53, 44,147,189,161,203,147,176, + 16, 28,117, 48, 84,206,101,231, 71, 74,244,174,231, 90,138, 56,187,228, 64,106, 6,206,144, 92, 79,116, 6,172, 69, 4,159, 19, +196,131, 97,119, 48,160, 15, 1, 65, 98,191, 30,208, 5,135,148, 50,195,110,180, 98,160, 21, 39,182,192, 98,184,194, 87, 80,229, +181, 23,101, 18,170, 84,185,126, 82,158,190,202, 82,120, 59,155, 15, 96,155,105,236,166, 16, 55,162, 68,181,214,219, 76, 3, 91, + 82,232, 90,189, 21,202,109,186,243, 77, 96,204,102,220,158,210, 37, 15,109,147, 64,248,211, 45,234,155,229,253,120,148,111,214, + 84,226,239, 66,184, 44,108,193,249, 60,122, 39,209,199,252, 66,166,148,195, 86, 98,138, 40, 52, 81, 36,130, 40,191,142, 17,157, + 18, 85, 8, 44, 82,162,242, 22, 99,122, 68, 74,248,224,136,165,155,122,102,215,244,222, 50,148, 42,239, 52, 67,100,162, 53,222, +247,200, 24, 25, 10, 65, 75, 62, 36, 72, 4, 49,120,170, 24,153, 58, 75,171, 27,156,181,232, 24,169,144,232,178,230, 78, 82, 17, +189,163,115,129, 97, 74,236, 42,197, 66, 9,230,126,227, 83, 44,249,209,193, 21, 53,123,121,179, 93,151, 11,111,111, 74,151,144, +242, 27,211, 86, 57,150,213,199, 45,102,179,173,202,232,165, 46, 73, 61,165,160, 19, 63,234,133,244, 41,243,228,125,252,123,198, +113,234, 79, 20,211,253,218,239,253, 22, 90, 75,124,136, 40, 41,177, 54, 98,123, 75,211,182,220,186,117,192,181,241,136,103,179, + 14, 25, 97,111, 90,177, 55,200, 33, 60, 82,100, 76,175,146,185,131,175,148, 64, 41,145,193, 41, 34,175, 85, 98,140, 5, 50,147, +139,151, 40, 86,142,252,251,249, 59, 33, 16,173, 39,244, 22,187,182,152,165,193,251, 64, 90, 91, 22,243, 62,167,231, 89,143,233, + 12, 23, 93, 15, 50, 50,235, 23,116,193, 51,216, 25, 83,239, 14,185,241,175,254,146,207,215, 53, 39,115,195,227, 51,195, 13, 39, +120,147,138,159, 19,138, 87, 15, 70,204,206,123,206, 26,112,195,134,239,164, 53,207, 87,103, 28, 70,201,167,135,183,249, 25, 53, +228,184, 64,112,118,218, 1,182,179,220,179,150,249,189, 25, 79,223,123,206,243,103,115, 46, 90,201,153, 84,188,122, 56,102,168, + 20,203,165,225,100,217,241,100,222,241,248,249, 34,251,133, 3,152,206,227, 66, 44, 70,137,172, 27, 24, 13, 42,118,199, 3,118, + 39, 45,131,186, 66, 43, 81,120, 70,145,206, 6, 58,235,233, 92, 22,240, 72,160, 77,208,219,128,183,129,197, 69,207,163,179, 37, + 23,179, 5, 15,159, 60,226,237,251,239,115,210,173,161,170,169,135, 19,244,206,136,119,151,150, 71, 1, 78,156,229,157,147, 37, + 43,227, 56,239, 60,198,122, 30, 44, 87, 60, 92, 27,144,130,231,103, 43,238,253,224,125,254,234,237,239,112,178,148,168,225,144, + 55,126,254, 13,190,246,231, 95,253,177,182, 54,241,147, 44,234,155,130, 30,210,214, 1, 10, 63,158, 42, 87,143,184,125,125, 2, +170,197, 87, 21,163,182,165, 45,221,146, 9, 27,145,104, 4, 19,105, 98,228, 88,230,195, 98, 68, 18,149, 96,105, 29,235,116,165, +131, 10, 33,119, 81,253, 42,227,159, 69, 25,159, 59,151,255,157, 13,251, 59,132,143,118,227, 90,110, 39, 3,162,236, 69, 21, 91, + 29, 77,165, 96, 56,230,100,103,135, 32, 43,188, 28, 82, 75,149,137,153, 85,205, 52, 37,116, 59,166,151, 31,150, 0, 0, 32, 0, + 73, 68, 65, 84, 68, 57,203,154,196,131,213,140,212, 45, 25, 36,203,136,132, 89,175,120,251,249, 41,103, 79,207,225,244, 28,204, + 34,143,248,157,223, 38,143,137, 43,150,192,166, 42,124, 11, 73, 40, 73,103, 85, 81,229, 87,178,202, 56,255, 16,208,170,130, 36, +112, 49,101, 16,151, 20, 68, 45, 25,106,133,208, 2, 47, 65, 10, 73,146,130, 46, 9,180, 86,244, 46, 3, 90,214, 17, 86,101, 28, +111, 99, 34,181, 13,222,231,189,242,178, 60, 51,214, 34, 15, 31,215, 49,178, 10, 89, 95,227,124, 94, 69,197,126,133, 11,249,192, +110, 92, 79,109, 13,206, 91,132,144,196,100, 81, 66,162,162,197,251,136,116, 61, 42, 6, 68,232,104,131,167, 1, 92, 48, 76, 19, + 88,179,100, 39,102, 58, 95,244, 22,101,215, 40,179, 38,121,135, 54, 29,149,115, 8,111, 17, 49, 48,241,158,224, 61,123, 82,242, +217,221,107,156, 46,207,105,189,167, 74,130,140,197,202,225,153, 83,221, 32, 82,100, 44, 53,109,193,187,106, 41,177, 49, 80, 41, +137, 11, 1, 37, 36, 59,117,195,233, 98, 85,130,137, 68, 46,210, 87, 69,151, 27,107,241,230,186, 81,133, 74,103,202,179,190,183, + 37,169,176,172, 28,219,122, 27, 10, 22, 92,238,196, 99,216, 10,165, 55,226, 99, 81,158,247,170, 68,105, 27,183, 61, 40,108,198, +239,136,172,143, 82,250,167, 88,212,181,222, 98,237, 98,202,106,208,210,117, 95, 22,187, 75,225,129, 33,149,194,110, 17,180,149, +102,237, 93, 73,118,203,129, 3, 74,128, 8, 14, 79, 22,182, 12,100, 66, 57,139, 41,222,192,133, 91,103, 36,108, 76, 92,248, 14, +235, 3,193, 27,214, 49,112,144,114,172,106, 8,129, 29,161, 72, 49,160,145,168, 80,216,190, 18,140,143,232, 8, 59, 90, 82,187, +144, 69,166, 41,191,245, 41, 4,156,204,187,238, 20, 34,227,186, 98, 46, 19, 58,229, 16,146, 71,193,103, 62,188,247,219, 44,242, + 20, 75,113,247,219,241, 9,105, 11,228, 15, 62,139, 37,172,221, 90, 24, 68, 33, 8,109, 34, 93, 55,227,149, 84, 70,237,227, 97, +126, 29,155, 58,255, 25,235,254,142,120,223,171,133, 60,254,200,194,254,230,239,255, 30,191,240,139,159,166,183,158, 80,110, 72, +211, 89,108,239,184,118,243,144,227,221, 49,141, 84, 44, 59,203,238,168,229, 96,212, 50,104,117, 86,189,139, 92, 8,107, 41,242, +186, 73, 10,116,233, 16,124,200, 5, 93,144, 49,167,174,160, 78, 19, 89, 9, 46, 55, 95, 91,200, 59,162,208, 91,170,181,195,134, + 64,176,185,192, 69,231, 73,189, 39, 25, 71,215, 25,122,219,115, 26, 29,115, 25,121,183, 91, 97,154,138,195, 79,223, 34, 62,152, +209,252,229, 35, 94, 29, 31,240,235,205,136,253,139, 53,225,169,231,200, 75,150, 83,201,122, 92,241,158,247, 40, 37,185, 23, 61, +231,227,134,119,149,224, 66,193,177, 82,140, 85,195,129, 28,178, 47, 43,118, 6, 3,166, 66,193,243, 21,247, 79,231, 92,191,189, +195,139,183,246, 56,184,177,203,145,208, 92,107,107,148, 75,216, 62,219, 35,133, 43, 89,238, 87,248, 17, 66, 10,234, 58,187, 3, +118,198, 3,246, 38, 67,246, 39, 13,131, 90,151,107, 59,255, 29, 23, 2, 49, 6, 66, 74,212, 82,146,124, 98,170, 18, 47,213, 53, + 79,103, 29, 31, 60, 56, 99, 54,155,227,188,229,112,111,196,231, 62,117,147,155,215,142,153, 14,119,217, 29, 78, 72, 69, 93,127, +231, 96,194,106,109,120,126,182,162,209,154, 51, 27, 88,199,196,193,225,152,221,189, 17,200, 12,117,154,159,204, 57,174, 27,246, + 38, 83,122,159,241,161,175,191,242, 2,191,248,239,252, 60, 95,249,202,159,125,100,191,254, 19, 47,232, 87, 21,240,155,164,171, +205, 84,235,111,163,202,141, 6,152,193,132,209,116,196,167,247, 6, 28, 14,106,118,107,205,245, 90, 49, 80,138,147,165,201, 15, + 78,103, 49, 46,146,148,230,104,216, 48, 80,130, 86,100,208,202,194,231, 96,161,188,251,235,243, 67,212,102,209, 25,190, 56, 82, +148,222, 78,202, 54,209,176, 31,103,214,111, 86, 7,170, 20,116, 41,178, 85,174,153,192,141, 99,216, 25,195,100,159,231, 85,205, +141,102, 68, 39, 4,123, 77,205,185,113, 56, 96, 71,193,137,181,248, 24,121,107,121,206,217,226,148, 39,103,231, 60,158,157,242, +214,163, 51,158, 62,124, 2,179,243,188, 46,251, 27,124,138,205, 1,191,220,198, 77,181, 77, 2, 67,208,167,128,144,130, 73, 53, +192,166, 68,163, 20,178, 76, 71, 68,138,136, 24,243, 72, 94, 66,244,130,145,202, 16, 40, 33, 37,169,146,132, 36,137, 74, 98,124, +202, 63,146,105,102, 46, 38, 58, 31, 17, 42, 23,241, 40,243, 10, 37,175,128, 99, 30,173,147, 19,212,164,247,172,124,160,235, 60, +209, 25,146,136,132,110, 13,206,144,130,205, 25,234, 66, 18,162, 45,169,184, 14, 21, 19,214, 27,218, 70, 66,176, 12,136, 4,223, + 83,153, 30,229, 3,209, 59,154, 20,113, 33,128, 55,200,224,136,166, 3,103, 17, 46, 79,236,156,235, 24, 34, 32, 56,132, 16, 57, + 47, 66,192,172, 95,229,116,199,226, 67, 15, 36,148, 80, 40, 18,158, 88, 66, 54, 5, 42,101,105, 70,231, 12, 29,177,120,230, 19, + 54, 6,150,214, 51,105,106, 22,222, 95, 97,244,139,220, 41,111, 28, 36,155,113,249,102,148,190, 17,198,165,194,160,135,237,245, +181,217,207,111,148,242, 87,121,241,226, 74, 81,247, 37, 20,198, 20,198,130,210,249,218,221, 96, 2, 67, 73, 51, 68,129,119, 63, +101,161, 92, 91,129, 87, 48, 29,230,125,238,168,217,226, 80,155,234,114, 92,128, 80,121,212,229,242,233,105,181,238,145, 85,131, +113, 6,161, 42, 70,186,194,186, 30, 17, 35, 50, 37,134, 41, 18, 17,212, 41,208, 71,199,202, 59,148, 80, 24,111, 89, 59,139,137, +145,148, 18,141,212, 76,131,197, 91,199, 80,107,134,192, 50, 6, 14, 85,141, 53,153, 24, 85,107,149,167, 5, 62,160,101, 22,105, +212,193, 51, 78, 20, 14, 61,151, 66, 5, 67,202, 76, 99, 18, 6,232, 82,204,227,254, 74,210,155,136,237,203,205, 31, 93, 17, 76, +168,252,117,171,143,189, 54,118, 51,122, 44, 63, 23,229, 77, 9, 69, 81,155,228,246,230,221, 60,232, 54,252, 71, 41,183,209,126, + 54, 67,117,127, 44,113,174, 41, 40,193,205,195, 74, 21,145, 71, 16, 31, 41,236,191,250,235, 95,224,248,250, 1, 62, 38,250,117, + 30,191, 59,147,245, 12,187, 59, 35,110,237, 78, 74,195,162,105,180,162,106, 84,222, 53, 35,112, 49,146, 82,188,124,206,233,130, +131,141, 41, 96, 93,192,197,108,187,202, 76,130, 13,140, 41, 79, 43, 68,140, 40,145,168, 82, 94, 45, 57,231,145,198,209,185,236, +231,118,214, 97,230, 61,177,239,113,171, 53,157,181,204,214,134,185,237, 89, 24,195,105,176,236,191,120,155,157,207,222,226, 43, +127,254, 13,222,250,139,251, 12,142, 21, 47,220,124,145, 23,118, 26,252,196,240,245, 39, 6, 33, 34,143, 71,112,126, 56,196, 95, +159, 50, 18, 2,150, 6, 81,107,226,193, 49, 15, 14,199,156,141, 43, 6, 71, 35, 26,169,209,109,141, 58, 24, 50,108, 27, 14,238, +236,178,127,123,143,118,210,210,122, 24,161,168,155, 10, 85, 41, 70,114,139,207,140, 49, 96, 67,164, 25, 86, 76,198, 13,215,246, +134,220,220, 27,113,109,119,196,193,116,192,100, 88, 51,110,106,180, 86,249,181, 8,145,152,242,136, 94, 10,201,180,209,236,141, +242,104,252,134,150,200,121,199,255,246,111,190, 75,112,145,122, 48, 96, 50, 30,241,194,241,148, 59,187, 35, 82, 76,188,253,195, + 71, 44,206, 47, 16, 62,112,234, 37,119, 38, 53,235,103, 75, 98, 31,217,213, 21, 55,246,134, 44, 58,207, 98,101,105, 27, 77,191, +178,200, 8,211,225,128,225,112,192,218, 71,108,200,195,162, 81, 91,241,218,171, 55,240,178,229,251,127,253,221,143, 20,242,191, + 79, 65,255,219,254,236,175,254,193,239,242,202,103, 62,203, 7,111,191,253, 9,171,162, 79, 56,164, 14, 91,216,221, 37, 76,134, +252,236,222,152, 73, 83, 19,132,100,164, 4, 74, 73,146, 8, 60,176, 41,143,203,215, 38,251,213,119,106,142,170, 28, 8,178,142, +145, 93,173, 8, 4,158, 47,138,255,184,187, 2, 19, 65,111,221, 35,162, 46,162,164, 79, 56,100, 92,213, 4,184, 50, 5, 31, 76, +144,119,239,114,243,238, 45,210,225, 17,118,178, 83,114,229,107,180,210,153, 1,159, 34,199,117,131, 35,160, 17,168, 20,121,104, +123, 78,251, 25,166,239, 88, 60, 62,229,236,222, 3,220,114, 1,203,213,143,159,190,109,178,224, 55,154,157,186,216,251, 66,118, + 4, 5, 41, 88,121,203, 78,221,162,132, 68,136, 92, 72, 66, 12,104, 85, 19, 69, 98,131,126, 10, 82, 49, 44,135,114,155, 68,110, + 10,149, 32, 59,234, 36, 65,102,124,240,218,102, 17,108, 42,207, 64, 81,236,136,202, 7,188,144,136, 50,117, 77,198,230,224,167, +222,129,239, 73,222, 18, 76,143,138,158, 24,115, 98,156, 19,130,228,123,156,207,137,107,222, 88, 76, 74,232,148, 8,201, 51, 66, +226,125,207, 40, 74,186, 16,169, 69, 34,152, 14,153, 32,218,142, 58,120,162,115,140,200,235,170, 97, 10,196, 4, 67, 85,177,246, +134, 86,230,152, 85, 73, 22,232,170,242,236, 81,100,194,168, 32,139,182,129,156,248,137,192,166,188,231,246,228, 6, 83, 8, 8, + 41, 98, 98,194,246,150, 73,211,240,104,181,162,169, 42,236,198,238, 38, 85, 41,172,113,155, 60, 88, 95, 81,158,214,114, 11,166, +145,106,155,247,177, 57, 52, 74,145,109,145,155,149,173, 40,249, 32, 27,101, 59,229,227,189,223,254, 61, 81,166,224,179, 85,110, + 28,155,186,248,229, 29,136,159,150,250,125, 88,252,122,169,202, 59,131,166,201,113,129, 27,127,173, 42,167, 27,228,149, 19,122, +218, 34, 38,171, 10,107, 28, 70, 10, 86,214, 16,188, 97, 90, 88,215, 3, 9, 42, 9, 38,194,179,136,129, 90, 72,214,193, 99,202, +232,109,217,175,243, 69,137, 64,250,142,118, 35,138, 43, 23,243, 68,192,204,244,140,235, 22, 17, 29,201,123,150,222,103, 7,124, +204, 35,185, 29,157,185,191, 31,190,242, 58,215, 46, 78, 73, 73,226,137,140,145, 88,160, 67, 32, 69,194,186,196, 66,101, 72, 78, + 40,202, 79,187, 25,167, 7,159,187,244,166,222,146,134, 40, 86, 6, 10,216,223, 23, 81,157, 43,132, 58,183, 81, 2,151, 55,126, +227,245, 18, 69,100, 81,169,237, 30,101,179,123,140, 41,119, 8, 27, 59,197,213, 7, 65, 83,127,212, 94, 1,219, 36,162,205,184, +176,124,224,183,254,201, 63,206, 56,221,144,112, 54, 95, 64,147,209, 0,129, 98,111,119,140,150, 10, 37, 21,141, 86, 72, 33, 75, + 87,158,227, 83,157,203,162,176, 90, 73,154, 90,150,162, 14, 62, 70, 58,159,149,236,133,220,139,137,145, 40,178, 47, 85,196,144, + 35,143,197,150,123,109, 66,192, 46, 76, 22, 9,245,142,213,202,176,156, 45, 56,159,175,152,245, 29, 51,103,145, 41, 18,157,101, +109,122, 92, 76,236,190,112,140, 62,222,225,255,253,163,175,113,241,112,201,247,186,142,212,172, 9, 56, 62,115,227, 22,111, 54, +137, 39,120,254,236,241, 26, 63, 55,156,159,175,169, 5, 48,110, 25,197,196, 99,179,160, 11,129,190,213,204,118, 71,156, 54,146, +147,169, 34,222, 30,179,216,169,176,149,162, 54,121,100, 41, 7, 53,205,184,166,110, 52, 35, 89, 49,172, 53,173,146,180, 62, 50, + 33, 49,110,107,166,147,150,107,135, 99,246, 39, 3,246,166, 3, 70,131, 26, 93,108,128, 90,201,178,126,141, 36,159,213,255, 82, + 8, 26,173,153, 12, 42,246,234,138,147,101,199, 35,165,248,242,215, 63, 32,133, 28,172,209,212, 53,195,129,226,217,188,103,185, +116, 12,147,228,116,102,153,205,206,120,180,154, 49, 11,137,111,254,240,251,124,240,236, 62, 39, 23, 39,188,251,240, 62,143, 31, +157, 48,191, 88, 48, 95,204, 57,123,122,206,163,135, 79, 57,125,126,206,197,197,140,231, 39, 39, 44,214, 29, 85,173, 8,174,167, +235, 12, 54, 9, 6,187,215,137,202,242,224,189,123,151, 0, 69,254,158, 69,253, 71,125,223,124,187,191,180,124,240,222, 7,208, +175,255,238, 5, 93,235,220, 1, 31,102,129,220,205,166,166,173, 50,238,116, 32, 37, 90, 87,120,231,240,222, 49, 95,153,188,230, + 27,100,178,216, 65,147,115, 35,234,148,232,125, 96,225,115,126,184, 57, 95,110, 35,135,109,233,188,170, 97,238,218, 69, 41,146, +155, 46,253,147,196,126, 82,228,191, 55,220,129, 23,142,121,243,198, 49,135,211, 67,218,193,136, 51,213,146, 68,158,208,205,234, +150,167, 40,166, 34,113, 18, 35, 67,239, 56,247, 14, 17, 19,111, 89,151, 31,204,125, 15, 23, 11,152,205,126,124, 66,221,230,245, +240, 30,212, 32,127,174, 65,102, 71, 64, 44,234,105, 37, 8,206,211, 14, 90, 66,112,104,169,177,193, 51,168,106, 20,153,236, 25, +188, 65, 11,149,215,103,185, 68, 19,108,160, 86, 50,219,172,109, 66, 40,137,136, 9, 93, 30,105, 61, 80, 33, 72,133, 0, 42, 76, +204,114,158,144, 15, 83, 90,103, 13, 11,189, 39, 57,159, 5,202,102,141,240, 14, 65,200,196, 59, 34,214, 5, 98,200, 17,170, 85, + 57,124,120, 41,192,245, 68,233,169, 19,120,231, 24,162, 89, 70,207,184, 30, 16,189, 67,235, 1,157,235, 25, 75,133,113,150,125, + 41,209,128, 70,160,133, 68,138,204, 37,168,164, 32, 68, 79, 85, 38, 9,163, 36,240, 66,228,175,131, 72, 31, 44, 72,141, 38, 17, + 81,185,112,147,138, 51, 89, 32, 98, 66,165,136,147,153,247,174, 8,244, 33,177,234, 13, 35, 93,115, 70,164, 74,121,122,145, 68, +177,153, 41,181, 85,160, 20, 23, 28,141,206, 98, 55, 41,182, 19, 42, 33, 62,122, 77,109,158,219,151, 93,186,222,142,211, 55,142, + 37, 23,114,189, 8,108,187,247, 80,108,112,107, 91,106, 72,209, 86,249,248, 83, 42,234, 74,231, 34, 30,200,114,125, 84, 62,177, +232,156,129,158,199, 21, 41,183, 8, 66,111, 21,130,177,132,164,152, 34,221, 79, 20,123, 67,222, 95, 91,107,105, 73,104,153, 71, + 64,144, 72, 41,228, 44,246,222,226,163,203, 14, 2, 2,131, 2,132,217, 67, 48,174,114,150,179, 46, 23, 56, 68,124, 25,239,235, + 20,105, 35,204,108,192,133,200, 72,128, 45,121,221,183, 79,159,179, 44,144,148, 81,132, 69,121, 23, 12,130, 25,137,133, 16, 44, +125,190, 32,214, 65,112,238,242, 41,249, 50,150, 53, 94, 21,192,197,210, 89,171,141, 68, 49, 67,248, 83, 17,187, 37,114, 52,235, +102, 36, 35,139,176, 78, 94, 17,207,249, 66,170, 43, 88, 81,124, 25,185,200, 43,116,174,116,133,207,189,177, 91,136, 43, 66, 62, +228,246,128,193,214,162,243,251,255,233, 31, 98,186, 28, 44,225, 92, 32,186,192,238,206, 36,159,193,146,164,109,107, 14,134, 45, +195, 90, 83,215,217,141, 16,203, 80,161,210, 32,146,160,105,178,133, 45,199, 80, 71, 92, 12, 24, 31, 8, 41, 71,168, 38,145,178, +133, 80,230,216,220,232,179, 18, 28, 4,222,121, 92, 8, 8, 31, 57, 95,245, 44,214, 22,103, 29,171,222,240,164,235,120,188, 94, +115, 97,123,214, 9, 92, 37, 56,235, 58,150,214, 16, 43,197,203, 47,189,192,201, 98,205,215,254,215,111, 32, 6,146,186, 18, 52, +119,246,249,186,142, 28, 72,184, 62,217,227,243,215,111,242, 89,147,247,204,223,127,106, 8, 35, 80,141, 98, 60, 25,179,127,112, +204, 75,135,199,188,116,227,144,113,165, 9, 90,114,237,230, 14,211,189, 17,207, 47, 86, 72,227, 72,215,166, 84, 71, 99, 70,147, +134,145, 84, 84, 97, 43,142, 22, 62,162, 67,162,173, 85,254,248,184,165, 29,214, 12,219,154,166, 86,217,238, 87, 28,142, 46,101, +191,120, 12,161,192,167, 4, 77,165,169,106,133, 20,138,243,147,158, 7,167, 11,118,247, 7,156,156,175, 49,103, 11,170,170,230, +151,111,236,241,198,241,148,135, 23, 29, 51, 99,120,116,190,224, 7,247, 63,224,157,179,167, 44,187, 30,223,205,232,215, 38, 15, + 98, 18,132,228,115,183, 20, 12,203,213,138,179,229,140,179,197, 57, 23,171, 57,103,139,115, 78,215, 51,158,207,207,184, 88, 94, +240,222,179, 71, 60, 57,125,198,129, 24,146, 82,228,197,151, 94,230,223,252,201,159,254, 72,251,122,250, 49,133, 94,252, 29,138, + 61,139, 89, 46,156,159, 52,221,251, 81,140,133,241, 4,142,247, 47, 73, 93,183,171, 42, 91,122,145,116, 36,250,190,207,217, 0, +120, 30,117,219, 16,142, 78, 40, 38,141,100,110, 3, 41, 69,154,148,144,214,243,238,179,115, 46, 51, 77, 47,177,155, 50,143,224, +155,122,171, 92, 86,242, 71, 79,193, 54,201, 92, 41,193,104, 10,135,187,220,190,118,147,233,104, 23,163, 52,162, 26, 48,208, 21, + 23,190,116,114,222, 17,180, 98,153,224,209,122,141,171, 26,190,231, 45, 31,244,235,124,162,247,174,196,124,174,243, 14,253,111, +211,199, 84, 58,123,158,147, 7, 74, 38,134, 93,231,102,106,227,190,145, 18, 19,242, 65, 77,132,192,176, 25,210,185, 30,169, 21, + 34, 69, 26, 85,147, 66, 94, 51, 58, 23,114,132,181, 84,185,185,241,145, 86,103,129, 43, 34,195,193,214, 33, 18,123, 75, 16,153, +246,104,215, 46, 11, 92,125, 32,134,132, 36, 18, 58,131, 95,175,243,218,109,221, 33, 66, 79,112,150, 16, 60,193, 58, 2,129,228, + 18,142,172,175, 81, 50, 93, 90, 12,125,112, 89,180,236, 28, 49, 69, 26, 50,113,174, 10, 17,157, 32, 9,141,136, 14,180,162,139, +130,166, 16, 2, 13,130, 70,105,230,209, 83, 41,133, 41, 13, 76, 16,138, 4, 52,222,177,146,154, 58, 88, 92,180, 40,153, 93, 58, + 97,147,213, 65,194,136, 76, 43, 13,100,124,109, 37,242, 33, 65,165,242,185,166, 72, 77,100,105, 29, 61, 25,128,165,180,102, 34, + 37,149,210,140,128,186,174,104,148,206,221,127, 42, 66, 56, 87,158,223,186, 52, 85,233, 10, 54,124,147, 13,162,244, 86, 32,183, +177, 76,166,184,213,157,108,224, 67,186, 8,235, 54, 72,114, 85, 72,114,118, 85,252,244,153,191,207,170,251, 9, 23,245,170,134, +122,152, 11, 77,211,108, 59,197,182,222, 6,202,167, 43,116,164, 13, 98, 79,177, 21,127,197, 77, 23, 26, 47,141,248, 89,168, 16, + 57,146, 9, 85, 41,116,244, 4, 23, 80, 49,226, 98,230,100, 43, 41, 89,118, 75,100, 74,180, 41,177,178,134,155,186,206,187,250, +224,217,211, 53, 34,194,210, 57,166,170,166,143,150,228, 2, 77, 65, 67, 6,231,240,198, 16,146,160, 46,225, 35, 73,194,158,212, +204,125,126, 19,155, 4, 39,197,114, 23,145, 88, 41,104,149,224,153, 79, 44,125,196,169,172, 88, 78,137,220,145, 75,181, 85,178, +167,210, 29, 43,182,156,235,203,184, 74, 93, 10, 58,249,231, 37, 41,232,114, 85,177,185, 24,160, 88,221, 82, 81, 12, 23,177, 81, +239, 33,169,226,111, 47,175,175, 42,212,169, 75,235, 91, 9,153, 73, 42, 95,116,155,220,223, 16,248,204,239,255, 7,124,254,115, +159,230,226,124,133,174, 43,136, 25, 12,147,130, 96,119, 60,100, 52,108,217, 27,182, 28,140, 26,154, 70,149,125,176,192,167,132, +136,100,116, 36, 89, 36,183,233,212,125,204, 16, 26, 98,188, 92,253, 9, 41,168, 68, 14,222,169, 68,217,239, 9,208, 62, 18, 67, +164,235,115, 32,137, 89, 90,170, 69, 71, 88, 25,132,181, 44, 58, 75,111, 45, 74,228,220,251,211,174,103,213,119, 57,132,103,210, +242,194,155, 47,242, 23, 95,121, 11,255,175, 79,216,105,160,185,214,210, 87,160,158,206,249,225,122,205,119,194,146,163, 73,195, +241,235,159,226, 55, 62,253, 38, 95,184, 46, 56, 28, 40,102,149,228,177, 8,132,228, 56,237,215,116, 54, 32,146,162, 70,176,190, +232, 89,156, 46,152, 55, 53,211, 59,135,140,174, 77,208,149, 66, 70, 8,179, 30,177,242,132, 62, 91,212,130, 11, 36, 34,177,146, +184, 70,163, 27,141,174,213, 37, 77, 48, 21,149,127,138, 9,235, 2,179,222,177,234,242,148, 66, 73,137, 82,146,189,241,128,247, +159,102,202,156,112, 6, 85,107,174,239,141,104, 22,145,167,203,158,135,103, 51,254,242,222, 51,158,159, 93, 96,157,167,110, 91, + 22,231,115, 30,159, 95,100,228,104, 74,204,215, 61, 54,122,198, 74,179,182,129, 85,112, 24,239, 49, 49, 11,150, 58,239, 89,245, +249, 64,112, 54, 95,241,131,231, 11,124,223, 19, 19,204, 23, 61,251, 42, 59, 19,170,113,203,151,126,251, 55,248,211, 47,255,233, +223, 40,232,252, 67, 88,241, 31, 47,238, 87, 57,241, 63,142, 25,223, 78,224,230, 33,236,142,178,216,118, 80, 65,128,164, 5, 85, +204, 29,166,113,129,150,200,147,181,229, 91,103,102, 11,136, 41,207,150,147, 36,120,169,202, 99,230,117,103,121,235,225,156,228, + 74,254,244, 38, 17,173, 42, 99,209, 16,202, 90,176, 60,131, 62, 30,125,250,241,157,250,100, 47, 7,172, 92,191,201,231,118,247, +121, 97, 58,229,246,100, 66, 91,124,226,247,205,106,203,151,112, 22,103,123, 80,138,133, 47,241,157, 17, 88,157,230, 46,219,153, +252,255,157, 45, 63, 6,136,250, 4,171,176, 32, 79, 66,243,252, 59, 23,121,155, 69,154, 84,242, 18, 84, 21,148,192,200, 72,240, +185,161, 9,209,163,117,133,148,185,203,148, 34,147,228, 66,240, 52,149, 98,237, 92, 97, 33, 68,214, 38,175,107, 86,189, 37, 57, +143,174, 43, 98,116, 68,227,179,107,207,122,100,136, 8,219, 35, 41, 2, 97,107,137, 46,107,137,172,237, 72, 27, 93,141, 16, 89, + 52,231,109,137,255,149,184,148,133,118,189,207, 59,118,235, 60, 54,250,146,171, 18, 49,174,167, 18,146, 62, 4, 26,145,136, 50, + 35, 93, 91,169,168,165,162,139,158, 29,169, 88,199, 44,108, 91, 69,135,143, 1,169,179,224,109,229, 45,161,106, 72,209, 97,144, + 68, 33,104, 82, 98, 22, 61, 41, 69, 66,140,116,209,229, 41, 79, 10,120, 66, 57,124,230,103,148, 66, 98,163, 69, 36,129,141, 1, +169, 4, 38, 36, 90, 37, 25, 11, 65, 43, 21, 83, 37, 25, 40,137, 21,137,105,147, 51, 60, 76, 42,224,154,250, 74, 33,142, 92,201, + 1,185,146,183, 46, 75,179,235,220,150, 62,154,200,236,252, 65,137, 87,173, 84, 17, 94,151,110, 93,108, 60,242, 64, 23,242,129, + 78,144,163, 92,131, 67,255, 68,133,113,170,201,167,197,205, 56,160, 85,249, 11,219, 20,163,171, 39,242, 90,111,189,217,165,225, + 68,139,162,236, 43, 76,115, 27,144, 56,134, 90,178, 19, 5,115, 11,199, 98,197,168,110, 51, 76,205, 25,164,108,216, 19,154,167, +221,146,157,170,162,179,134,144,224, 72,215,216, 16,153, 8, 24,171,154,174,236, 89, 14,116,205,210, 91,118,208,204,177,172, 67, + 68,133,136, 38, 43, 42,165,246, 44, 13,184, 74,163, 98,226,185,235,144,149,102, 29, 50,225,105, 71, 42,102,228, 83,145, 36,135, + 20, 88, 34,123,173,102,209, 59,162, 86, 89,229, 62,110, 96,105,182,147,139, 80, 96, 49,169,124,157,254,202, 14, 79,149, 31,211, + 21, 79,162, 17, 48,186,178,155,217, 16,235, 98,177, 58,216,176,213,189, 13, 11, 41,206,232,252,111,153,152, 39, 35,148, 92,236, +170,164,106, 73,189,125, 52, 71,113,249,190,189,121,231, 38, 49, 65, 59,108, 16, 90, 98, 93, 32,153,128,115,185, 91, 81,149,204, +160,147,178,247,174,149, 40, 78,164, 44, 56, 49, 62,162,138,201, 89,108,222,234, 50,136,137, 69,176,185,137,154, 23,136,156, 52, +152, 4, 82,230, 49,161,244, 33,171, 86, 59,131,155, 25, 84,111, 11,203,191,104, 79, 66,192, 6, 71,159, 18,125,111,176,206, 32, +108, 32,166,192, 94,219,242,176,115,252,233,187, 15,185,253, 70,197,200, 66, 67, 66,156,172, 56, 57, 26,113,231,229,215, 89,156, + 61,225,191,139, 29, 47,135, 57,191,110, 87, 28, 31,222,230, 75,117,203, 23,206,159,243,131,229,115,238,173, 35, 95, 94, 95,112, + 18, 3, 79, 42,201,207,238, 28, 51,158, 52,168,107, 19,246, 14,247,152, 30,140,144, 74, 98, 66,194, 45, 58,170,149,195,150,117, + 4, 54,167,186, 5, 45,112,149, 36, 21, 26,156, 14, 9,225, 35,158, 72, 40,112,165,232,193,185,196,122, 29, 80, 36, 68,157,201, + 93, 49, 74,222,190,191, 32,185, 72,171, 96, 58,108,121,218,121,236, 78,205, 63,123,105,194,119,204,138,127,241,116,129,143, 62, + 31,168, 26,197,155,159,191,203,247,191,255, 61,238, 61, 95,114,115, 84,241,107,135, 55, 96, 26,249,198,124,206,176,110,217,175, + 7,220,222,191,198,141,233,148,115,111,121,124,126,142,241,134, 85,183,228, 83, 71, 13, 7,163, 29, 46, 86, 75,158,246, 11,246, +116, 67, 45, 34,157, 2, 21, 2,194, 68,190,248, 43,175,241, 95,255, 45, 29,122,250, 17,123,247,159,152, 5,174,109,217,185,123, +141, 52, 26, 35,134, 3,122,173,241, 41, 17,130,227,161, 75,220,174, 61,206, 67,231, 28, 30, 79,146,101,229,197, 71, 57, 16, 17, +248,234,188, 76, 2, 93,159,159, 47,178,192,155,218, 9,248, 46,239,215,171,186, 60, 92, 55,172, 8,121,217,204,255, 77, 21,190, +206, 35,247,107, 59, 48,157, 66, 91,115,176, 59,101, 58, 24, 34,133,228,184,170,232,206,230,249,243, 89,207, 11,167,163,221, 10, +135,165,132,174,227,118, 93,113,214,238,178,182, 43,234,182,194, 74, 9,135, 83,120,210,125,242, 42,162,169,175,156,144,178, 32, + 12,116, 1,159,100,245, 51,115, 67, 14, 68,175, 97,217, 97,125,228, 98,144,223,161,131,225,148, 69,183,196,200,142,189,241, 1, +189, 89,210, 52, 67,132, 23,172, 18,168,186, 97, 57,207,182, 71,173, 43,250,232, 81, 73,210, 69,143,181, 61,131, 74, 99,157,165, + 81, 67,186,213, 18,165, 21,237,176,194,175, 59,162,179, 72,145,240,214, 33,149, 36,164,128, 3,188,181,101, 5,144,175,152,222, + 25,180,200, 90,136,149,235,240,222,145, 80,116,209,160, 82,142, 16,237,172, 97,208,140, 9,101, 84,190, 38,209, 6, 11, 85,139, +148,208, 91,195,245,193,148,179,110,206,158,144,172, 98, 96, 32, 20, 94,128,179, 61, 75,165,217,169, 26, 30,117,107,118,155, 66, +243, 75, 48,147, 2,233, 61, 81,105,188,136,248, 62,215, 0, 71,194,199, 72, 93,215,152,148,178,255, 30,193,146,148,209,204, 74, + 81,167,200, 16,113,169, 37,104,154,124,184, 59,239, 35, 71,117, 13, 82,226,101, 96,169,134, 4,105,179,253,176, 41, 5,217, 95, +205, 89,151, 91,139,166,247, 31, 93,169, 92,118,249, 62, 83, 70, 55,251,246,141,152,122,115,237,106,153, 39,189,227, 97,190,134, +157,253,136, 44,250, 39,243,173, 46,133, 56,216,140, 36,213,117, 25,161,139,143, 65, 25,202,233,164,119,249, 11,118,229,215, 38, + 92, 25, 71,196,178,128,245, 68,217,162,116, 69,178,145, 29,237,104,172,162,247, 29,187,186, 34,106, 65,111, 87, 64, 98, 42, 20, +143, 86,107, 14,116, 22,125,116,166,131, 42, 39, 13,137,166, 98, 32,171,242,224,137, 52, 90,208,123, 71, 29, 35, 78, 64,231,125, + 14,134,145, 18,150,134,117,163,209,192, 89,128,161,208,168, 16,168, 10,157,163,147, 10,161, 21, 9,193, 72, 87,132, 4,159,169, +106, 46, 66,224,212,184,172, 20, 29, 54,249,164, 54,172,179, 26,119,163,162,189,138,105,213, 34, 23,225, 88, 66, 0,130,206,150, +154, 77, 97,151, 41,167, 59,169,226,139,244, 97,235, 93, 44,118,176, 75, 76,108, 36,191,222,182,252,219, 67,189, 45,248,151, 1, + 26,155,255, 75,111, 11,122, 57, 83, 93,187,125,227,242,115,202, 18, 18, 81, 38, 83,249, 66,148, 81, 18,124, 22, 31,110,180, 67, + 66,228, 63,171,149,184, 76,221,173,149,200, 16, 37,178,117,205,167, 88, 2,177,242, 9, 53,164,148,247,237, 72,162,207, 73,122, +193, 6,154,148,149,238,110,237,208,197,121, 96, 0,227, 29,198, 88,214,125,199,172,235,145, 36,132,179, 4,235,145, 36,130,150, + 12,199, 3,190,255,193, 3,150, 95,153,243,149, 99,201,254,169,229,215,247, 26, 94,126, 97,200,226,241,130,123, 23,223,224, 66, +193,162,210,236, 69,248,111,215,107,126,121,239,144,234,180,227,101, 85,243,185,163,215,249,247,142,111,242, 79,102,167,124,227, +102, 67,251,230, 13,142,238,238,229,123,208, 37,116,165, 17, 62,208,135, 60,102, 84, 2,210, 40,147,181, 36, 2,233, 50, 75, 32, +200,124,125, 87,100,155, 86, 21, 34,149,143,216,232,115, 98, 96,217,217,133, 62,226,109,158, 56, 33, 37, 33,230,108,131,211,251, +107,162,244, 60,239, 61,222, 59, 30,159,207,184,251,133, 23,137, 55,119,184,247,214,135, 92,172,151, 8, 1,163,166,229,104,111, +143,221, 81,195,209,222, 17,191,249,233,138,100,214,236, 79, 15, 56,237, 46, 88,167,196,163,231,103, 44,141,231,165,211,231,188, +118,237,144,233,222, 33,203,126,193,186, 55,220,222, 61,224,213,163,235,188,124, 48,226,193,197,138, 47,255,240,175, 88, 44,102, +188,176,183,199,139,251,135,220, 58, 56,228,240,250,148,187,135, 19,254,229,255,244,207,249, 79,254,179,255, 28,212, 0, 49, 26, +195,225,136,116,112,200, 63,190,113,196, 31,175, 86,172,159, 61, 39,157,156, 34,158, 94,128, 89,126,180, 99,223, 57, 34, 29,236, +192,221, 87,152,142, 15,153, 47,158,230,103,195,226, 28,206,230,136,211, 11,146, 89,253,232,226,165, 53,140, 39,164,209,152,235, +147, 17,170, 25,162,129,185,115,124, 24, 18, 67, 25, 89, 88,203,164,146, 84,193,241,212,194,131,133,217, 10,143, 98, 42,211,171, +152,243,202, 77,202,247,150, 47, 72,207,203,123,178, 20,207,166,222,118,237, 27, 56,147,214, 63,218, 68,162, 91, 24,239,194,241, + 97,193,211, 14, 25, 55, 99, 8,142,224, 61, 86, 64,139,100, 32,122, 88, 92,228,117,195,168,133, 33, 48, 57, 6,215,241, 11, 56, +154,233,132,199,243, 57, 71, 85,102, 21, 84,214,242,221, 90, 93,106, 1, 62,241, 91, 40, 48,169,148,242, 93,162, 54, 63, 47, 33, + 80,107,155,153,226,203,242,111, 52, 26,172,193, 84,146,147,144, 88, 37,207,141,122,138,175,107,116,183,160,210, 53,201,174, 24, + 84, 99,122,215,209, 70,143, 80, 21,189, 51,180,117, 3, 66, 50, 95,175, 51, 11, 62,130, 49, 29,109,221, 98,102, 39,212,170, 66, +167,200,234,124, 65, 91, 85, 16, 61, 94,120,208,224,173,199,135,136, 23, 57, 26,123,105, 13,149,140,244, 33,101,107,170,144,120, + 99,208, 2,214, 49,139,102,149,172,177,193, 18,173,103,183, 25,211,187, 53,168,134, 54,145,117, 57,101,135, 46,128, 97, 51,228, +172, 95, 49, 84, 21, 42, 37, 66,232,216,169, 6,244,174, 39,169,154, 67, 41,121,226,179,102,228, 3,179,102, 87, 41,198,213,144, +222,245, 72,221, 16,146,197, 27, 79,163, 21, 3, 33, 24,164, 68,175, 53,203,228,233, 99, 6, 64, 61,245, 57,155,161,119, 33,247, +156, 74, 80,213,154,129, 74,232,242, 30,117, 40,174,143, 91,158,216, 28, 46,165,133,160,209,146,245,160,212,191, 88,220, 80,161, +216,208, 54,220, 17, 95, 66, 88, 16, 91,167,211,149,237,108, 22, 81, 39,104,138, 48,206, 22, 58,233,230, 97,107, 74, 30,251, 16, + 88,235,143,220, 71,250, 39,214,165,235, 42, 95,240,114,131,195, 43,224,251, 13,150, 81, 95, 17,108, 41,149,139,212,166,160,199, +114, 2,217,132,204,199, 50,158, 42,187,136, 42, 70,218, 20, 24, 7, 65,165, 36,131, 24,136, 62, 65,144, 25, 50, 32, 4, 34,244, + 84, 41, 34,131,160, 22, 42,243,199,147, 97, 52,152, 32,172,101,210, 14,153,247,107,122, 60, 45,249,180,219,165,200,210, 5,180, +150,224, 36, 38, 56,168, 36,195, 16, 89, 58,193, 72, 75, 98,202,221,110,160,198, 43, 50,208,161,124,205,193, 39,218,170,198,132, +132,142,240,218,209, 30,223,158,173, 89,251, 8, 85, 81,165,143, 70,208, 25, 96, 8, 39,167,249,141, 33,150,132,182, 43, 29,187, +240,101, 98,225,183,158, 93, 87, 70,246,233,138, 48,103,211,161, 75,181,101,206,203, 2,248, 31,214,249, 71,239,182,135,136,232, + 63, 86,220, 47,211, 92,138,186,210,211, 12, 27, 86,171, 14,129, 32,132,136,148, 18, 93, 85,236,239,141, 57,156,180, 8, 20,139, +165,101,111,218,208,200, 68, 72,130,222,101,194, 94, 45, 36, 82,201,156,208, 86,171, 2,224, 74,248,152, 5,144, 98,227,212, 75, + 9,173, 4,141,148,185,179, 21,121,196,143,150, 44, 66,192, 11,129, 41,125, 94, 21,242,158, 90,250,192,220,121, 22,222,229,235, + 64,128, 23,162,164,210, 38, 26, 33, 57, 24, 79,248, 63,191,254, 13,190,141,135,168,120, 42, 96,231, 73,207,219, 11,135,172, 4, +183,251,196,235,119,134,132, 23,135, 60,141,134, 83, 60,127,254,244, 41,175,190,112, 23,185,127,141,231,131, 49,191,220, 56,210, +221, 99, 62,247, 75,183, 25, 76, 26,164,202,236,233,229,220, 18, 66,192, 46, 45, 62, 69, 42, 93,132, 69, 77,118, 17, 68,178,207, + 55,166,148, 1, 81,229, 44, 38, 67,162,242,137,202,231,151,184,243, 1, 73,202,160, 64, 9, 52, 32, 43,129,247,145,206, 68,158, +252,245, 41, 73,192,169,243,172,141, 35,120,199, 98,214,115,255,225, 25,221,221, 3,228,189, 39, 8,225,144,149, 98,160,106,142, + 71, 53,196,196,181,227, 3, 30, 61,126,192,151,127,240,152,127,181,250, 0,166, 21,105,238,192, 68, 82, 31, 56,101,201,215,213, + 51,196, 72, 80,239, 84, 12,106,193,236, 91,239,103,152, 73,163,152,214, 10,173, 5,183,246,106,174, 13, 70, 8,235,216, 25,213, + 52,195, 10,223,123,126,254,149, 91,136,207,126, 6, 66, 5,147,154, 52,154,240,251,215, 95,228,165,155,251,252,202,179,115,254, +120,176,139, 60, 56,130,151, 61,156, 60, 37, 61,155,195,222, 8, 14,143,224,213,207,209,220,125,145,255,242,103,142,233,164,226, +191, 57, 89,177, 62, 93,192,179, 25,156, 63,207, 66,185,147,247, 51, 94,117,118, 10, 31,220,223, 10,196, 84, 11,215, 15, 17,109, +205,180, 25,114, 52,174,121,190,182,188, 60,104,152, 42, 65,237,123, 4,154,181,113,156, 57,120,104,220,182, 40,199, 84,208,170, + 62,251,207, 29,127,147,162,216,212,249,255,218,216, 65,175, 10,211, 54, 31,251,248, 97,163,169,115, 76,241,222, 46,236,142,203, +122,113, 8, 82,114, 84,122, 20,210,154,189,170,162,119, 61,181, 93,100,117,253,201, 9,248,105,102,212,175, 78,184, 59,222, 71, + 72,201,249,252,156,170,105,153,154,142,211, 4, 66, 68,126,161,213,188, 53, 30,100,219,106,138,159,220,173, 39,147,119,233,212, + 32, 29,196, 10, 82, 93,148,252, 85,214,238,200, 30,150, 5,104, 82, 87,176,232, 8,181,163, 75, 3,238,185, 51,110,178,203,194, + 44, 57, 30,237,230, 46,218, 5, 6,109,131, 15,158,196,146,182, 26,229,144, 19, 20,109,221,210,151,204,119, 85, 85,244,235, 37, + 33,121,146,242,248, 24, 24, 15, 6, 56,211,101,177,172, 86, 88,111, 73, 49,147,229, 36,176,234, 87,232,130, 76,207, 26, 40,240, +193,210,199,136, 45,224,175,144, 34, 43,211,179, 87, 55, 80, 43, 46,130,161,173,134,156, 23, 68,110,171, 5, 93,136, 92, 75, 61, + 67,165, 57,214, 48,168, 26,162, 51,172, 83,228,238, 96,135,123,221,140, 93,221,208, 0,139,224,178, 94, 39, 4,214, 66,225,132, +100,238,214, 52, 74, 65,114,204,141, 5, 33,104,125, 98, 34, 68,225,115, 4, 36,138,152, 2, 39, 33, 49,172, 20,115,227,209,165, + 41,233, 93,224,168, 85, 12,148,102, 21, 34, 73, 43,134, 72, 28,112, 60,168,232,188,192, 9,197, 17,145,199,194, 97,199, 5,243, +109, 77,110, 96,253, 21, 6,131,190, 98,125,107,175, 76,178,117,181,117,100,196,144,175,177, 88, 30,126,151,126,119, 7,163, 42, + 23,253, 72, 78, 40,116, 91, 56,210, 79,102,167, 94,215,249,147,145, 5,111, 23, 74,145,222,200,253, 55, 5,168,100,173, 99,220, + 71, 99, 68, 55,157,251,229,136,126,115,106,206, 6,192,253, 86,115, 80, 73, 6, 82,179,171, 96,164, 52, 62,198, 60,194, 41,151, +119,159,114,186,215,133, 15, 12,180,102,183, 82,132, 16, 9,206,208, 42, 77, 42, 59,197,113, 85,115, 98,214, 52, 73,177, 32, 17, + 83,226,220, 71,162,138, 12, 19,184,152,112,192, 48, 38, 42, 20, 49, 70, 98, 76, 24, 18,170, 4, 14, 36, 37, 49, 82,177,142, 9, + 47,193, 75,208, 40,214,222, 49,173, 43,102, 73,176,211,182, 24, 41,168,218,150,144, 34,114, 48,202, 67, 11,145,133, 51,200, 66, + 18, 74,155, 99,153, 36,135, 9,151,179,150,204, 69, 42,219,221, 74,184,203,134,229,185,121,120, 73,145,145,131, 66,228, 3,148, +139, 91, 27, 68, 42,188,104,121,165,160, 95,198, 18,114,169,156,127,233, 75,191,205,111,254,234, 27, 88,159, 48,198, 17, 93,194, +152,140,214, 77, 81, 48, 29, 15, 81, 82, 34, 81,140, 91,141,143, 57, 64,199,135,236,237, 20, 5,214,162,181,100, 84,201,178, 42, + 74,244, 62,251,211, 33,149, 21,126, 22,183, 84, 50,211, 4, 19,153,190,167,138,237,205, 27,207,197,210,176,234, 45,157,179,156, +116, 29,235, 62, 35,132,141,181,216, 34, 44, 75, 49, 11, 26,155, 16,184,241,210, 29,186,221, 17,255,226,255,250, 43,208,240, 51, + 63,191, 79,115,179,225,161,177,124,127,230, 89,107,248,208, 37,218,169, 98, 48, 81,180,131, 38,187, 37, 4,200, 97,197, 7,222, +242, 78,116,252, 69, 35,153,221, 28,179, 35, 4,235,185,207,228, 80, 23, 48,198,225, 59,139,232, 29, 77,163,169, 43,133,174, 43, +164, 86,164,178, 31,139, 2,108, 74,185, 3,137,153,161,160,108, 96, 16,160, 9, 57, 93, 14, 27,144, 49, 80, 9, 73, 43, 4, 35, +169,104,170,124, 48,248,224,201,140,175,127,235, 67, 22, 11,143,136,137,241,168,193,244,134,139,211, 83,158,127,248,152,250,238, + 33,107, 47,169,147, 38, 73,141,241,134,139,222, 49,190,190, 71, 88,246, 16, 61,223,254,230, 3, 88,120, 68, 35,248,204,157, 29, +222,120,241,128,134,187, 93,191, 0, 0, 32, 0, 73, 68, 65, 84,209,181, 1, 95,248,185, 59,252,230, 47,191,201,235, 71, 67,134, +201, 51,214,130,179,148,168, 43, 73,248, 97,143, 59,247,152, 29,201,201,204,241,108,181,224,162,159, 49,115,142,123,114,194, 55, + 58,199,183, 87,142,112,227, 85, 30,174,122, 24, 76, 65,183,188, 60, 30,209, 74,193,247, 47,230,156,186,132,208, 45,236, 28,194, +120,138, 56,190,142,248,165,223,134, 47,124, 1,174, 95,227,159,222,217,231,119,247,107, 34,130,175,158,172, 89, 93,172,115,129, + 57, 62,128,155, 55, 33,141,225,229,207,242,123,199,183, 16,119,238,114, 54,191, 40,137,107, 35, 24,104,118, 39, 19,142,106,205, +194, 69,142, 42,197, 60,194,142,244, 12, 8,236,198,196,158,150, 28,214,130, 51, 23,232, 72,217,218,149, 34,204,215, 96, 75, 84, +102,252, 17,251,233, 31,103, 1,253,248,199,154, 26,244, 0,142,246,225,230, 81,238,164, 7, 99,168,219,203, 17,248, 69,112, 28, +235,138,107, 42,130,235,168,157,225,251, 39,143,120,244,195, 71, 48, 63,207,247,243,176,134,166,229, 77,145,152, 11, 73, 31, 35, +199,209,115, 46, 20,187,193, 48, 77,145, 69,136,156, 44,139,255,248,147, 44,109,151, 24,209, 2,189,145, 37,135, 23, 85,244, 51, +114, 75, 41, 35, 71, 18,231, 17, 48,224, 3, 73, 38, 2,145,117,200,217,235, 43,219,163,164,166,247,166,208, 53, 45, 90, 10,172, +235, 50, 56, 9, 79,103,123, 20, 2, 19, 12, 34,230, 88, 87, 31, 13,117,221,178, 54, 75, 82,140, 24,223,229,251, 58, 37,124,176, + 56,239,113,201,209, 23,226,219,202, 57, 86,166,195, 16,233, 92,207,154,136, 66,210, 71,207,202, 90, 22, 41, 33,163, 96,229,243, + 24,125, 80, 55,116, 54, 79,122,171, 70,115, 97, 35,149,212,172,146,192,104,205, 68,130, 18, 57,175,189, 18,130,101,140, 28,170, +138, 62,197,156,110,167, 52, 30, 65, 39, 53, 22,232,149, 68,232, 26, 39, 20,125, 10, 56,173, 56, 11,145,186,174,120, 28,139,210, + 93,105,206, 80, 56,169, 17,186,162,139,137, 74,107,100,211, 48, 80, 26, 41, 21, 38,229,120,112,173, 21, 90, 85,212, 85, 69, 82, + 16,189,166,170,242,223, 75, 33,242, 60, 93, 9,241,146, 34, 95, 3,133,160,122, 41,204,220,172, 99, 55,190,245,206, 22,213,113, + 17, 51,167,114, 77, 75, 89, 18,255,202,239,233,162,181, 18, 50,231,131,164,242,140,239,186,159, 80, 81,223, 40,218,235,225,182, +216,140,155, 60, 66,175,171, 92,172,140, 47,157,119, 17,107, 85,165,176, 95, 21, 11,144, 50,174,177,239,243, 39,105,182, 97, 48, +243, 32,120,161,150,140,100, 6, 56, 16, 35,141, 84,244, 49, 20,225, 85,182,152, 61,237, 61, 85,157,199,239, 3, 89, 35,131,207, +158,202,152,199, 55, 67, 37, 88, 57,207,173,175, 62,224,244,246, 20, 68,226,129, 11,104, 33,136, 73, 82, 75, 24,132, 92,164,100, +217,177, 8, 41,177, 41, 49,212,249,112,146,164,196, 39, 65, 7, 24,157,139,157,148, 26, 27, 35, 97, 48,160, 82,217,242,229,128, + 65,173, 17, 49, 50, 26, 12, 88,123,143,108,106, 82, 83,109, 71,131,170,236,182, 85,241, 65, 92, 82, 40,227, 54, 70, 53,168, 60, +177,144,234,146, 35,158,105, 68,122, 27, 52,176, 41,212,155,172, 93, 91,156, 4, 50, 94, 9,136,217,180,255, 27, 47,125,238,102, + 94,121,227, 13,222,124,243, 21,186,222, 98,251,128,119,129,126,109, 25,142, 91,130, 73,212, 77,205,164,174,185,190, 55,160,174, +244,101, 67,180,185, 88, 99, 74,200, 4,149, 18, 52, 58, 99,119, 67, 76, 24,159, 21,199,130, 12,116, 80, 50, 83,230,148,206,244, + 57, 17, 83, 22,168,148,233,140,142,145,100, 60, 43,235,112, 46,176,114,158,182,136, 67,102,166, 99,101, 13, 85,240,212, 33,145, + 20,168, 65,205,141,215, 94,226,249,147,231,124,253,171, 15, 80, 93,226,217, 69,199,252, 81,135,185, 8,224, 18,171,161,132, 93, +201, 91,239,244,252,127,125,199,100,209,241, 90,130,131, 70,243, 43, 14, 62, 53,222,225, 83,215, 14,217,215,146, 7,167,115,190, +118,178, 96,120, 52, 36,106, 56,233, 13,231, 93, 30,169, 78, 7,117, 70,186,214, 21, 82,203,140,218, 20,224, 73, 57, 38,213,101, +145,159,179,249, 33, 90,155,136,238, 29,218,120,164,241, 25,125, 27,161, 65,210,232,138,193,160,162,109, 20,111,157, 44,121,248, +151, 15,243,219,227,160,173, 43, 6,195,138,174,179, 68,227,152, 45, 46,120,244,188, 35, 13,224,173,119,223, 99,237, 12,149,206, +235,152,195,187, 71,188,112, 48,228, 83,135, 59,220,251,171, 31,240,248, 91,115,196,163,200,231,126,238,128,189,241,132,167,231, + 75, 94,216,221,229,230,193,117, 6,205,136,215,175,221,224,223,127,225, 21, 94,220,155,242, 95,253,206, 23,185,117,171,165,211, + 75, 94,191, 62,101,181,178,156, 34,153,254,236,231,208, 59,215,185,254,153, 91,248,113, 11,173,198,116,134, 31,222,123, 8,103, +207,192,116,172,237,130,238,244, 25,223,126,250, 4,218,125,120,241, 53,196,203, 47,193,249,138,223,189,251, 10,191,189, 51, 64, + 41,201,195,247, 30,241,215,127,252,255,176,227,134,252,239,127,242, 53,222,255, 55,127, 4, 15,239,193, 7,223,133, 39, 15,225, +241, 83, 24, 78,248,252,157, 99,110, 29, 31,240, 84,142, 56, 25,142,242, 56, 81, 10, 24,143, 56, 84,154, 86,105,116,130, 69,140, +204,186, 53,187, 10,110, 10,193, 68, 72, 38, 90, 49,214, 26,131,231,241, 34, 67,103,152,247,121,199,216,123, 62,121, 41,254,119, +209, 7,105,216,221,133,221,157, 92,204, 15,246,114,119, 62,154, 22, 43,220,230,123,190,175, 30, 44,206,137,235, 5,179,229,140, +239, 63,123,194,119,190,249,126,222,167, 27,123,249,245,220, 29, 12, 49,192,216,173,184,214,182,188,103, 58, 38, 49,235, 71, 30, + 59,199,190,148,188, 62,150,116, 82,179, 58, 93,125,178, 96, 78,136,210,202,216,252, 99,148,121,194,167,171,252, 60, 73,174,164, +124,153, 92, 68, 76,200, 98,229, 77,100, 44,130, 96, 45, 29,129, 36, 96,105, 59,148,136,184, 20,177,222,210, 59,203,194,245,164, + 20, 48,206, 97,189,197, 38, 71, 76,240,193,249, 35,140,239,233, 76,199,217,242,130, 16, 3,115, 51,167,213, 89, 68, 55, 91,207, +145, 66, 49,239, 23,216, 82,208,151,102,141, 11,129,117,244,172,157,199,166,140,141, 62,247,142,189,186,225,190,143, 84, 90,243, +190,144, 28,212, 53, 78, 10,164,172,216, 27, 15, 89, 38,201,220,123,218,170,166, 71,208, 75, 77, 35, 36,170,174,217,209, 53, 21, + 16,148, 68,145, 88,136, 68,171, 43,140, 82,172, 98,164, 43,137,115, 65, 8,134,237,128,170, 4, 81, 5, 85,179,138,138,132,226, + 89, 72, 28,140, 70, 60,240, 18,161,234,236,203,175, 42,246, 70, 3,246,135, 35,166,163,150, 86, 87, 8,169,233,147, 98, 41, 5, +136,138, 97,219, 18, 85, 77, 18,146, 65,213, 96,138, 5, 41, 74,193, 34, 74,106, 37, 89,167,132,212, 13, 73,203, 44,156,214,242, +138, 56, 83,228,203, 51,165,178,103, 87,185, 94,250, 43,161, 64, 27, 16,205,230,251,165,112,165, 60,215, 71,131,124, 16, 24, 15, +243, 97,116, 58,253, 9,193,103,218, 77,151, 46,183,157,186, 13,249,228, 32,203,130,191, 45,187, 3,185, 41, 74,229, 4, 19,202, +206,221,150, 46, 61, 27, 9,183, 88,198,162,146,191,181,215,112,189, 82,236,169,138, 70, 10,132, 84, 68, 18,163, 74, 97, 98,202, +136,209, 4, 81, 9, 92, 72,200,148,176,214,100, 75, 81,132,206, 90, 70, 74,211,165,196,218, 58,254,249,241,148, 95,208,154, 83, +107,217,169,242,233,110, 82,105, 22, 73,208,200,204, 20, 94, 23,161, 22, 54,135,199, 40,221,208,199, 98, 37,168,170,156,199,142, +196,107, 77,165, 52, 15,173,167,213, 53, 74,231,155,108,169, 51,112, 66, 21, 47,207, 88, 43,218,182, 65, 43,133,241,101,191,151, +194, 21,107, 91,121,253, 54,184,216,164, 41,225,184,133,243,190, 73,228, 17, 91,202, 80, 74,249, 66,216,172, 60, 76, 1,102,184, + 50,206, 55, 87, 64, 5,206,110,109,118, 73, 92, 62, 48,126,237, 55,126,141, 91, 47, 94,231,244,100,133, 53,174, 12, 0, 36,135, +187, 59, 84, 72,170,170, 66, 42,193,241, 94,139, 86, 42,199,224, 74,177, 9,222, 3, 1,109,165,168,107,133,146, 89, 33,103, 67, + 86,150,250, 13,127, 64,230,112, 23,165,179,157, 77, 36, 72, 62, 18,173,203, 29,108,130, 36,242, 65,224, 98,237,104, 98,194,164, +192,220, 24, 22,235,158, 89,103, 50,198, 23, 88,120,143,175, 5,131,189, 29,118,111, 30,241,189, 63,253, 38, 60, 49, 92,219,211, + 60, 63,241,176,220,172, 54,128,219, 45,175,189,113,141,120,183,230,248,238,132,111,181,146,217, 78,195,123,181,230, 94,114, 44, +136,236,118, 61,215,214,142, 55,215,158, 21,137, 46, 6,206,231, 29,170,213, 84,149, 66, 41,197,100, 80,163,155, 10, 93,105,146, +146, 89,140,227, 3,193, 7,156,245,244,107,139, 95,187, 60,233,176, 17,209,123,228,202, 94, 22,117,233, 98,222,183,105, 69,213, +214, 84,163, 6, 89, 73,190,119,190,226,247,133,226, 78,210,188,123,209, 33, 85, 62, 52,121, 27,152, 45, 45,122,103,151,207,238, + 13, 8,195,150,119,238, 61, 99,103,178,195,171, 47,189,198,139,215,110, 48,104, 36, 39,193,243,205,127,253, 45,222,126,126,193, +108, 79,193, 99,207,123, 99,203,237,151,174,115,182,187,207,129, 89,242,103,127,241,109,158,199, 14,221,140,152, 12, 71,188,127, +246,156,217,233,156,221,221, 3,238,254,193,239, 48,112, 2, 87, 89,174,255,234, 63,226,181, 95,124,157, 95,249,244,173,156,108, + 54,106, 8,179, 57, 95, 60,108,248, 63,254,232,203,112,255, 1, 60, 63,103, 33, 60,143,134, 7,252,199, 95,252, 18,255,225, 23, +127,142,191,220,157, 98, 3,136,199,207,248,244,160,101, 80,105,212,108,198,219, 31,190, 3,207,239,243,245,175,124,133,103,223, +254,183,240,193,135,112,239,125,184,127, 31,222,125, 7, 30,124, 8,181,231,129,209,160, 42,254,218, 3,178,134,106, 0, 50,128, + 51,204,164, 96, 12,116,193, 97,189,199,132,192,126,138, 52,193, 51,208,154,186, 76,138,130, 49,188,179, 48,136,101,135,176,203, +156, 29, 16,255,129, 5,189,157,192,116, 7,142,142,224,112, 15,118,167, 57, 17,174,170,243,189,169,212,118,146,232,201, 35,254, +245,138,116,118,206,179, 39,167, 60,252,225, 3, 78,159, 62,207,113,198,155, 78,123, 52,229,238,141,125,166,193,177, 55, 28,240, +204, 89,172,115,104, 33, 24, 9,120,102,122,106, 33, 24, 70,199,189,222,179,114, 14, 35,225,165, 95,124,147,139,247,239,127, 66, + 72, 83, 4,217,148,117, 93, 68,196, 10,145, 28,162, 82,136,122,128,232, 3,162,213, 8, 41,179,218, 60, 8,132, 22,136, 68, 62, +100,134,128, 8, 1,239, 3, 54, 58, 58, 18, 43,223, 97,188, 35, 68,143, 18,146, 69,183,196,147, 29, 42,243,245,146,181,239, 49, +222,240,116,181, 98,110, 12, 51,219,241,112,117,206, 78,221,242,108,118, 74, 76, 1, 37, 4, 15,206, 79, 25, 85, 13, 11,211,179, + 48, 29, 11,235,152,185,158,153, 49,184, 36,120,152, 34, 70, 86,236, 53, 19,118,171, 1,175,238, 29,209,161, 57, 26, 14,249,161, +210,200,186,197, 70,152, 69, 65,211,180,120,161, 89, 8,205,209,112,196,181,166,230,238,206, 4, 89, 85,172, 82, 98,183,105, 72, +229,223, 51, 49,160,149, 98, 17, 3, 81,215,204,137, 56,169, 56, 24,142, 25,214, 53,149,168,104,155, 33,171, 24, 89,196,196,185, +174, 24, 75,201, 7,214, 51,210,154,147, 20,177,186,230,184,170, 57,108,235,204, 50,145, 85, 78,252,211,154,251, 33,224, 84,197, +169,170,168, 18, 8,149, 1, 72,125,146, 76,235, 1,231, 36, 90, 33,137, 90, 51,208, 21,161,110,242,189,228, 2, 76, 38,249, 61, +171, 84,169,119, 5, 76,227,227, 86, 72,157,210,150,105,210,151,131,217,198,158,188, 73,120,187,244,176,151,213, 74,219, 20, 65, + 83,147,107,234,112,248, 19, 40,234,149,206,212, 56, 89,216,180,155,136,186, 90,230,177,252, 64,103,146,220,160, 64, 79,122, 83, +186, 75,185,245, 91,127,100,180, 84,124,236,155,110,176,213, 4,155,184,211, 84, 52, 82,102,177,130,148, 52, 72,156,204, 78,176, + 70, 72, 66, 74,172, 66, 98,230, 3, 35, 1, 71,131, 33, 51,231, 88, 24,203, 81, 51,224,162,239,105,165,100,208,182,124, 38,101, + 11,146,214, 21, 54, 5,166,186, 97,149, 18, 90, 43,214, 33, 17, 93, 96,168, 4,201,120,124, 85, 80,130,189,161,105,106,170,166, + 37,166,128, 67, 32,154, 6, 23, 28, 23, 49,113,125,178,203,179,181,161,214, 21, 85, 57, 13,207, 75, 64,140, 75,129, 90,215, 56, +235, 72, 8,140, 42,106, 8, 31,182,150, 62, 45,182,157,123,173,182,142, 0,138,143,189, 45,147,144,226,223,207,227,151,114,112, + 74,177, 0,108,202, 9, 14, 87,224, 4, 27, 95,100, 25,213,139, 34, 79, 23,197,211, 24, 2,191,243,207,254,128,241,116,200,217, +243, 25,198,250, 34, 66,203,118,172,182,105, 24,181, 21,215, 38, 67,246,134, 21, 82, 40, 72,121,114,145, 16,217,171, 94,176,139, +147,129,190,196, 97,251,148,215, 26, 41,165,252, 22, 42, 65,173, 36, 18,121,137,171, 36, 68,116, 17, 68,198, 16, 49, 9, 86,214, +179,232, 44,117, 8,244, 93, 46,232,115,103,241,206,161, 73, 44,100,226, 73,231,105,106,201,241,222, 62,231,167,103,252,203,255, +241, 93,150, 83,120, 98, 34,141,137, 12, 10, 96,139, 62,194, 58, 48,184,213,240,250,193, 46,135, 77, 11, 66,112, 56,157, 48, 29, +143,184,243,234,235,196,227,107, 60,105, 27,222,183,134,209,254, 14,225,238, 62,119,111,239,113,112, 52,101, 48,108, 80, 82,178, + 51,106,208, 77,141,174, 20, 66,231,208, 26,159, 34,174,115,196,149, 37,174, 12,126,222,145,150, 6,107, 60, 51,239, 48,107,143, +180, 17, 21, 2,202,165, 12,179, 16,217,242, 71,163,145,173,102, 69,228,222,202,113,227,133, 9,213,237, 9,103,227,134,106, 82, +227, 67,226,230,235, 59,124,246,223,125,129, 63,252,252, 29, 94,121,237, 24,127,180,135,221,191,193,209, 11,183,248,210,231,110, +241, 75, 47,237,243, 76,104, 46,230, 11,222,249,193, 61,186,241,132,223,250,167,191,129,255,212, 46,253,222, 46,255,253, 43, 47, +240,250,193,148,231,159,122,137,119, 30,126,192, 95,255,223,143,184,111,159,177,236, 79, 89,137,200,159,127,233, 55,105, 63,117, + 11, 53,172,241,175,221,193,188,241, 6,135, 55,247,249,229, 91, 83, 94,155, 84,164,139, 37,255,203,255,240, 63, 51,121,248,136, +201,206, 17,235,135,239,240,224, 7, 79,224,198, 62,124,246,243,252,225,175,254, 10,255,197, 63,186,195,167, 38, 21,223,123,239, +140, 15,254,237, 55,225,222,183,248,225,122, 78, 67,205,215, 58,135, 9, 1, 49,154, 66, 43,243, 14,127,181,248,168,122,222, 89, +196,253,251,136,217, 41, 23,201, 49,244,129,107, 90, 82,251, 14, 84,141, 75, 57,186,249, 52, 70,186, 16,208, 49,210,117, 6,133, +103, 95,101, 65,146,117, 54,243,199,173,227,195,139, 53,110,113,145,149,236, 49,254,195,176,182, 59, 59,176, 59,229,238, 43,183, +217,191,126,157, 52, 26, 97, 54,177,152,226,138,208, 53,138, 18, 4,211,193,249, 2,158,156,192,249, 9,204,231,217,131,255,241, + 17,190,247,204,116,195,206,160,166,149, 10, 3, 88,103,216,197,243, 36, 36,174, 87,154, 41,145,115,107, 57,104, 53,149,245,156, +173, 58,226,176,198,232, 17, 92,156,255,205,102, 93, 74, 68,242, 8,106,132,220, 88, 85,213,150,113, 81,235,252,241,148,138,147, + 74, 34, 76,143,208, 10, 17, 74, 81, 71, 32,156, 71, 24, 79,212,255, 63,105,111,246,107,105,118,158,247,253,214,248, 13,123, 56, +243,169, 83, 85, 93, 93, 93,172,174,158, 56,153, 45,137, 10, 41, 51,178, 33,193,130, 36, 35,145, 97,192,210,133, 12, 36,200,159, +146,155,228, 46,119, 9,144, 32, 72,174,236, 4, 50, 34, 40,242,144, 72,182,168, 33, 20,105, 81,162, 68,145,236,185,217,213, 93, +243,169, 51,236,233,155,214,148,139,245,157, 58, 69,138,162,100,251, 0,141, 70, 55,186,107,239,179,135,245,190,235,125,159,231, +249, 9,252,186,167, 75,145,158,192,178,239, 88,199,129,197,208,240,120,185,100, 29, 7, 78,251, 53,139,211, 5, 67, 18,244,109, + 79,127,182, 33,124,252,132,199,143, 31,211,214, 5,235, 97,224,254, 98,201,188, 40,120,176, 94, 48,196,200,241,224,120,216, 14, +156,119,129,141,146,172,148, 38,152, 10,165, 43,190, 48,219,195,214, 51,122,169,216,155,206,241,170,192,235,130,199, 33, 81, 84, + 53, 66,107, 30,247, 29,167,194,176, 37,224,106, 89,241,210,116, 66,101,242, 69,170, 46, 74, 58,151,215,114, 46, 69, 74, 41, 51, +162, 59,193,134,200,160, 13,115, 99,159, 89,248,148, 49,164,148, 24,132,160, 11, 18,133,224, 81, 74, 76,164, 98,153, 18,103,202, +160, 99,224,192,150,204,170, 10, 63,154,219,210,200,182, 40,147,226,254,152, 26,249, 24,201, 92,192,169,208, 76, 77, 73,212,138, + 90, 91,162, 52,204,109,201, 32, 52, 93, 20, 76,116,137, 85, 2, 35, 21,190, 40, 17, 66,147,252,144,207,237, 62, 60,103, 87, 22, +151,235, 81, 57, 94,116,195,184,254,185, 72,103, 29, 87,121, 25, 42,147,158,241,211,233,250, 49, 42, 88,193,164,248, 17, 66,185, + 11,203, 68,248, 49, 66,141,231, 23,253, 33, 94,230,209,198,209,195,105,213,248,224, 64, 61, 25,159,116, 28,119,228,234,178, 51, + 49,227, 46,193,143, 41,107, 23,202,213, 66,231,241,124,140,208, 12,212,219, 5, 49, 4,202,162,192,142, 35,185,141,136,153,181, +173, 52, 33, 4,124,138,148, 35, 23,253,220,123,226, 38,113,213, 26,122,163,184,223, 52, 92, 43, 13, 78, 66,215, 52,217,163,143, + 68,141,120,155, 53, 1,161, 20, 93,204,106, 72, 10, 69,179,118, 56,171,168,186,142, 6,216,169,106,150, 67,207, 68,102,155,158, +181, 10, 57,120,142,173,196, 72, 75,231, 58,174,204,107,150,173,103, 9,180, 74, 82,203,188,195,201,147, 9,143, 49,138, 74,192, + 12,203, 61, 95,228,219,132, 43, 51,129,169, 24, 45, 11,197,197,222,123, 28,193, 91,147,247, 99,155, 54, 91, 4,149,189,108,128, +226, 56,126,187,236, 0,198, 46,126,180, 21,170,254,185,200,247,113,255,166,100,110, 0,100,238, 0,165, 54,212,165,193,150, 5, +206, 53, 12, 33,210,119, 13,222, 11,246,111, 79,241, 33, 17,197, 40, 16,148,163,109, 45,137,156,229, 78, 78,111,138, 49, 71,196, + 94,172,137,196, 24,177,120, 17, 56, 18,158, 77, 13,199,226, 54,138,221, 32,162,165,192, 27,149,227, 98, 35,249,182,236,125,238, +234,157,207,116, 52, 45,104,122,207,208,123,102,209, 83,171, 18,167,224,183,126,239,109,184, 62, 82,186,250, 72,159, 18,189,146, +212, 34,177,159,224,245,168, 88,252,155,167, 60,184,125, 78,115, 84,115, 62,209,220,222,154,115,104,167,108, 25,139,173, 42,142, +174,237,211, 41,193,244,234, 22,187, 19,203,238,188,162,117,158,224, 19, 58,197,188,222, 82, 57,137, 42,250,172,234,239, 58,143, +223,244,132,243, 6,183,106, 9,231, 93, 14,242, 16,153,210,244, 84,104, 90,155,113,141,170,200,116, 41,161,198, 23,164,243,180, + 70, 50, 36,201, 79,207, 74,254,197,147, 13,167,107,207,237,195, 57,183,141,224,177,145, 92,157, 27, 10,169, 57,237, 60, 79,124, +226,113, 18,232, 74, 17, 62, 94,242,218, 43, 87,216,149,154, 7,149,226, 65,167,249,142, 87, 60, 57, 59,165,251,246,135,184,193, +243,107,175,189,194,230, 51, 91, 20,127,244, 93,222,191,255,152, 95,249,213, 95,230,119,204,255, 67,247,203,255,152,111, 61, 56, + 97,251, 11,159,226, 5, 35, 48,117,102,220,171, 62,112, 48, 51,124,244,212,241,251,159,172, 49,181,160,148,112,171,168,232,154, +158,170,180,188,250,226,171,124,237,168,131,207,253, 4, 92,187,193,111,173,122,190,240,237, 7,124,252,209, 61,190,250,141, 63, + 64,188,245, 33,105,113, 6,243, 45,190,254,218, 9,236, 94,131,249, 30,136, 9,226,232, 54, 76,102,164,191, 0,158,220,191, 44, +182,133, 37,109, 29,192,222,156,157,232, 56,220,156,113, 93, 12, 28, 39,193,188,208,252,222, 96,115,115, 58, 56,218,206,115,191, +235,192, 37, 78, 54, 17, 49,145,188, 94, 22, 20, 50,127,250,223, 93,173,105, 78, 79,114, 24,199, 15,121,226,255, 86, 22,187,194, +230,209,250,209, 21,174, 95, 59, 98, 94, 84,188, 52,219, 70, 73,195, 7,205,146,191,236,154, 49, 23,194,141, 65, 89,125, 46,232, + 79, 22,176,218, 60, 83,254,255,181, 63, 41, 66,223,241,193,202, 48, 0,243,233, 20, 33, 18,203, 0,187, 42,210, 12, 29, 70, 23, +148, 69,129,118, 29,239,133, 0,147,146,229,119, 63,204,254,245,209,238, 36, 46,206, 93,123,121,108,139, 64, 22,202,217, 81, 51, +163,244, 88, 27,100, 22, 46, 63,107, 44, 58, 64, 34,214, 93,118,202,248, 46,143,110,209, 48, 47,225,120, 1,147,154,212,247,184, +145, 50,150,146,200,254,105,171, 25, 78, 61, 41,102, 49,150, 96,153, 85,247,139,243,188,167,247,158,230,207,207,104,182,247, 96, + 94,179,120,188,130,249, 4,140,203, 83,179,114,108, 54,172, 1, 85,242, 70, 57,227,139,135, 7,232, 50, 43,253,159, 58,201,147, + 20, 81,198, 64,211, 82, 87, 51, 30,187, 22,133, 34, 20, 19, 8, 3, 94,104,142, 38,134,165,207, 72, 85, 77, 36,197,108,185,117, + 73, 97,147, 35,197, 64, 45, 37, 70, 74, 66,244, 20, 72,132,200,185,246, 3, 9, 31, 3, 86, 42,246,100,129, 65,240, 81,227,216, + 37, 67,112,172,148,196,224,169,139, 2,157,160,247, 30,173, 84, 94,112, 40, 77,240, 30,161, 5, 97, 32, 51,214,129,119, 82,100, + 27, 48, 90,179,173, 20, 66, 42,100,130, 38,122,118,202, 2,161, 13, 11, 55, 80,150, 59, 48,244, 76,221, 64,168, 21, 46, 57,220, +217, 41,241, 98,172,126,177,197,121,150,221,226,243,100, 85, 91, 88,119, 80,155,108,143, 30, 5,186,153,246, 57,134,142,197,144, +111,235,253,144,255,157, 16, 63,116, 83, 47,198,253,204,133, 2, 42,134, 31,159,237, 30,227, 24,214,160,242,200, 76,219,203,226, + 93,154,252, 38, 22,118,140, 36, 29,201,100, 70, 94,198,221,121,127, 73, 29,187, 16,210,149,227, 23,172, 52,249, 3, 17, 3,141, + 84, 28,213,134,235,117,222,111, 12,249,227,137, 85, 26, 41, 4, 67,140,204,140,101, 17, 2,143,250,129,137, 50,184,193, 83, 90, +133, 1,134,224,113, 62,142, 35, 19, 16,163, 13,162, 77,144,164,200, 65, 41, 49, 82, 22, 5,231,206,161, 98, 96, 45,198,238, 47, + 74,210, 40,244, 48, 73, 32,173, 33,218, 12, 80, 88, 43,141, 87,154,101, 31, 16,202,176,244,145, 82,105, 22,163,173,192, 9, 80, + 34, 97,133, 38,198,200,148,200,126, 97,232, 99,228, 70, 33, 89,123,184, 54, 55, 44,252,184, 87, 49, 69,126,205,211, 5, 8, 96, +228, 61,219, 2, 98,159, 85,193, 50, 93,134,244,168,209,187,142, 24, 51,244,229,101,166,188,240, 16,117, 94,105,164, 52,222,210, + 71,167,129, 22,207,156, 8,255,248,159,254, 23, 12,222,179, 90,118,128, 96,107,107,130,182, 5, 90,105, 68,202,227,187,137, 45, +217,223,158, 80, 24, 3, 40,204, 40,120, 19, 36,196,184, 47, 55, 58,135, 88, 36,192,143, 52, 54, 57, 42,222,165,202,169,124, 82, +228, 36, 57,141, 64,250,128, 28,124, 30, 63,197,113,229, 50, 56, 54,103, 13,195,186,161, 89,119,104, 63, 32, 99, 34,117, 14,239, + 50,208,165,176,134,195,195,109, 78,151, 11,190,246,135, 79, 71,229,232,152,214,151, 98,230,103, 55,129, 69, 72,124, 52, 36, 62, +155, 36,111,244,146, 79,249,196,108,227,136,235, 13,199, 97,197,251,199, 79, 40,148,197,163,168,102, 5, 7, 91, 37,193, 74, 86, +157,227,100,209,177,233, 28, 69, 8,204, 71, 11, 97, 24, 60,125, 63,176, 90, 15, 52,171,142,245,241,154,254,100,195,234,201,138, +205,249,154,184, 25, 80,157, 71,251, 72,223,123,150, 74, 83, 86,134,114, 98, 81,181, 33, 21,138, 88, 72,156, 20, 44,181,226, 79, + 31,119, 60, 58, 93,227,155,129,147,143, 22, 28,157,183, 44,134,196,199,117,193, 50, 65,209, 58,110,198,192, 31, 55,158,150,200, +102, 24,248,179,251,107, 14,118,106,206,159,182,124,175, 13,116,198,112,243,133, 43,188,118,235, 26,119, 23, 3,183,203, 9,127, +119,119,194, 55, 79, 26,126,251,172,229,219, 31, 63, 96,239,214, 45,236,207,254, 44,211,237,146,159,120,229,144,151, 42,205,237, +185,161, 52, 18,221, 5,132, 15,252,230,127,255, 63,243,254,255,254,239, 40,223,124,131, 23,125,196, 8,201,222,203,183, 25, 40, + 57, 57, 94,114, 79,150,184,107, 55, 88, 40,141,120,112, 23,222,251, 14,127,242,173,111,242,239,191,241, 53,120,235, 61,232,187, + 92,112,250, 13,220,191, 15, 67,139,152,150,136,233, 54,162, 40, 97,235, 8,113,116,132, 40, 4, 98,136,136, 43,215, 16, 47,221, +130,163, 35,196,214, 54,251,229,156,219,211, 25, 34, 70, 14, 38, 5,195,232,120, 57,189,136, 80,245, 62, 31, 90,237, 0, 9, 30, +111, 6, 94,180,128,115,188,127,186,224, 27,143, 22, 99,196,178,255, 43,226,178,191,241,198,110, 44, 76,199,189,249,124,202, 11, + 59, 7,124,250,240,136,169, 45, 16, 70, 50, 23,134,123,174,103,240, 29,172,155,204, 49,127,122,158, 85,237,205, 58,143,217,255, + 54, 28,140, 32, 73, 74,115,115,103,134,240,158, 46,146,209,171, 2, 74,109, 9,222,115,104, 60,223,216, 12,132, 16, 97,213,102, + 43, 92,159,109,174,194, 94, 68, 55, 22, 16, 37,162, 48, 8,165,161, 40, 17,133, 69, 76, 42,132, 80,200,210,230,219,120,204,107, + 68,145, 98,182,130, 42,131, 8, 14,169, 12,194,245,185,225, 30,134,252, 29,238, 6,196,102,200, 24,212, 38, 34, 86, 77,190,201, +175, 55,136,193,195,166, 69,156,158,229,191, 55, 61, 98, 61,254,222,189, 3, 53,142,251,117,157,181, 82,166,132,157,233, 24, 40, +118, 33, 16,172,242,164,177,172,184, 53,219,230, 43,123,115, 76, 97,217, 41, 70,124,110, 18, 60,118,129,101, 28, 56, 13,137,117, +200,122,171,228,134,103,231,219,171, 90, 81, 68,129, 45, 50, 53, 51,166,200,150, 86, 68,159, 11,160,140,158, 73,138, 20, 74,178, +114, 61,101, 18, 88,149,107,203, 38, 6, 80, 22, 73,194, 74,131, 78, 33,143,223,125, 36, 42, 69, 76, 89, 56, 56,144,216, 33,178, + 91, 25,132, 72,104,161, 81, 66,228,210,229, 19, 90, 37, 62,232, 29, 33,196, 44, 10,148, 10, 33, 36, 47,149, 37, 9,112, 49, 18, +165,196,142,154, 42,167, 12,171, 20,113, 72,138, 20,145, 9,250,232,169,149,193,248, 1, 69, 98, 75, 68,194,168,119,146, 74,230, +193,181, 20,185, 14,111,150,227,216,113, 76,165, 51,230, 50,247,196,152, 92, 7,244,232,131, 23,227,133,109, 24,158, 43,234, 90, +143, 51,252,231,162, 37,148,248,155, 35, 11,165,204, 99,224,194, 94,142,127, 43,123,201, 12,103,140,109, 92,143,193, 15, 73,102, + 53,230,197,152,232, 34,194, 34,230,113, 27,117, 49, 62, 65,149, 71,105,227,174,254,213,210, 48,173, 42,144, 18, 35, 50, 47,216, +201,156, 57,174,148,166, 13,142, 90,105,254,112,209,210,118,142,235,181,230, 60,120,116,128, 74, 74,218,222,129,200,145,156,143, +219,129, 82,231, 78,103,209, 57,148,209,217,182, 16, 19,149, 82, 56, 4,201, 5,246, 73,156,105, 73,236,122,124,140,172, 72, 20, + 36,144, 26, 95, 85, 56,239, 40,116, 65,135,162, 75,153,108,118, 38,192,167,144,149,222, 33, 3, 51,134, 20, 40,165, 98,187, 16, +180,189,163, 82,145,160, 4,123, 82,240,184,201, 98,191,225,162, 75, 75, 33,107, 20,194, 40,124,209, 58, 31, 86, 23,175,101, 84, +185, 99,144,207, 29, 89, 23,169,115,105, 76,123, 9,227,205, 93,143,111,188, 26, 95,227,174,203, 77,216, 56, 97, 81, 63,249,101, +126,233, 75,159, 97,213,246, 44,158, 46, 73,200,188,186, 81,153,133,190,183, 51,165,180, 5,243, 89,193,188, 42,145,163,210, 84, + 34, 32,141,164, 35,149, 85,168, 86,103,113,136, 72, 41, 7,173,140,141, 68, 26,189,155, 82,200, 49,152, 38,131, 10, 98,200,196, +187, 97,240,153,130,231, 2,237,224, 56, 61,223,176,105, 58,220,224,113, 62,143, 87,205,248,103,201, 4,251,123, 83,138,157, 45, +254,240,123, 31, 51, 91,123,206, 69,204, 13, 99, 28, 87, 16,110, 20,107,142,222,240,247, 8,124,107,136,148, 7,138, 67,171,248, +194, 65,197,203,147, 25,135, 9, 68,116, 68, 31,112, 62,225, 18,172,218,129,229,170,101,209,244,136,224,217, 45, 12,211, 50,231, + 27,120,151,247,231, 67,215,211, 54, 61, 67,219,179, 92, 54, 60, 89, 55, 44,186, 30, 98,196, 36,129, 34,145, 72,180, 49,145,148, +194,100, 3, 63,201, 72, 82,169,112,243,130,149, 86,188, 88,192, 23,107,195,225,142,229,212, 42,238, 46, 7, 78, 14, 39,204, 39, +150,193, 7,134,179,142,173, 39, 75,222, 30, 9, 78,201,193,103,125,224,231,118, 43, 30,118, 29, 77, 10,236,213, 5,213,149, 57, +219,251,115,234,170,230,211, 51,195,235,237,192,187,239,221,229,119, 99,201,245,175,124,133,151,175,237,179,175, 4, 7, 90,112, + 85,195, 47, 76, 5,247,158,174,184,251,135,111,243,245,255,237,255,228,247,255,135,127,203,209, 52, 81, 87,146, 15,255,199,175, + 82,117, 31, 49,125,245, 53,206,128,191, 76, 80, 29,204,120,241,149, 67,142,136,124,251,155,127, 8,127,241, 29,120,114, 31,119, +255, 62,226,116,253, 3, 80,160,252,201,144,136,197, 89,222,111,207, 10,196,214, 17,170, 40,249, 71, 55, 95,224,239,221,121,157, +171,135,215,120,239,251,119, 17, 33,241,147, 71, 59, 28, 23, 91, 28,104,205,142, 18, 24, 99,209, 41,175,116,154,224, 56, 30, 28, +196, 1, 81, 76, 16, 59,219,121,106,178, 92, 34,218,200,251,167, 75,222,122,248,148,251,103, 27, 68,212,136, 43,123,136,214,255, + 64,244,241,143, 23,194,217, 44,130,187,114, 0, 71,251,176,181, 13, 69,137,179, 83,238,204,166, 40,173, 48, 82,161, 8,232,190, +225,254,201, 73, 46,226,143,206, 96,125, 14, 87,175,194,147,167, 63,158,140, 88,215,207,133,130, 36,152, 84, 60,238, 61,135,211, +154, 46, 69, 62, 51,181, 60,241, 16,195,192, 65, 33,121,212,229,203,195,208,182,163,104, 42, 55,240, 66,171,204,105, 40,107, 68, + 85, 32,172,201,227,244,249, 12,153, 4,162,178,200, 20, 17, 69, 46, 92, 66, 8,132,136, 72, 45,145,214, 34, 92, 14, 45, 82, 49, + 34,147,207,134,164, 4, 50, 70,228,186, 65,246,153,167, 32,124, 64,182, 77, 46,238,155, 14,209,118,185,240, 55,185,105, 19, 62, + 32,100, 1, 87,174,114,227,104,135,163,107,123, 28,237,205, 41,107,195, 82, 87,136,178, 64,236, 76, 17, 91,219,168,249,156,106, +107,155, 80, 22,164,162,120,246,154,191, 86, 88, 14, 38, 53, 82, 42,134,144,198,115, 56,129, 75,156,134,200,189,161,203,151, 62, + 55, 18,244,136,144, 2,109,130, 59,181, 65,199,156, 24, 90, 8, 40, 83,196,117, 13,237,208, 97, 99, 64,165,196,208,247,204,132, +160, 0,108,244, 84, 66, 50,144, 24,162,103,199, 88,124, 12, 56, 33,184,219, 39,206,156,199,227, 51,161, 14,232, 7,199, 3,239, +216, 79,145, 93,107, 41,165, 70,166,152, 97, 48, 4,158,180, 3,167,206,225, 66, 32, 41,137, 82,154, 47, 84, 21, 37, 89,255, 85, +168,156,216, 87, 22, 19, 42,169, 24,156, 67,217, 60,105,216,160,152, 25,141,140, 48,179, 53, 41,180, 28,136, 64,109, 21,251,165, +101,207, 74,162, 80,244, 62,145,252,152, 65,146,252,152,210, 55,214, 70,173, 70,173, 90,186,140, 10, 30, 70,132,112, 14,236,135, +162,120,174,168, 95, 40,238,210,115,217, 80, 63,142,109,252,188, 5, 68,141,183,113,165, 47, 11,186, 85,227, 19, 10,121,167, 22, +195,229,168,190, 40,176, 55,174, 19, 86,203, 17, 88,114,193, 88, 38, 63,190, 26, 21,219, 77,151,159, 71, 81,112,125,103, 70,141, + 96, 90,228, 49, 85, 31, 7, 10, 12, 46, 69,172, 22, 88, 20,143,188,195,137,192,227, 33, 98,100,226, 69, 85,176,118,158, 46, 4, +172, 16, 8,149,133, 86, 59,133, 97, 25, 2,141, 11,204,166, 85,142,241, 84,138, 66, 10, 54, 41,209,135, 64, 73,162,213, 2,235, + 3,105,200,183, 92,149, 2, 58, 10,158, 36, 79, 82, 2,165, 13, 31,244, 30, 33, 21, 15,135,158, 94, 41,206,164,204,190, 71,160, + 25,195, 86,124, 76, 28,105,141, 78, 17, 37, 34, 69, 76,148,192, 58, 69,174, 25,197, 11,219, 53,247,125, 34,117, 67, 46,196, 23, + 54,136,139,244, 33,153, 35, 31,145, 41, 23,118,105,242,107, 27,199, 27,119, 26,111,235, 23, 35,246, 36,126, 16,109, 43,121, 6, +202,201, 34,186,252, 33,124,253,211,175,241,147, 95,184,195,211, 39, 27,154, 77,135, 82,138,174,113,184,198,209,181,158,201,180, +230,214,254, 22,187,149,165, 48, 38, 55, 42, 58,119,174, 81, 36,122, 23,241, 49, 97, 20,148, 54,243,212, 99, 74, 12, 99,164,156, + 18,185, 24,199,139, 29,224, 40,242,115, 62,211,152, 92, 12, 52,206,103,158,186,143,244, 93,207,226,188,165, 25, 28, 68,207,224, + 60, 93, 55,228,141,142,200, 1, 14,251,187,219,172,207, 23,220,251,131, 39,168, 82,112,220,197, 60,141,136, 2,218,231,242,236, +159,159,187,238, 42,238, 29, 89,222, 42, 4,195, 78,201, 83, 1,167, 34, 51,220, 85,240, 20,194,160,133,162, 64, 96, 84,166, 85, + 29,108, 85,236,110,215, 20,165,205, 72,202, 68,166,170,141,152,198,204,216,137,156,183, 89,205,155, 4,168,148, 70, 68,120,110, + 98,156,148, 56,161, 8, 42,191, 15,186,208, 24, 37, 41,140, 96, 57,102,227,123,145,216, 19,137, 15,143, 55,188,110, 3,219, 49, +208, 5,136, 66,176, 16, 18,171, 4,125, 76, 92, 73,240,138, 17,184,110,224,107, 70, 49, 49,134, 55, 15, 74, 14, 38, 26, 81, 20, + 76,247,167,124,254,250, 14,179,171, 51,222,155,238,243,237,233, 54,147,189, 9,159,214,137,185, 27, 48,109, 71,179,110,120,122, +182, 70, 60, 94,112,179, 86,184,205,154,117,179,102,209, 4, 78,222, 31, 16,175, 78,248,169,191,115, 19,117,125,143, 43, 47, 31, + 32,164,224,222,247,143,249,232,253, 7,156, 63,124, 72,124,248, 33,203, 7,199,136,126,200, 99,217, 8,130,248, 67,240, 22, 63, +202, 54, 92, 46, 10,201,129,173,249,197, 59, 55,216,169, 11,254,217,160,240,135, 87, 16,187,219, 60,146, 5,164, 64, 37, 13, 83, +109,184, 58, 41, 41, 68,164, 16, 1,209, 59, 62,218,172, 16,218, 34,182,246, 96,114,128,216,158,163,106, 11, 50, 33,154, 11,128, +209,152,203,208,244,192,128,248, 17,103,150,184,208,254, 76, 39, 57,218,245,224, 16, 14,247,178, 77,109,103, 43,219,211,138, 18, +180,166, 87,150, 79, 9,137,148,121,122, 38, 82,226,244,252,152,251, 79, 78,224,238,147, 28,158,227, 60,156,158,253,248,130,190, +189,199,252,179, 47,209, 47, 54,121,202,160, 68,214,121,204, 38, 68,149, 49,167, 31,246, 3, 3,217,122, 26, 19,156,247, 61,125, + 31, 16,198, 16,156, 3, 23, 16, 86,231,255,183,158, 34,234, 18, 68, 68,212,249,134,107, 10,139,157, 90,180, 15,204, 39, 37, 59, + 66, 80, 72,197, 16, 3, 90, 10,132,144,200,110,200, 43,175, 24, 81,147, 2, 57,228,226,167, 0,213, 69, 84,148, 40, 76,182,173, +186,132,114, 9,233, 61, 50,133, 92,244,131, 64, 42,141, 40, 45, 98,178,141,216,218, 98,111, 86,240, 51,219, 21,183,108,193,157, +121, 77, 97, 44,161, 44, 56,223,223,167,158,239,176, 85, 87,236, 84, 53, 62,121,164, 52,227,170, 77,160,132,230,166,209,236, 21, + 38,163,175,147, 64,132, 72,146,146,227,182,227, 27,235, 53, 41, 14,224,218,172, 77,232, 86, 99,124,238, 64, 43, 18, 47, 6,207, +158, 86, 36,223, 81,199,132,107,214, 44,134,142,171, 41,103, 59,216,152, 87,176,132, 76,127, 44, 0,235, 7,180,202,142,149, 97, + 20, 94,159,196,200,159,175,215, 52, 82,147,146,224, 65,223, 81,168,130,227, 24,242, 20,163,239,216,150, 17,225, 29, 49, 56,226, +208,211,224,249,214,217,146,110,252,188, 79,149, 66, 1,187, 66, 81, 26,149,203,154,212, 8, 33, 33,120,130,174,208, 35,108,204, +105,139,141,142,101, 20, 76,132, 64,132,129,153, 45,136,110,160, 84,144,198,122, 87, 40, 40,149,196,106, 73,144,138, 96,116, 22, +204, 73,159,235,231,152,240,137, 24,217, 42, 93, 51, 6,190,141,122, 54,149,243, 74,126,112,252, 30, 46,114,216,185, 76,189,249, + 91, 89, 64,200, 35, 22, 57,222,192, 47, 30, 68,140,129, 41,221,152,166,211,249, 60, 82, 10,145,176, 89,229,142,204,135, 75,114, +155, 27, 50, 39,118,221,193,122,117,169, 6,175, 75,182,167, 5, 59, 69,145, 5,108, 72, 10, 85,176,137, 61, 70, 10,140, 52, 36, + 18,231,222,177, 14,142, 70, 8, 92, 23,209,210, 51, 55,146,117,140, 44,187,241,131,170, 37, 49,101,244,101,101, 77, 30,205, 11, +193, 68,105,150, 49, 32,200, 59,228, 42,101,171, 28, 33, 80,196, 64,138,153,237,221, 39,193, 32,243,248,229, 97,132, 61, 45,249, +190, 11,120, 83,114, 50,244,184,232,113, 73,162,136,180, 49,162,147,224, 64,129,213, 17,145, 2,115, 1, 83,107, 96, 24,152, 75, + 5, 8,206, 18,124,170,182,116, 74,209, 92, 88,253,144, 63, 56, 59,212,242,146,102,119, 33, 46,212, 35,201,229,194,218, 38,198, +155,186,146,185,240, 95, 8,242,146, 24,173, 46,126,132,188,100,242, 67,177,176, 0, 0, 32, 0, 73, 68, 65, 84,171,216,237, 87, + 95,229,149, 87, 94,100,189,238,243,205,184,207,169,105,222, 7,124,151,168, 39, 37,175,223,216,101, 90, 91,172,214, 4,145, 15, +138,156,155, 76, 30,177, 75, 40, 68,246, 62,167,209,206,230, 99, 32,196,244,236,105, 10,153, 15, 49, 59,178,141, 7, 23, 17, 33, + 16,198,176,149,228, 2, 67,231, 56,105, 6, 78,154,158, 85,223,115,188,110,216,120,135, 31, 60, 25,101,223,227,165,100,182,187, +205,253,183,238,145,214,142, 91, 42,115, 1,174, 32, 88,196, 68,120,158, 29,112,193, 55,190, 83,192,142,201,130, 45,163,184,215, + 37, 62,238, 2,107, 19, 88, 9, 40,167, 19,236,124, 11, 61,159,176,189, 93, 51,159,150,204,107,195,254,180,100, 54, 41,209, 70, +227,147,192,187, 72,219, 13,217,187, 30, 99, 14,149, 9,145,206, 69,186,206, 17,124,198, 90,202,152, 50, 40,104,116, 8, 12,128, + 83, 25, 91,151,164, 96,183,233,169, 63, 58, 33,189,245, 9,233,235,239, 48,251,179,143,216,187,191,224,197,162, 96,103,171,226, +228,147, 53,205,163, 5,161,113,116, 10, 82,145,227,104, 95,148,138, 69, 76,252,249,137,167,209,130,182,115,148, 90, 96,218,200, +253,214,243,193,202,241,241,144,248,176,135, 79,148, 33, 86,150, 97, 8,220,238, 59,118,154,158, 97,177,225,227,227,117,182,218, +101,172, 32, 46, 86,172,194,130,122,191,224, 75,191,252, 38,191,254,243,111,242,223,124,254, 53,182,174,110,225,172,102,249,222, + 35, 62,249,224, 33,215, 53,124,110, 82,241,133,249, 54, 47,204, 20,223, 93, 5,104, 55,136,232, 17, 38,219, 19, 47,139,122, 68, +212,183,145,111,126, 30,113,243, 14,226,250,203,136,217, 14, 87,183, 38,204, 69,226, 74, 23,120,176, 92,243,139, 7, 87,184,187, + 94, 66, 72,108,136,188,161, 53, 59, 50, 97, 83,160,242, 30, 25, 91,222, 58, 59, 71,110,214,136,178, 66,216, 2,129, 34, 13, 27, + 68,223, 32,106, 11,123, 51,132,169,248,213,215,142,184,179, 59,225,237,167, 13, 12,221, 95, 29,185, 23, 83,120,225, 42,236, 29, +192,213,189,188,239,221,154,230,208,142,162, 26,225, 40,105,252, 30,121, 30, 56,199, 81,136,152, 52,112,126,246,152,175,126,114, + 31, 30, 62,201,222,247,191,233,146,243, 12,153,236,232,165,133,179,179,124,174,198,139,232,102, 69, 83, 88, 86,206,211, 39,104, +218, 64,167, 18, 27, 31,233,135,192, 6,143, 31, 28,116, 1,107,243,249,144,180, 65, 16, 80, 42,239,165,139, 82, 19, 29, 28, 78, +205,232, 26, 82,185,200,133,200,220, 42,218,148,115, 33,235, 81,232,162,146, 66,181, 29, 42, 73,180, 11,104,105,208, 4,246,109, +193, 63, 60,156,241,230, 94,205, 11,181,229,227, 38,162, 2,168,120, 97,213, 53, 72, 99, 17,214, 32,117,133,212,185,153,248,233, +173,130, 29, 83, 80,105,205, 34, 38,116,105,169,103,115, 30, 71,129,214, 37,133,204,194,229, 76, 18, 21,244,126, 0,105, 72,113, + 96, 11,184, 94, 20, 8, 55, 80, 11, 73,232, 91, 78,219,134,223, 61, 57,165, 27,214, 57,133,175, 89,193,226, 41,180,163,173,111, +232, 32,244,152,232,217, 52, 27,186,161,165,239,214, 12, 67,199, 86,191, 70,186,128, 13,137,105,200, 23,132, 42, 9,118,132,196, + 39, 48, 33,210,251,142,132,228, 81,240,172,147,224,173,229, 26,107,167, 36,223,147,144,212,202,176,246, 29,219, 74,179,118,142, +208,110,104, 86, 13,222, 53, 4,153,120,178, 94,114,127,221,177, 28, 28,173,115, 36, 18,221,208, 51, 16,216, 54, 6, 43, 50,251, +194,146,176, 66,146,180, 33, 6,207, 41,146,227, 48, 48, 17, 32,117,137, 26, 28,115, 35,144,193, 67,215, 83, 88, 75,240, 45,117, + 2,111, 20,201, 71, 42,149, 47,212,165, 21,153,211, 82,216,231, 44,201, 2,250,238,178,102,106,149,195,134, 24, 51, 11, 98, 78, +116,253,171,234,247, 24, 47, 63,132,127, 93, 1,151,250, 7, 49,159, 66, 92, 42,241, 34,151, 66,185, 11,216,251,133, 71,218,218, +203, 28, 91,247, 67,143,225, 70, 41,127, 24,159,112,235,114,178, 82, 85, 66, 93, 82,138,200, 81, 97,152,154, 18,129,100, 21, 28, + 83, 93, 18,162,160, 79, 16, 68,192, 10, 88,184,200, 39,141,231, 90, 37, 25, 66,224, 44, 68,204, 16, 88,201,172,202,143, 46,199, +196,182, 73,228, 24,117,165,242,196, 54,146, 83,191,144, 20, 66,210,199, 72, 17, 3, 67, 18,116, 74, 33,164,196,143,201,125,149, +135,115, 45,153,134,200, 67, 15, 75,165, 88, 71, 55, 22, 85,129, 75,129, 77,136, 52,209, 35,146,103,146, 18, 83, 9, 53,185, 24, + 22,193,161,165,194,199,200,164,180,108, 27,205,169,200,138,218,149, 45,242, 37, 83,141, 10,179,231,221, 1, 41,230,155,188,139, +121, 23,200, 5,185, 45, 94,194, 99,226, 69,214,251,120,180,153, 81,189,102,244,200,219,189, 8, 67,128,159,249,202,207,176,123, +101,155, 16, 35, 67, 31,104, 22, 13,235,245, 6,107, 11, 78, 78, 87,104, 59,225,229, 27,187,148, 54, 51,212,165, 84,132,152,242, + 91, 68, 64,164,236,213, 45, 74,133, 30,195, 88,252,152,177, 28, 71,155,218, 5,232, 69, 32,198, 36,169,152, 5,112,206,209, 53, + 61,193,121,196, 16, 88,121,207,113,235, 88, 53, 29,184,192, 89,219,225,130, 99, 19, 3, 27, 96, 45,160,222,154,178, 17,137, 63, +125,235, 17,111,117,249, 80,148, 74,242,229,160,248,251,104,254,126, 97,120, 67, 73,222, 43, 4,189, 25,111, 70,175,207, 96, 90, +141, 47,166, 6,145, 8, 14,180, 85,212,133, 97,111, 58, 99, 50,155,161,203,146, 80,228,195, 72, 11,193,150,177, 84,133, 65, 42, + 69,240,137,166,117,156, 44,214,156,158,183,108,250, 17, 11,219, 57,214,155,129,245,166, 99,221,117,185, 1,145, 18, 45, 37,133, +145, 24, 96, 82,106,182,119, 10,230, 51, 75,112,142, 39,247, 31,176,127,218, 33,124,226,129,244, 57,203,190,239,153,111, 58,246, +118,118, 8, 50,241, 72,129,216,169,209, 86,209, 38,193,118,130,166, 79,220, 95, 5,214, 49, 81, 78, 44,122,183,230,212, 11, 30, +184,196,162,143, 60,237, 60,199, 3,120, 33,179,251, 66, 64,104, 3,251,131,203, 97, 56, 72,206,238, 29, 83, 27, 69,187,104, 49, + 51,139,220,169,217,189,118,157, 95,248, 71, 95,230,205,159,124,153,159,191,177,203,180,214,252,243, 63,249,128,111,125,245,235, + 60,125,255, 67,110,148,130, 89,105,153,134,132,145, 5,201, 88,222,242, 61,190,139, 99, 97, 79,185,176, 43,133,188,253, 58, 63, +247,139,191,194,111,255,183,255, 21,159,253,244, 27,252,235,165, 69, 62,249, 4,249,206,159, 35,131,197, 37,195,106,211, 96,165, +228,108, 24,104, 99,142, 66,150,209,113,147,200, 92, 38, 84, 28, 48, 41,178,105,214, 60,238,123,220,147,115,196,189,251, 89,251, +169, 20, 82, 36,132,212,224, 59,196,131, 83,254,201,157, 67,126,253,181, 79,243,217,253, 3, 22, 69,226,131,133,131,144, 16,113, +140,225,156, 78,224,230, 17, 95,186,253, 41,234,157, 93,202,233, 22, 43, 61,238,126,149,186, 12,250, 96,188,241,251,142,161, 93, +211, 54, 27, 30,156,159,240,205,239,223,135,227,211,156,124,199,143,192, 27,255,184, 9,102,211,252, 96, 90,157, 27, 71,168,205, +112, 57, 65, 27,157, 56,105,240, 52,222, 99, 70,139,174,208,130, 42, 64,111, 36,133,128,163,210, 96,129,118,228,153,239, 20,154, +198, 69,182, 74,203,174, 49,180, 68,166,214,112,210,122,230,133,204,118,232,144, 87, 99,186,203,152, 85,147, 6,140,210,152,102, +192, 24,205, 87, 74,203, 94, 97, 50, 61, 86, 74,182,181,228,113,155, 80,165, 70,111,213,168,178, 70,238,214,200, 73,141,156,150, +200, 74,241,159,239, 20,220, 41, 45, 59, 90, 19, 17, 72,171, 25,132,100, 72,112,234,179, 21, 24,153,168,164,193,225,240,193,101, + 86,215,144,119,240,141, 31, 8,125,203, 21, 41, 56, 91, 28,211, 14, 61,191,127,239, 46,199, 79,143,225,244, 4,214,107, 56, 63, +207, 1, 66, 93, 63, 38,255, 13,208,108,120,218,246,124, 60,180,124, 48, 12, 52,155, 6, 57,116,236,196,136, 9,129, 9,137, 77, + 12, 28,232,146, 74, 8,186,148,152, 11, 73,163, 36, 38,230,128,160,211, 24,248, 78,151, 88,107,131, 14, 3, 66, 23, 8, 1,165, +144, 8, 98,230,235, 36,193, 16, 60,171,117,203, 39,203,150,187,103, 13, 79, 66,196,247, 3,221,224,216,145,146,174,237,153, 24, +197,224, 3,167,125,207,129, 18, 28, 22, 26,163,178,128, 88,105,201,105,128, 37, 34, 35,192,165,196,198,136, 22, 48, 12, 29, 69, + 24, 72, 82, 48,193, 81,134,192,106,240, 76,146,200,131, 28,173,242, 25, 21, 18,149, 18, 4,161,112, 74, 93, 78, 95,149,185,140, +145, 45,108, 62,211, 47,146,233,194, 0, 46,252, 71,196,196,234, 25, 76,203,252, 66,119,237,229,135, 54, 93, 40,247,210,229,248, +253, 98,132, 44,212,179, 66,146, 71,201,207, 41,223, 47,190, 76,207,212,219,163, 80,172, 30, 57,228, 85,206, 54,182,194, 34,133, +100, 57, 12,148,214,162,144,172,253,128,212, 22,237, 7, 90, 20, 18,135,150,146, 24, 34, 15, 59,152, 72, 65,233, 29,143, 82,182, +190, 45, 7, 7,117, 73,227, 28,214, 40,146,135, 70, 36, 42,165,233, 72,104,149,139,211,202,123,106,107,136, 74,162, 9,248,212, +114, 98, 20,120,143, 73, 30, 33, 52,190,233, 9, 19, 65, 45, 28,101, 7,141, 46,178, 86, 0, 96,104,137, 49, 91,250, 22,195,192, +182, 22, 92,179, 53,141,247, 28, 26, 67,231, 4, 62, 4, 14, 39, 83, 22, 67,135, 19,130, 93, 4,167, 69,205, 52,118, 44,170, 34, +199,199,202,220,209,225, 47,112,146,163,107, 64,143,183, 1,127, 33, 56,140, 57,176, 70,170, 60,138, 30,252, 8,204, 9,227,127, + 99,243, 62, 93,155,172,220, 21,121,106,226,135,252,129,152, 78, 11,214,139, 14,165, 21,214,232,124,214,140,161, 54, 77,231,217, +155,149, 8, 41,242,197,223, 11,162, 72,200,152,211,247,130,143,120, 35,178, 48, 19,137,210, 18, 39,178, 15, 61,164,188, 2, 8, + 49, 61,235,220, 37, 9, 27, 35,161,243,136, 16,177, 72, 54,193, 51, 12,129,101,211,211,199, 49, 39, 93,102, 6,242,128,160,141, + 61, 19, 41,217,191,126,200,123, 31,220, 67, 7,216, 70,240,189,141, 3, 31,249, 30,145,162, 77,252, 92,165,184, 89,106,126,197, + 41,126,242,214,140,119,222,218,112, 60, 43, 81, 47,189,192,227,110,195,102,112,156,116, 29, 31, 30,247,108,149,138,106,156,100, + 4, 34,221,208, 35, 86,146, 97, 8,132,222,179, 95,151, 76, 71,123, 99,219, 6, 78, 78, 27, 62,186,119,198,122,211, 94,222, 76, +165, 96,232, 7, 26,215, 49,116, 29, 94, 41,114, 34,124, 22,216,108,205, 75, 14, 94,220, 98,182, 55,101,182, 59,225,189,239, 63, +230,131,166,167, 85,112,211,193, 67, 25, 25, 74,193,206,102,224, 86,227, 41,191,115,151, 87,215, 13,175,237,212,204, 94, 63,226, +254,213,146, 73,227,216, 44, 7, 30, 13,240,141,100,120, 49, 42,190, 60, 53,252,191, 14,222, 63,239,169, 35, 20, 70, 50, 31, 60, +122, 82,128, 80, 24,173,184, 35, 21, 55,182, 21,133, 51,136, 85,195,241, 91,239,114,235,198, 62, 47,224,120,242,201, 99,218, 43, + 19,234,218,160, 10, 69, 81, 22, 28,159, 44,249,151,119,159,242,207,127,251,247,120,244,241,146, 23,182, 13, 7,135, 91, 24, 93, + 82, 20, 37,178, 27, 56,239,214,156,198, 68,220,218,193,220, 82, 4, 25, 72, 79, 31, 33, 94,126, 19,110,190, 4,251, 47,114,116, +117,151,205,147, 51,126,227,255,250, 29,244,239,126, 23,241,197,151, 16, 71,215,217, 81, 2,183, 92, 96,164,226,165,162,100, 49, +116, 28, 3, 41,120,196,208, 34,101,139,223, 24,106, 91, 32,130, 99, 66,100,123,189,164, 89,158, 19,143, 79,136,253,154,116,251, + 83,196,157, 3, 82, 89,145,108, 73,178,134,223,120,239, 1, 87,240, 28,204,118,248, 94,235,179,183,252,188,132,176, 70, 40, 75, + 58,218,129,189,125, 38,102,194,223,217,219,101,145,114, 72,213,191,109,150,121,189,103, 71,226,149,243,153,118,181, 88, 66,227, +184,191,217,100,199, 73,234,199,181,225,104, 31, 13,241,111,127, 86,254, 40, 46,250, 98, 1,187,123,151,156,134,209, 6,156,198, +113,238, 48, 4, 10,157,149,236,107, 55,112, 93, 27, 6,173, 56,137,137,155, 19,141, 31, 4, 49,207, 16,185, 82, 21,108, 6,199, +138,236, 78,153, 0,117,101,232, 99, 98, 72, 41, 63,101, 31,145, 87,246,144, 82, 83, 76, 44,184,129,212,244,220, 26, 6,110,232, +204, 55, 80, 2, 54, 46,112,173,176,212,187,150,184, 55,131,189, 25, 87,170,154,164, 5,167, 67, 75,227, 29,175, 18,249,172, 81, +212, 90,114, 84,148, 60,117, 29, 79,162,199, 3, 31,116, 3,167,162,196,168, 60,133, 91,135, 13, 73, 38,214,109, 3,222, 33, 54, + 27,146, 80,172, 55, 45,223,148,145,111,202,209, 86,146, 2, 44,250, 49,179, 99,156,244, 14, 25,226, 50,238,184,242,244, 81, 11, + 88,174,159,157,177,119,165,102,119,219,210, 6,193,190,206, 4, 54,141,160,137,142, 82, 26,166, 82,112, 46, 20,197, 24,202,213, +111, 22, 24,171,217, 69,179,113, 3, 24,131, 14,142, 32, 4, 94,106, 22, 17, 90,198,137,243,176, 33, 40,152, 71, 73, 39, 5,219, + 17, 58, 33,217,158,151, 28,247,145,131,121,205,227,214, 97, 11,197, 64,164,239, 55, 44, 84, 32,161,169,116, 73,215, 12,156, 10, +197,137,157,161,147,103, 75, 90,124,236, 65, 41,170, 36,232, 98,100, 87, 6,156, 27, 48, 74,178, 85, 26, 78, 6,199,150,132,165, +119, 20,104, 38, 6, 22, 36,154, 16,144,182, 32,166, 0,194,254,224,103,105,185, 25,131,141,234, 60, 17,170, 74,112,254,185,162, +174,245, 37, 41,230,199,141,221,167,117,142, 33, 44,170, 92, 32, 46,126, 6, 46,139, 77,188,192,201,245, 99,228,233, 88,236,237, +115, 93,174,243,151,227,126,212, 37,108, 4,153,173, 90,106, 84,193, 63,103,159,219,132,200,196,234,204, 47,209, 50,231,175,248, + 33, 91,179,188,167, 65,176,171, 21, 69, 33, 89, 15, 25, 8,163,141,160,245,254, 89,202,253,178,115,168,202, 82,185,136, 55, 30, + 6,205,153,114,108,219,140, 51,108, 83,196, 40,197, 34, 95, 71,153,105, 65,131,198,182, 3,219,192, 70,107,214,193, 51, 67,243, +168,237, 8, 93, 71, 61,155,114, 26, 37,108,250,203, 72, 86, 9, 52, 27,176,138,224, 35,239,159,173,248,220, 86,126,209, 39,232, + 49, 38, 87, 50, 49, 22,173, 10, 78,104,217, 45, 19, 77, 47, 51,115, 5, 46, 51,224,155,110,220,157, 95, 28, 42,242,146,250, 22, +228,232, 58, 24, 27, 34, 41,243,239,234,135,252, 62, 68,159, 91,118,171,243,123,164,220,104,253,241,104,107, 41,173,225,228,108, +131, 27, 11,188,214, 6,151, 2,162, 44, 40, 37, 20,101,206, 6,200,251,242, 11,105, 68, 78, 82,235, 98,192, 17,145, 61, 88,173, +144, 57, 69, 6,169, 50,139,152,144,111,238,217, 46, 47, 81, 49,195, 94,116, 2,163, 36, 90,107,188, 8,184, 16,232, 55, 30,223, + 56,232, 29,125,240, 24, 33, 88,165,196, 10, 40,172,225,104, 58,101,111,127,139, 63,250,147,239,241,221, 38,239,208, 16, 49,255, +174, 83, 77,223, 58,254,213,185,203,193,241,107,207, 59,231, 3, 47,110,107,138, 39, 13,146,123,220,216,153,242,194,214, 46,250, +250, 14,223,219,121,204,100,182,197,164,174, 41,102, 83, 14,143,118, 88,117, 67,222, 16,109,122,154, 36,232,132,192, 9, 24,122, +207,217,162,225,238,253, 19, 30, 62, 56,103,240, 29, 41,100,108,167,136, 17, 31, 99,166,167,249,132, 64,179,232, 5, 82, 25,148, +130,253,189,138,122,119, 74, 49, 45,113, 41,113,214, 42,110, 79,247,248,254,233, 83, 30,184,150, 77,219, 32,140,164, 25,122,174, + 4, 69,179, 56,102,111, 19, 88,196,134,217, 39, 11, 78, 95,152, 96,103,154, 35, 83,112, 16,225,198, 85,197,181,101, 79,215, 5, +126,213, 74,254,167, 85,207, 73,227, 25, 6,216, 41, 36,147, 66,113, 22,224, 80, 11, 62, 59, 51, 28,213,138, 19, 1,111, 63, 78, +124,229,240, 21, 22,201,113, 32, 18,159,217, 46,249,227, 69,203,195,239,220, 99,231,232, 42,211,123,103, 92,145,130,111,126,247, + 33,119, 80,108,109, 91,116, 93,176, 85, 79, 49, 66,211,173,150,220,125,252,144, 83, 93,177,116, 41,239, 67,203,154,161, 56,128, + 47,127, 38, 39, 89,181, 27,196,215,254,128,223,248,238,130,127,241,134, 66, 93,217,197,124,233, 14,162,156,176, 91,207, 57, 16, +154,137, 86,163,169, 38,208, 13,158,207, 19,217,154,239, 66,154, 51,167, 37,173,206,169,162,195,132, 0,203,115, 94, 63, 95,241, +180,237,137, 6,194, 98, 65,252,222,251,196,219,142,120,253, 6, 73,193, 23, 95,186,195, 27,183,111,241,199, 31,188, 75,255,240, + 29,238, 29,247,136,170,134, 74,147,216,206,201,150,211, 41,111, 76,106,110,109,111, 97,133,228, 74, 97, 40, 69,143, 90,231,176, + 70,218,113,127,123,190,202,141,239,249, 58, 23,115,158, 43,200, 74,130, 48, 57,103,253, 63,164,168,255,117, 63,171,213,104,253, +213, 35,255, 66, 17, 92,204,199,156, 17,244, 46,177, 45, 3,229, 78,205,227,245,192,190,149,220,172, 18, 15,186, 64, 39, 20, 83, + 18,133, 53, 28,167,196, 43,133,193, 42,184,110, 53,171, 33,240,168, 25,152,151,130,166,143, 72, 31, 81,218,160,171,146, 91,243, + 41, 66,107,164, 31,136,147,158, 47, 9,207,203, 74,161, 6,199,241,178,227,233,186,231, 35,239,153, 86, 21,177, 40,198, 44,144, +128, 68,163,180, 34, 16,121, 81, 68, 38, 90, 82,250,196,169, 95,178,173, 13,157,115, 28, 7,184,231, 65,153,136,111,219,108, 68, +233, 90,210,122,141,104,123, 82,215, 67,231, 16,195, 64,146,238, 50,228,231, 7, 64, 95, 41,171, 92,203,145,148,103, 60,108, 70, + 32,141,119,224, 70, 43,244, 72, 59,139,210,241,180, 53,220,175, 19, 6,184,154,224, 64, 41,206,165, 34,166, 68, 47,179,125,248, + 52, 37, 26,160,172,166,232,216, 17, 92,139, 80, 37,131, 15,120,157, 39,199,103, 67,135, 21,154,117, 28,178, 86,201,214,176, 13, +203, 85, 67,225,123, 54, 2,156,213, 48, 68, 68,101, 57, 67,240, 74, 93,240, 46,153,123,209,171,130,223, 91,116,212, 90,243,134, + 13,188, 39, 36,235, 16, 9, 33,176, 85,206,240,205,130,189, 98,134,175, 39, 16, 3, 59, 4,154,205, 19,166, 90, 67, 12,172, 99, +100, 79, 43,156,207,154, 45,159, 28, 43, 31,241, 14, 10, 41,243,250, 66,233,209,185, 60, 54, 62,113, 12,173,113,125, 46,238, 90, + 67,219, 65,122,254,166,110,245,165,100,254,199, 21,245,161, 1,202, 92, 52,158,221,180, 61, 88, 55,250,163,199, 4, 57, 63, 90, +180,188,191, 28, 5, 95,220,200, 47, 10,248,133,218,254,226,159,155,238,242,198,127,193, 13, 30,233, 99,239,169,130, 23,165,160, +151,146, 2,216,196,152,119, 55, 82, 18, 99,196,249,129, 18,197, 82,122,212,136, 46, 91, 43,197, 68, 6, 76,161,105,157,231,110, + 19,120, 97, 2,170,247,172,140,162, 38,146, 76, 66,171,114,132,132, 64, 37, 36, 29,176,140,145,235, 90, 35,131,167,198, 32,133, +231,201,232, 10,159, 40,205, 58, 4, 10,161,120, 52, 64,116, 29,181,116,153,204, 19,251, 49,190,207, 65, 10, 40, 97,121,226,122, +190, 48,175, 88,123,199, 84, 40, 38, 90,161,180,201,163, 94, 44, 50, 5, 10, 37,168,124,226,250, 86,201,112, 62,176,190,120,103, +124,155,247,127,171, 46,127,232,149, 29,189,178, 49, 63, 25, 63,118, 84,202, 94,142, 6,227,184,147,143,163, 40,206,199, 75,149, +114, 24,217,237,162,196, 22, 10,171,243, 72,189,158, 78,114, 40,221, 38,147,209,246,171,154,157,189, 41,125, 15,165,209, 8,145, +105,108, 81,100, 43, 91,206, 97,143,196, 33,208,235, 72, 29, 21, 33,138,203,129,140,144, 99, 10, 98, 22,229,136,148,208, 82,100, +123,188,204, 35, 41, 25, 19,209,103,222,186, 86,130, 3,165, 57, 47, 10, 68, 8, 44, 82,162,142,145,101,190, 18, 83,212, 5,235, +243, 13,220, 95,147, 60, 76,181,102,221, 15,208,132,252, 90, 92, 55,240, 73, 15, 27, 15, 6,190,190, 47,248, 58, 1,156,227,102, + 1, 7,139, 21,221,217,154, 73,253,152,178, 46,217,155,111,243,229,207,221,225,240,133, 93,202,218,242,232,124,195,233,186,101, +181,233, 41,180,165,174, 74,162,148,116,131,227,120,213,240,240,116,201,134, 72, 16,146, 36, 21,169,119,248,161, 35, 70,151,127, + 55, 52,146,148,119,237, 86,211,167, 72,155, 18,109,140, 20, 18,190,249,246, 99,206,122,248,164,154,210,238, 22, 84,174,103,221, +221,167, 90, 31,227,156,227, 95,135,129,217,162,225,197,162,228, 17, 37,187, 15,158, 50,105,246, 17,100,112,140, 83,138,161,208, + 28, 79, 44,198, 5, 78,149,224,205,157,130,223,250,218,125, 30,108,224, 63,187,190,155,149,181, 17,124, 8,124,126, 90,179, 61, +181,156,165,200,245, 98,135,201,178,230,201,122,224,157,227,115, 68, 20,156,189,243, 17, 15,222,251,152, 15,138,119,121,225,215, +126, 25,172,161, 45, 75, 44,150, 29,237,248,240,163, 5,205,249,134,237,253, 41, 91,123, 91,252,254, 87,255,130,116,117,159,120, +243, 8,130,161, 22,240,202,151,222,228,245,254,152,223,252, 95,190,133,253,114,201,144, 2,123, 63,127, 3, 89, 87,236,206,175, +176, 78, 9,163, 52, 71,202,176,103,115, 26,100, 66,226,186, 53, 47,138,158,117, 12, 28, 30, 93,163,156, 84,184,190,231,236,195, +111,179,186,127,151,243,216,211,222, 95,114,173, 46, 41,129, 79,111,237,240,173,197, 25,161, 91, 17, 82,128,243, 39,188,121,245, + 5,190,116,176,203, 92, 72,124,140,252,230,251,223,231,230, 36,112,183, 79,121,154,110, 20,105,108, 34,136, 48, 87, 10,171, 5, + 58, 6,122,215,241,165,208,240, 71,235,101,158,132, 61, 61,207, 86,181,229, 34, 79, 32, 11,251, 35,188,230,233,111, 62, 27,255, +182, 63,110,200,244,182, 49,145,115, 90,104, 58, 9,125, 31,185, 82, 41,156,149,156,181,158, 93, 23,153,106,201,218, 7, 54, 30, +180,213, 57, 71,170, 46,185,182,189,207, 78, 49,229,102,109,185,163, 4,106,241, 24, 21, 28,127,201, 10,173, 36,115,223,161,181, +198,214, 53, 73, 90,166, 69,238,127,103,117,205,212, 27,110,196,158,228, 28, 19, 99,168,103, 64, 31,120,219,195,220, 40,130, 86, +108,155,130,137,177, 12, 36, 58, 41,217, 55,134, 67, 45,209, 93, 62,215,116, 72,116,222, 51, 12,145,223,121,218,227, 68, 68, 15, +103,132,229, 26,180, 37,185,129,120,129, 4,149,144,250,241,117, 13, 54,251,250, 47, 34, 80, 69, 49,174, 25,199,139, 78,231, 71, + 29, 86,186, 4,128, 93,136, 36, 92,255, 44,170, 91, 4,184,219,182,212,133, 96, 54,230,158, 8,163,145, 49, 48,232,130, 20, 61, + 43, 33,233,181,161,141,145,132,164, 81, 5,123,186, 99,225,122, 30,217,154, 57,145, 77,202, 77,213,169,239,199,245,229,152,226, + 41, 13, 76, 74,250, 30,146,177,104, 4, 11,163, 81, 9,130, 82,108,138,154,159, 80,146,149,144, 44,132,160, 78,176,107, 20,143, + 66,228,101,173,121,170, 12,119,125,203,186, 83,204,170,154, 71,171, 99,136, 29, 71, 55, 95,103,245,238,159, 81, 81, 16,125, 71, + 10,137, 90,102, 65, 93,242,207, 16,152,204,180,228,110,227, 71,200,149,186, 36,184, 21,163,142,162,200,164,200,103, 7,110, 63, + 66,139,132,122,174,168, 59,127,201,123,253,113, 63, 77,155, 51,133,229, 15,141,151, 28, 16,187, 60,154,127,158, 15, 59,118, 35, + 57, 5,135,203,177, 19, 33,171,149, 13,121,199, 36,199, 55,243, 25,169, 73,141,108,227, 13, 84, 19, 84, 72,156, 7,199,118,204, +233, 78, 90, 89, 54, 41, 82,138, 12, 5,152,218,146,251,155, 37,203, 24,185, 82, 27,190,127, 49, 82,211,112,220,122, 98, 18, 92, + 41, 21, 79, 26,232,230,137, 93, 18,139,148,173, 74, 87,101,230,232,106, 33,241, 8, 28,145,131, 42,119,115, 33, 64, 69, 46,244, + 86,107,122,151,241,138, 61,137,211, 16,152, 23,138, 7, 35,183,153, 97, 4,181,172, 54,207,252,248,161,105, 57, 50,138,183,151, + 45, 95,152,215,212, 85,129, 79,129,153,153,208,184,236, 19,245, 82, 83, 70,207,141,201,156, 7,205,134, 45, 35, 40, 5, 60, 93, +181, 80, 87, 89,160, 83,106, 8,213, 72,124, 35,135,212,244, 99,177,246, 9, 38,228, 27,184, 30, 21,240, 23,171,142,139,177,129, + 31,121,211,186,200,157,177, 41,153,212,147,156,250,230, 19,182,146,112,158, 24,134,129,162, 40, 57,188,178,203,223,253,204,117, +164,210, 36,145, 69, 26, 46,145,233,106, 82,144,124, 78,140, 43, 10, 73, 8, 41,111, 0, 18, 72, 41,179,121, 33, 64, 34,142,230, +134,244, 44, 80, 71, 2,106,220, 27,102,198,120,100, 54,218,139,125,132, 38,100, 40, 79, 14,227, 20,204, 68, 66, 8,137, 45, 43, +142,143,207,121,251,126,199,204, 10,166,133, 98,157, 70, 49,225, 69, 97,247, 23, 1, 1, 33,123,244,111,215,224, 36, 15,151,129, + 79, 98,226,221, 90,113,133,192, 21, 25,217, 44,207,168,239, 62,230,211,211,130, 23, 74,205,164, 42,176, 74, 50, 49,134,162,180, +204,234, 2,107, 52,206,141, 80, 26, 21,243,168,174,168, 32, 37,130, 50,248, 21,200, 62,161, 99,200, 62,124, 4, 49, 6, 98,231, +240,235,158,197,201,154,132,224,241,249,138,234,253,123,156, 76, 42,238, 79,246, 57,156,148,220,153, 77,249,120, 50,229,252,227, +125,228,174,163, 57,237, 88, 29, 9,222,245, 3,159, 58,152,243, 7, 83,205, 71,255,235,255,199,250,147, 99,170,249, 22,113, 62, + 33, 20, 37, 87,175,239,112,227,206, 14,157,128,247, 31, 44,120,177, 42,217,185, 49,231,188,247, 76, 66, 66,185,200, 63, 56,172, +153, 36,208, 62,113, 69,229,176,141,118,106,249,211,147,150, 38, 70, 86,171,134,214,105,218,135, 13,215,127,234, 38, 79, 11,195, + 45,109,120,233,229, 27,220, 83,146,189,190,225,218,235, 45,103,143, 30, 48, 63, 60, 66, 77, 12,182,123, 68,122,119,159, 52,109, +184,117,235, 58,169, 56,224,181,197, 61, 42,161,248,149,127,122,155,213,100,155,101, 40,152,238, 28,208, 3,171,224,121, 41, 4, + 42, 5, 91, 74, 51,179, 80,203,132, 78,142, 85,232,104,135,134, 36, 11,166,214, 82,149, 5,231, 85,201,176,253, 18, 31,156, 46, +249,252,201, 35, 90, 35,248,189,199,199,252,194,213, 61,190, 33,160, 76, 18,191, 60,193,223,127, 64,216,221,167,174, 37,197,225, + 54,161,152,210,233,146, 55, 14, 15,153,107,216,234, 29,223,110,251, 81,185,238, 73, 66,243,238,224,249,169,118,193,141, 80,211, +250, 14,227, 29,177, 95,231, 93,249,201, 34,171,172,155,238, 7,241,166, 74,254,208, 63,251,191, 18,110,243, 31,157, 43,127,241, +103, 14,249, 49,151,163, 76,233, 74, 93,242,120,227, 40, 10,197, 84,128, 76,137, 32, 4, 87, 38, 5,171,113, 63, 43,172,162,212, +150,235,179,125,246,118,182,185,105, 44,183, 66,131,177, 37,221,234,132,253, 98,139,143, 54, 11, 14,148,193,147, 24, 16, 76,234, +130, 66, 25,170, 66,161,164,229, 72, 43,174,166,130, 32, 27,172,138,244, 1,110,109, 77, 16,177,227, 65, 93,208, 88,240,218,144, +140,161,141,129,181, 79, 60,236, 58,110,148, 2, 75,228, 64, 43, 54,110,192, 13,158,213,162, 69, 63, 62,135, 20,114, 60, 47, 25, + 42, 21,184, 12,203, 73,189, 71,104, 77,234, 7,114, 12, 12,249,251, 90, 75, 8,125,222, 19, 95,212, 5, 61,234,178,180,186, 76, +208,188,200,216,186, 40, 96,195, 0, 91, 19, 24, 2, 31,172, 29, 98,170,249,194,164,226, 97,204,251,241, 34,102,230,135, 19, 10, + 27, 2,131,202,158,140, 45, 47, 88, 75,197, 92, 72,222,117,145, 37,137,164,244,136,184,214,121,109,172,199, 6, 67,251, 92,224, +171,154, 32,192, 35,176, 82, 33,148,100,219,148,120,224, 84, 91, 78,253,192, 34, 68,246,203, 9,149,144,120, 35, 57,117, 45,199, + 99,156,107, 72,142,123,235, 83,110,137,196, 98,121,130,191,251, 22,110,179, 4, 60,173, 79, 92,213,153, 8, 89, 5,129,151,130, + 33, 66,239, 2,167, 62,159, 59,249, 66,246,156, 88, 58,166,220,252, 92, 76,132,205,115,214,242,190,135,117,243, 67,150, 54,239, +255,102, 17,200, 5, 12,228, 34, 10,209,140,240, 3, 51,142,135,109,145,255,122,214, 28,164,188,203, 29,134,203,255,103, 24,227, +238, 10, 9,171, 53,204,103, 25,217, 88,141, 0,152, 16,115, 8,141, 28,129,241, 50,145, 82, 96,170, 44, 51, 45, 41,148, 70, 11, + 8, 98,132,133,164, 64,235, 2, 66, 73,206, 66,224,254,102,160, 31, 65, 49,155, 33, 50, 83,146, 62, 69, 54, 81, 16,164,160,113, +145,121,105, 80, 18,106, 99,105,147, 96,183,208,248, 81,249, 46,149,102,229, 61, 67, 8, 57, 13, 45,194, 32,115,177,121, 48, 12, + 4,153,253,216, 69, 82, 60,246,185,211,234, 47, 20,215, 23,182, 61, 55, 22,121, 33, 24,156,103,219,100, 91,220,142,177, 84,198, +114,238, 58,172, 50, 36, 33,136, 33, 96,146,100, 16, 96,165,192, 73,129,219,180, 92,153, 84,156, 54, 45, 68,216,154, 22,244,221, +144,181, 10,105, 92, 81,232,231, 4,117, 62,140, 30,244,139,214, 54, 94,134,212, 92,208,239, 82,204,227, 44,109,161,237,248,236, +155,159, 97,190, 55,231,244,248, 28, 31, 96, 50,157,178, 60, 89, 81, 79, 38, 92,217,219,226,221, 79,214,188,112,101, 62,142,202, +101,166,177,141,193, 85,125,200, 25, 1, 89,148, 47, 40,108, 78, 40,147, 34,143,233,253,168,198,245, 33,226, 67,194,187,108,105, + 84,241, 66,249, 30,192, 7, 66,235,232,154,129,174, 15,196,193,227, 82,100, 21, 28,201,199,108,135,139,145,171,251,187, 28, 28, +238,242,206,219,239,243,222, 73,195,178,117,172,134, 17, 81,219,135,188, 12, 59, 30,133,138, 25,223, 4,103, 14, 38, 18,185, 93, +225,251, 56,106, 57, 37,243, 90, 83, 25,203,164,158, 34,181, 37, 84, 22,105, 53,189, 15, 28,159,183,244,157,163, 42, 53,211, 73, +137,210, 18,239, 60,109,215,211,245,217, 98, 39,180, 34, 70, 75,194, 18,140, 70, 10,205,118, 81,115,125,190,205,225,100,206,196, +148, 76,149, 97,191, 40, 41,146, 68,205, 45,178, 46,105,107,139,208, 2,206,150, 76, 39, 19,110, 29,212, 52,202,208,238, 77, 16, +170, 96, 82, 22, 84,243, 18, 61,155,178,127, 56,229,202,225,148, 99, 49,229,251,201,210,204,106,228,225, 46,147,171,115,156, 86, + 60, 10,112,114,222, 99,181,165,124,113,155,117, 59,112,122,210, 48,108, 28,243, 29,131,248,232,148,151,246,167,136, 0, 86,231, + 56, 76,149, 18, 47, 84,130,155, 83,195, 7,143, 60, 11, 57,103,101,225, 74, 33,216,185,122,200, 78,105,104, 3,248,178, 32, 77, +166, 32, 38,108, 85, 37,219,135, 59, 60,126,186,226,159,124,230,243,252,131,255,242,167, 57,122,227, 14,213,233, 19,134,167, 31, +243,130, 45,137,102,194,244,240, 6,147,131, 79,177,127,227, 58,182,174,152, 78, 39,204, 37, 28,106,195, 22,138,173, 34,113,160, + 52,179, 24,208,190,103,238, 6, 78, 22, 43,246, 82, 71, 85,212,180,211, 41,117,239,249,104,240,220, 48, 5,119, 69,226,134,138, +188,148, 4,223, 76,138, 95,170, 45,239,161,144, 66, 35,241, 8, 23,120,176, 25,216,173, 5,247,134,129,148, 36,183,235,138, 93, + 91,177,109, 44,239, 56, 79, 24, 57,214,194,121, 98,236,249,254,114,205, 46, 61,186,239, 89,117, 11,254,229,135,143,224,254,113, + 30,133,187, 31,218,125,203, 81,159, 18, 70,190,130, 28,187, 84,255,159, 0,136,121, 54, 69,139,151,205,118, 28,207,138, 36,168, +172, 34,133,132, 23,130,237,164,120,109,111,194, 79,237,109,241,234,124,202,212, 72, 2,130, 86, 9,182,180,225,198,116,198,220, +150,236,213, 19, 94, 41, 11, 74,109,216,149,146,169,202,126,117, 45, 45,219,214, 98,149, 98, 87, 89,166,166,224,160,168,216,211, + 21,187, 41,114,104, 44, 7,186,100, 91, 21, 76, 80, 76, 76,205,188,156, 48,177,154,235, 86,179, 63,157,113,168, 37,187, 2,182, + 84, 68,118, 29,133,115, 44,215,107,142,130, 71,227,217,180, 61,199,231, 13,127,113,186,100,117,214,142, 22,219, 1, 17,179,240, +239, 50, 66,220, 95,254,174,207,191, 30,241,121, 29, 86,200, 89, 26,207, 24, 23, 98,244,105,143,103, 91,161, 47, 99,195, 73, 96, + 44,194,103, 55, 65, 72,112, 10,196,145,124,104,165,198, 11,129, 23, 57, 41,206,169,172, 53,216,140, 60, 17,139, 96, 41, 19, 8, +205,146,144,111,231,114,116, 4,153,139, 32,151,145,241, 33,115,214, 71,146,144,148, 36,152,146,137, 50,217,222,172, 52,115,169, +121, 34, 52,218, 90, 10, 91,162,144, 60, 9,158,162,172,184, 35, 5,247,146,128, 48, 48,183, 37, 65, 89,170,208, 99,250, 6,101, + 13,209,123,172, 72, 56,145,181, 71, 49, 4,150, 33, 19,244,136,137, 39,109,164, 75, 99,232,140, 80,227, 45,125, 20,204, 41,123, +185,106, 45,205, 88, 43, 85,182,185,141,103,244,127,218, 79, 61,201, 5,164, 75,204,127,226, 14,203,119,238,229, 20, 36,115,161, +146, 31, 59, 43,173, 71, 47,233,216, 93,116, 49,171, 29,235, 45,216,173,145,186, 32, 94,164,165,117, 62, 23,253,114,228,141,203, + 44,246, 58,243, 1, 71, 34,137,200,169, 15,108, 9, 65, 82,154,193, 59, 64,176,240,158, 62, 68,102, 82,178,136, 9, 41,229,248, + 98,141,117, 78, 93,140,254, 5,223,111, 19, 91, 86,176,155, 2, 83, 11, 79, 7,199,212, 90, 54, 41, 49, 9,238,242,134, 43, 5, + 40, 79, 10,154,211,152,152, 26,147,131,108,148,160,197,211, 15,130,190, 16,185,177,121,102, 51, 35,219,199,116, 22, 5,246, 33, +239,168,139,152,232, 4, 48,116,212, 69,205,248,209,205, 89, 11, 70, 83,199, 72, 7,236, 1, 15,132,160, 78, 61,159,155,105, 60, +154, 10, 79,179, 59,201,187,100, 3,119,151, 21,125,232, 47, 87, 32,210, 65,127,177, 79,231, 50,138,183,176,227,141,126,180, 46, +132,113, 74, 82, 88, 54,171, 14, 63,238,232,125,219,211,156,181,172,155,134, 33,120,166,243, 9,235,179,200,241,249, 6, 43, 4, + 82, 10,172,214,232,145,196,102, 20,156,167, 8, 93,196, 26, 49, 58, 81, 69,158, 96,165,252,181, 14, 41, 63,156,140,217, 38,231, + 70, 12,171,243,158,228, 60,214, 5,116, 4, 55, 4,206, 7, 71, 59, 12, 52,222,161, 60,164,152,144, 66, 48, 51,134, 43,202,178, +131,228,221, 71, 11, 58, 61,126,177, 87, 62, 63, 0,140,184, 89,178,109,109, 29, 97, 42, 97,237,225,173, 13,113, 94,160, 42,147, +117, 1, 41, 49, 51, 5, 91, 85, 69, 93, 20,244,193,113,114,182,121,150,213,227, 55, 3,194, 69,156, 82, 76,230,142, 9, 16,189, +199, 24, 73, 89, 25,166,157,165, 25, 34,102, 42,232, 6,139, 76,150, 98, 54,231,149,121,193,107,179,138, 74, 8, 66,231,104, 87, + 93, 78,206,219,177,120, 13,117,173,153, 76,118,152, 78, 45,190,141, 52,205,128,144,112,125,215,240, 66, 50, 28, 92, 41,120,184, +242,156,135,192,233,178,163,233, 60,199, 77,192, 27,197,193,139, 7,108, 29, 84, 76,182, 11,234,144, 16,189,167, 43, 4,147,173, + 57,202, 57,190,119,188,230,233,131, 37,171,147,150,183,255,213,191,227,149,255,238,191,230,255,248,247,111, 33,222, 62,231,103, +127,233, 85, 84, 44, 16, 86, 19, 67,194, 68,216,171, 53,191,254,197,107,124,245, 91, 15, 56,108,175, 80, 46,159, 98, 30, 46,240, +181,229,112,174, 49, 30,150,201, 80, 94, 55, 12,141,101,253,228, 41,191,246,153, 79,241,185,219,135,252,179,255,251, 27,188,247, +206,219,156,223,250, 60,101, 45, 57,223,222,102, 90,109, 35,119,182,153,204, 10,202,105,129, 34,209,172, 91,180,154, 50, 44, 55, + 40, 25,217, 18,134,210, 13, 24, 63, 32,137, 12,174,227, 85,237,249,131,183, 63,228,211,119, 63,160,252,212,171, 44,119, 95,226, +203, 74, 48,173, 44, 95,188,249, 50,230,250,117, 86,237, 57,243, 79,238,242,213,179,142,191,183, 83,241,241,149, 25, 31, 60,109, +145, 74,225,106,203,191, 57,107,152,118,138,175,236, 40,174, 85, 91, 68,173, 80,205,154, 45, 37, 57,142,153, 51,145, 98, 78, 72, + 91,106,197,111,156,159, 49, 77,176, 56, 89,193,217, 57,162,235, 72,234, 71,156,105,126,212,164, 92, 68,178,186, 17,190, 97,117, +190,160,180,253, 95,109, 4,254, 67,111,234, 23, 66,186, 8,187,159,189,195,233, 71, 79,152,138,192, 68,107,174,238, 90, 94,153, +205, 56,170,103, 36,169, 56,242, 1,193, 57, 83, 34,131, 79,108, 27,201,204, 42, 84,138, 36, 37,217, 83, 10, 29, 2,186, 40, 8, + 17,246,148, 39,186,129,151,132,200, 35,114,215, 51,137,130,210,123,102,182,196, 4, 79,169, 20, 69, 89, 99, 38,134, 48, 68,154, +245,130,217,100,135,232, 61,125,223,208,108,214,180, 93,203, 98,211,242,198,224,121,176,110,120,228, 60,167, 90,243,205,174, 99, +224,255,103,237, 77, 98, 36, 77,243,243,190,223,187,126, 91, 44,153,145, 75, 85, 86, 85,215,210, 93,221, 51, 61,156,157, 67, 14, + 57, 36, 37, 82,150,185,192, 48, 33, 27,180, 1, 95,228,131, 47, 6,124, 48, 4, 24,240, 73,128,225,139, 1,195,128,125,240,193, + 7,249, 98, 2,186,200, 2, 40,203, 20, 32,153,139, 8, 82,148, 72,145, 34,197,153, 86,207,116,207,244, 82,221, 85,213,149,149, +107,100,196,183,189,155, 15,239,151, 85, 77,114,108,211, 26,246,169,208,221,200,202,140,140,248,254,219,243,252,158,200,199, 62, + 48,196,145,170,148, 19,188,230, 83,181, 23, 72, 83,190,247,167,145, 17, 9, 16,222, 79,209,203, 58, 11,124, 39,253,128,144,110, + 0, 0, 32, 0, 73, 68, 65, 84,198, 12,169,203, 53, 35, 76, 27, 99, 83, 78, 19, 85,200, 53, 67, 76,153, 24,184,108,243, 27, 2, +148,146, 48,122,190, 73,207,144, 4, 95, 89,104,230, 82, 51, 18,104,148,161, 11,129, 30, 48, 74,115, 21, 34,131, 86, 28, 6, 8, + 41,178, 22,138,129,172,157, 17, 74, 17, 98,204,104,221,232,166,237,114,145, 79,198,170,129,137,204,183,150,138,215,141, 97, 68, +177, 86,154,195, 8, 87, 90,114,144, 4, 79,148,224,142,153,115, 25, 70,222, 46,231,220,102,195, 99, 96, 29, 34, 42,118,220,212, + 37,224,121,214,109,184,103, 11,210,152,104, 19,132, 16, 72, 65, 48, 34,145, 24,158,143, 25, 16,148,195,185, 66,174, 35, 74,102, +235, 85, 93,101,149,187, 45, 50,187,228,250,197, 45,203, 23, 37,235, 7, 11,116,169,203, 23,201, 49,111,254,212, 15, 99,181,226, +226,248, 98,162,209, 77, 44,243,248,169,172,206, 76,230,200, 19,108, 59,100,161,211,124, 6, 77,141, 44,116, 86, 92,247, 35, 92, +173,243,215,190, 78,114, 19, 47,211,192,230, 70, 49,196, 12,239,111,167, 80,148,150, 72,231, 35, 1, 88, 15,158, 83,239,115,122, +155,204,211,101, 10, 57, 95, 55,143,149, 83, 41,157,160, 30, 82,234,140, 1,148,153, 73,110,148, 96, 27, 34,123, 74, 50,151,154, +109,244,236, 72,137,146,240,201,198,211,163,208, 18,206,131, 32, 34,169,180, 98,136,226,101,247, 45, 39, 50, 73,152,168,120, 46, +163, 20,215,253,200,253,166,102,183, 40,232, 17, 84, 66,162,148,164,139,137,218, 24, 98,140, 12,193, 83,105,203,214,141,212,133, +162,241,142,135,210, 32,146,224, 10,201,171, 74,177,171, 37, 94, 8, 62, 95, 20,124, 36, 5, 97, 24,115, 55,231,166,224, 23, 89, +230,155, 57, 62,223,133,220,148,171,172,124,166, 84,185,248,194,250,246,214,219,223,230,151,126,233,231,216,180, 46,131, 85,124, + 98,216, 14, 92,182, 3,149, 45,121,248,218, 13,118,155,130,222, 7, 8, 57,101,205, 76, 64, 35, 73,162, 31, 60, 91, 23,104, 93, +194, 74,137, 53,249, 53, 12, 36, 98, 72,140, 33, 48,186, 56, 61, 88, 50, 39,158, 20,233,221, 52,149,247,158,147,118,228,162,115, +180, 62,131,102, 46,199,108, 99, 25,198,158,232, 3,115,101, 89, 52,101, 22,211,125,243, 99, 94,187, 10,236,123,193,221, 91, 5, +143,174,223, 27,149,124,153,206, 86,146,207, 58, 33,193,131, 18,154,252,250,213,141,226, 70, 83, 48, 43, 11, 14,235, 57,165, 54, + 40,107,176,214, 18,133,192,143,142, 97,219,211,110, 91,132, 53,212,149, 69, 10,232, 6,199,229,118, 96, 24, 29,163,243, 68,159, +208, 66, 82,207, 53,133,209, 84,139,146,215, 15,231, 28, 29, 52, 44, 22, 21, 85,109,176, 69,206, 92, 55,141,102,119,111,134, 20, +145, 79,158,108, 88, 46, 74,234,218, 80, 87, 6, 99, 21,139, 66,113,179, 80,236, 91,195,172,210,232,198,176,179, 44,217,158,245, +180,219,158,110,219,161, 43,205,108,183,192, 26,137,114,129,184,245, 96, 37,221,186,227,234,209, 25,103,127,248, 61,254,232,111, +255, 35,174,126,243,219,168,143, 71,222,252,143,191,204,235, 95,125,192, 31,254,218,111,240,214, 63,120,155,215,191,112,151, 54, + 70, 46, 98,160,182,130,170,176, 88,173,208, 11,195,229, 7, 29, 95,118,138, 97,188,162,171, 74,116,109,249,162, 27, 24,147, 32, +218, 2,105, 45, 97,127,151, 79,198,145, 95,253, 59,255, 59,199,127,237,231, 40, 94,249, 12,183,239, 29,177, 58,184,193,108,181, +135,106, 26,154,101,197,172,177,212, 86,103,122,160,247,232,209, 81, 14,158, 57, 30,237, 28,115,109, 56, 48, 5, 59,163,103,214, +181,236,246, 35,111,218,130,207, 55,115,142, 46, 79,249,209,122,198, 23,234, 25,111, 44, 86,188,214, 44, 89, 21, 13, 69,217,112, + 65,100,102, 5,172,118,216,111,102,220, 61,216,229,196, 40,130,206,205,126,144,154, 31,155,207,168, 4,120,239,113, 49,208, 59, +199,199,235,109, 14, 91, 57,187,130,203, 22,113,118, 65, 26, 60,195,101,159,183, 59, 50,175,156,196, 4,208,249,127, 12,171,178, + 19, 58,187, 48, 25, 82,163, 77,126,182,125, 90, 36,252,255,245,143,148, 47, 79,145,159, 38,226,148, 22, 10, 75,119,182,201,124, +245, 36, 56,216,169,120, 56,111,184,211,204,153, 43,141, 85,134, 72, 98,207,150, 92, 5,207,188,208, 52, 82, 82, 40,195,162,108, +168, 35,236, 38, 65,153, 28,209, 71,124, 20, 84,202,176, 40,106,106, 99,153,233,130,133, 20,212, 50, 79,150,141,176,148,202, 80, +151,115, 36, 54,171,250, 83,162,158,175,168,202, 57,133, 45, 41,164,160,180,150, 89, 89,178,154,213,220, 60,216,227,230,193, 46, +183,247,151, 28,220, 62,228,232,112,193,155,183,110,114,127, 94,242,198,254, 42,111,193,148,102, 43, 18,201, 65,210, 50, 39,103, +126,159,130,254,231,252,252,113, 90,183,199,148, 7,174,235,201, 61,168,140,201, 86,102,154,162,205,203,215,109,130,200,160, 12, +226,186, 41, 51,121, 53, 30,147,160, 52,138, 66, 41,198, 24,137, 19,235,100,155, 34, 66,107,198, 16, 49, 69,197,133,243, 28,218, + 2,132,164, 81,138,185,178,108,100,230,151,100,198,135,153,232,158,229, 11,160, 87,146,138,207, 21, 13, 91,169,179,218, 62, 9, +180, 86,236, 34,121, 79,192,171,218,210, 11, 65, 43, 20, 23,227,128,156,182,202, 3,144,148,101, 37, 37,167,126,228, 94, 81,225, +124,160, 52, 5, 78,106,182, 33,226,141, 70, 26, 67,151, 96,144, 18, 79, 34, 12,110,154,250, 38, 79,122, 97,242,107,164,174,183, +216,230,229, 16,169, 36, 86, 10,130,209, 63, 96, 81,151, 19,143, 56,193,201,199,207,184,248,222,211, 9,101, 39,255,244, 77, 74, +234,151,197, 93,201,172, 50,245,125, 22,169, 44, 22,160, 4,105,116,176,238, 50, 37, 39,201, 9,123, 23,114,135, 44, 21,140,158, +202, 74,132,130,185,214,180,206,103,228,235,208, 35, 83,190,131,131,228,233,118,224,108, 66,143, 18, 32,133,144,115,192,211,244, +166, 49,246,133,170, 92, 10, 73,175,114, 13,168,117, 66, 41, 77,129,100, 87,103, 2,207,214, 7,110,106,195,165,119, 92,186,200, + 43,165,224, 59,237,200, 16, 37,141,200, 69,189, 83,137,116,253,206, 82,217, 7,253,162,129,241,147,234,220,121, 80,130, 82,102, + 20,226, 43,205, 12,161, 20, 34, 6, 42,109,112, 49, 32, 17,184, 24,241,126,164, 52,154, 98, 28, 89, 37,193, 54, 38,110, 21,154, + 93, 45,105, 99, 98, 68,114, 71, 75, 78, 82, 96, 12,129,171,160,178, 40,143,240, 50, 16,199, 95,175,228,253,203, 53,141, 79,121, + 69, 86,218, 23,144,130, 95,248,247,127,129,187,175, 30,177, 94,119,180,219, 22, 55,142,140, 19,225,109,103,177, 64, 72,197,106, + 86, 49,159, 23, 64,166,227, 73, 33, 24, 66,162, 31, 61, 67,240, 88, 18,221,144, 3, 92,140,150, 36, 9, 33, 10, 66,140,196,152, +178, 47, 61, 68, 34,249,207, 17,129,144, 80,164,108,183,233,187,145,181, 11,108, 83,196, 13,142, 34,230,200,213, 49,100,238,128, + 78,153,141,220, 1,191,246,214, 35, 68, 23, 41, 37,136, 33,113, 62, 70,190,114,183,225, 39,238,204,248,185,210,240, 83,175,214, +188,118, 88,210, 61,172,216,155, 75, 78,199, 8,165, 64, 42,197,172, 52,212, 70, 50,183,150,253,197, 46, 50, 66, 81, 87,216,178, + 64, 11, 73,236,115,116,106,136,129,166,170, 88,148, 6, 23, 2, 39,235,142,227,179, 13,237,101, 71,215, 13,120,159, 83,241, 12, + 18,165, 65, 25,133,109, 10,230,149,193,216,220, 56, 6, 35, 73,149, 70,107, 56,220,105,176,133,102,177, 83, 83,149,134, 40, 21, + 74,201, 28,202,151, 18,133,139,148, 61, 36, 33, 24,172, 64, 43,201,106,127,198,114, 89,226,189, 39, 8,193,191,250,149,223,229, +189,111, 62,226,198, 98,135,245, 39,151,124,247, 15,255,132,239,254,238,159,240,123,255,203, 31,243,248,183, 62,200,233,119, 40, + 36, 1, 22,145, 31,254,233, 31,226,222,143,127,158, 94, 25,126,235,215,255, 25, 7,183,143,184,212,138,221, 90, 83,219,108, 13, +221,169, 44, 39,251, 13,247, 14,231,204,223, 63, 99, 45, 34,135,165,102, 39, 68, 46,158, 93,177, 45, 11,234, 89, 65,219,123,214, +169,192,124,229,171,148, 70,177,218,171,152,151, 6,163, 20,218,228,207,122,109,196,139, 39,182,117,158,114, 24,144,219,145,153, +246, 28, 10,201, 13, 93,240,197,162,226,168, 42,121, 80, 46,184,191,115,131, 7,119, 30,242,224,246,125,142,118,110,113,115,182, +207,222,114,159,157,131, 61,234,162,166,218,205, 81,153, 85, 80,244, 30,134,228,152, 23, 5, 55,155, 37,141, 49,236, 23,146,247, + 7, 15, 72, 66,138, 52,140, 28, 25,195,156,196,243, 97,195, 63, 60, 59, 39, 73,248,194,162,164, 22,158,139,147,233,110,238, 70, + 16, 2, 33,114, 40, 19, 58,175, 43,179,216, 52,252,121, 32,135, 41,243,218,211, 76,159,111, 61,177, 33,162,255,139, 23,245, 79, +107,139, 94,168,233,203,188, 54, 45,154, 12,194, 41,243,234,118,183, 48,220,168, 13, 71,166,100, 89, 20,204, 76,137, 4,106,165, + 8,164,156, 82,153, 50,169,177,138, 17,225, 6,172,243, 84,222, 81, 41,203, 24, 35, 85, 81, 33,133,164, 48, 10, 37, 36, 18, 65, + 74,130, 74,107,164, 0,107, 42,170,229, 14, 66, 90,116,105,145,218, 98,154, 6,101, 76,230,195,199,136, 20, 57,153, 82, 41, 77, + 89, 55,104,101, 41,139,146,217,124,151,133,169,185,189, 60, 96,175,106,216,173, 27,238,204,230,216,194,240,112,103, 65,242,129, + 79, 4,164,249, 33,209,119,153,143, 30, 35,233,251, 20,116,241,233,194,206,167,132,188,215,156, 20,117,189,158,143, 47, 99, 70, +175, 29, 60, 90,252,169,190, 64, 76, 95,188,117, 17,167, 37, 46, 38, 26,153,208, 90, 35,164,230,156,140,204,141, 49, 23, 79, 23, + 35,117, 89,210, 37,197, 40, 36, 27, 20,133,212,204,164, 96, 43,212,196, 9, 17,211, 10,126, 66,112,203,130, 59,182,224,105,130, + 91, 90, 83,107,197, 59, 18,238,170,130,103, 4,142,164,224,189, 16, 88, 41, 77,157, 18,167,198,114, 11,120,230, 51,151, 69, 24, +201,101,146,252, 84, 85,225,130,231,245, 89,195,190,150, 84, 86,243,165,217,140,189,186,225, 94, 97,121, 88,215,156,166,200, 37, +146,116,157,228, 70,200, 53, 48, 94,231,128,144,201,173,215,129, 95,218, 66,146, 36,242,249,246, 7, 43,234, 33,228, 78, 75, 76, +119,246, 52, 37,241,148, 38,119,184, 97,202, 85, 15, 33, 23,255,235,187,210, 56, 78,111,244,204,114,167, 29,178,186,187, 31,243, +135, 69, 77, 10, 63,171, 94, 78,235,165, 69, 68, 88,104, 77, 39, 97, 97, 45,235,209, 49, 51,154,110, 74, 20,218, 6,143,210,138, +139,126,186,133,167,188, 14, 15, 62, 76,112, 28,253, 18,126, 35, 68, 22,124, 69, 8, 99,164,148,217,163,222,135, 64, 35, 5,109, +140, 40,160, 19, 76,111,116,193, 71,193,115,168, 36, 39, 67, 96,144, 2, 23,179, 55, 49, 75,193, 95, 6,138, 76,161,228, 83,145, +141, 47,188,168,103,189,231, 51,203, 25,125,138, 84, 74,224,147,160, 16, 80, 75,141,115,142, 82,105,180,204,162,182,165, 82, 24, + 50,145, 46, 41,145,255, 10, 37,153,135,196, 25,130, 61,173,168,148,230, 56, 74,156,152,254,174,126,200,239,114,165,114,160,139, +148, 89,128,120,189,194,113,126,210, 61,100,229,100, 88,204,248,202, 23, 31, 50,244,158,174,115, 4,231,240, 19,250, 85,164,196, +195,215,142,152,213, 5, 59,179, 34,115,117, 2, 72, 45, 9, 33,178, 25, 29,151, 87,158,110, 12,164,152,111, 65,102,250, 62, 37, +146, 20, 18,129,196,232, 34, 99,200,104, 74,145, 34, 86, 64,149, 50, 38, 22, 31,216,142,158,245, 24, 24, 59,135,115,142, 2,120, +238, 60,235, 20, 72,222,209,199,192,108, 49,231, 81,187,229,215,255,201, 7, 60,146,129,247,206, 28, 31, 92, 57,134, 51,207,199, +207, 29, 31, 94,246, 28, 24,184,245,165, 59,252,200,195,215, 41,142, 14,184,163, 3, 63, 84, 43,126, 98, 94,177, 42, 18,181, 16, +164, 4,203,210,114,179,217,161,158,205, 40, 22, 53, 86,233,204,100,146,249,119, 22, 2, 44,230, 53,135,179, 18, 66,224,252,116, +195,241,211, 51,182,235, 43,252, 48,226,188, 35, 57,143, 74,137,224, 61,206,193, 48, 38, 98,161,137, 74,210, 43, 65, 42, 13,205, +178, 64,156,111, 40,254,245, 19,222,189, 88,227, 17, 72,151, 72,218, 80,104,157, 5,133, 36,132,139,200, 36,136,133,202, 41,130, +217, 9,136,213,138,157,155,115,102,251, 53, 95,254,201,207,241,141, 47,191,198,215,239, 46,217,185,183,199, 87,190,244, 6,255, +252, 95,109,217, 14, 11,228,113, 64,208, 79, 69, 29, 22,111,214,232,162,228,225,205, 5, 95,255,252, 17, 15,126,244,179, 60,223, +175,216, 43, 53,149, 75, 84, 74,162,173, 70, 22,146, 7,187, 37,197, 97, 69, 58,168, 89,188,187,229,234,124,160,235, 70,254,232, +120,160,154, 43,124,136,140,235, 17, 51, 4,118, 18,148,203, 18,229, 19,138, 68, 97, 36,113, 59,146,188, 71, 38,137,116, 1,209, +142,212,253, 72,108,183,104, 34,183,133,230,205,178,225, 70, 89,112,179,110, 88,205,102,212,203, 5,229,206, 28, 93, 26,172,178, + 24, 4,182, 44, 49,179, 10,213,212,232,202,162,171, 2, 85, 20, 88,107, 88,120,205,111, 15,129,207, 53, 13,101,213, 80,107,139, + 72,145, 66,120,158, 62,187, 36,125,112,204, 7,255,215,247,216,185,111, 24,199,150,199, 23, 23,188,211,122,126,246, 96,151, 47, +238, 30,242,234,206,146, 15, 82,160,221,110, 50,222,118,162, 41, 10, 49,185, 69,234, 10,154,102,138, 48,253,148, 86,136, 41, 2, +238,122, 82, 20,249, 62,154,113,157, 67,254, 44,253, 69, 7,159,235, 33, 71, 22, 57,113,171,106, 96, 94,231, 7,180,214, 44,172, + 98,169, 36,123, 11,131, 1, 30, 86, 53,145,108,169, 45,165, 32,166, 56,125,174, 96,244,217,109,161,200,216,106, 43, 4,115,105, +176, 73, 98,173, 38,133,152, 83, 19,125,100,219,181,108,251, 43, 68,116, 8, 4, 82, 40,164,136, 24, 85, 32, 85, 66, 8,131, 42, + 12, 56,151, 49,206, 82,230,144, 24,231, 16, 90,163,109,129, 68, 99,108,133,178, 21,214, 52,216,170, 65,106,141, 45, 42,138,162, + 38, 42,195, 65, 61,103, 67, 98, 89, 21,124,243,108, 64,223,219,197,159,158,229,154,108, 20,233, 26, 64, 38,167, 9, 94,235,191, + 24,126,220,232, 28,212, 99,228,196, 43,153,238,235, 98,138,245,142,113, 18,253,102, 56, 24, 70,210, 38,184, 97, 45,181, 53, 12, + 82,146, 84, 14,185, 84,202, 18,100,110, 70,163, 84,196, 32,152, 87,150,109, 18, 84, 74, 19,164,160, 81, 6, 33, 5,133,146,116, +241, 90,155, 52, 21,118,165,153, 11,197,171, 69,197, 73,204,191,155,165,178,108, 17,116, 40, 66,146,220,144,138, 36,178, 88,120, + 30, 35, 31, 2,165, 41, 9,228, 96, 46,165, 21, 59, 82,114,171, 50,220,211, 37, 91, 4, 51,105,216, 74,197, 74,149, 12, 74, 83, + 40,205,205,178,102, 16,130,211, 48,109, 42, 70,247, 82,139,161,204, 20,179, 42, 94,164,222,161, 45, 74, 25,146, 82, 4, 85,254, + 37,228,169, 95,175, 76,174,253,155, 77, 61, 21,177,235, 28,239, 79,197,203,169,201,203,221,141, 89, 24, 81,152,233,126, 49, 21, +160, 41, 44, 5,145,253,206, 47, 86, 11, 50,175,151,157, 53,204,180,230,187,155, 45,243, 66,179, 52,134, 53,153, 94,212,198, 64, + 7,116, 78,112, 17, 2, 98, 12,153,169,155, 34, 47,118, 52, 98,250, 30,194,212,125, 43, 5, 62, 32, 75,205,166, 31,153,149,138, +218, 26,146,247, 44, 11,203,214,123,218,224, 9,192, 54, 38,138,152, 56, 13,137,237, 48, 78, 65, 41,215, 30,252, 63,251, 65,158, + 86, 38, 76, 63,127,120,201,163,126, 60, 70,110, 53, 22, 71, 98, 71, 74,118, 76,193,102,220, 98,180,129, 48, 16,164,193, 6, 79, + 99,114, 51, 82, 41, 73, 36,161,149, 68, 75,197, 73, 74,236, 33,121, 26, 3, 43,109,176,181,228,233,224,167,201,156, 60,141, 79, + 62,234, 23, 98, 69,145,166,135,213, 84,153,125,142,171,187,120,118,204, 87,127,236,135,113, 99, 94,135,199, 4, 33, 36, 54, 93, +143,235, 3,139,221, 37,187,243, 38, 39, 1, 78,248,211,124, 51,207, 2,184,182,243,116,131,207, 73,142, 49,162, 84,142, 61, 84, +211, 41, 98,188,158,210, 67,164,154, 4, 40,253,132,142, 44, 82, 78,243, 75,131,231,162, 27,113,221, 64,233, 61,142,200,198, 59, +182,126,200, 27, 38, 91,112,120,231, 38,207,187,150, 63,126,247,241,116,190, 73, 83,124,108,130, 70, 48,158,120,254,205, 89,207, + 31,111,174, 8,203, 72, 89, 85,188,243,241, 83,202,229,140,163, 89,195,254,238, 62, 7,209,115, 11,248, 92,221,176, 55, 91, 98, +171, 26, 91, 26,202,194, 98, 11,149,213,185, 8,162, 15,220,152, 87, 28, 46, 75, 84, 72,156,157,181,156, 95,158,211,119, 67, 78, +132,242, 25, 23,156, 98, 32,198,252,190, 12, 41,226,198,196, 0,244, 72, 22,115,203,124,102,184, 58,121,206, 91, 31,124,196,163, + 16, 56,187,234,185,120,118,198,187,223, 62, 97,126, 50,240,222,224,217, 45, 53, 58,129, 83,137,160, 97,227, 3, 94,100, 11, 91, + 2,124, 18,140, 82, 49,147,146,135,115,195,106, 89,179,191,204,119,208,159,255,107,175,243, 31,253,228, 3,126,242,139,183, 88, +251,199, 60,126,255, 2,137,227,175,252,215, 63,199,143,191,114,192, 50,228,237, 87,153,224,187, 23, 29,231,143, 79, 57, 18,154, +198, 72, 76,109, 16, 38, 71, 69, 26,165,184,122,187, 69,188,239, 49, 79, 7,206, 79, 47,232,195, 5,118, 54, 67, 95,110,177,155, +150,230,170,231, 48, 36,106,163,120,181,150,124,205, 74, 62,155, 34,175,199,192, 43, 41,242,211,179,146,215,140,224,118, 33,185, +242, 3,201,195,129,210,220, 87,134, 90,231,237,200,162,154, 97,234, 18, 89, 24, 68, 93, 34,173, 65, 40,137, 72, 18, 33,115,244, +174,104, 42,196,162, 0,171,145, 90, 33,149, 68, 43,197,225,178,225,212, 5,222,108,106,246,139,138, 91,166,228, 63,251,247,126, +140,159, 53, 21,127,239,234,156,120, 88,243,157,147,142, 63,252,232,146,119,158,174, 73,223, 59,231, 27,111,222,229, 70, 85,211, +166,200, 31, 5,199,152, 52,244, 30, 49,246,249, 4,165, 64, 20, 5,114, 81,243,250,174,197, 91,155,197,174, 62,188, 12, 18,145, + 50,175,129,175,201,142,110,204,214, 55,247,255, 67, 48,167,116,142, 41,109,106,216,153,229,130, 94,217,188, 58, 45, 21, 43,171, + 40,132,228,103, 87, 21,135, 2, 94, 45, 11,130,148,200, 24, 41,164,198,165,152,131, 26, 73,196,224,185,232,182,180, 33,144, 82, + 30, 52,124, 10,104, 18, 82,105, 84,136,156, 15, 3, 2,193,218,245,140, 33,112, 25, 70, 92,138, 68,239,208, 74, 99,141, 37,165, +136,110, 26, 68,200, 14, 22, 97, 44, 20, 10,161, 20,201, 59,132,202, 9,139, 66, 8,164, 84,153, 68,109, 43, 32, 33,172, 70, 74, + 69, 82,154,164, 20, 90, 25,182, 8, 74, 83,208,138,200,157, 18,196,122,203,113, 31,241,101, 69,242,144, 76, 65,180, 53, 41,138, +108,115,150, 6,172, 68, 76, 91,222, 63, 79,233,211, 47,239,200,105, 42,224, 70,189,200,137,167,152, 10,237, 20, 20, 99,203,146, +160, 21, 86,106,154,210, 18,165, 66, 75, 67,105, 52, 87, 99,162, 49,134, 36,179,184, 13, 4,115,109,137,133, 69, 36,155,183, 33, + 74, 81, 73, 75, 75,160, 81,146,203,148,240,198,144,194,116,198,156,148, 79,181, 50, 84, 41,112, 46, 4,149, 54, 52, 34,242, 84, + 40,246,101, 22,167, 5, 96, 76, 2, 39, 37, 59, 82,242, 28, 8, 41, 32,148, 69, 16,105, 80,220, 22,154, 55,230, 11, 62,244, 35, + 75, 85,176,197,177,178, 11, 62,113, 61,171,114,198, 58, 65, 79, 98, 71, 75,122,105, 88, 71,159, 27,153,110,152, 26,163,105,237, + 46, 5, 66, 23, 40,109, 40,180,196,203, 44,162,147, 50,253, 37, 8,229,174,189,155,117, 57, 69,135,166, 79,201,237,139, 23,222, +194,151,164, 32,145,249,239,238,218,214, 96,115, 81, 15,254,165,216, 44, 77,121,226,253,244,239,146,135, 82,179,144,130,211,126, +224,235,111,126,142,243, 71,143,248, 36, 37,106, 43, 57,117,217, 50,225,250,200,243,216,177, 91, 20,156,140, 46, 79,174, 74,229, + 78, 79,126,106,101, 99,213,203,239,187, 80, 68, 23, 40, 76, 14,162,217,211,129,193, 90,206,219,204, 11, 54, 90,178, 29, 61,117, +130, 51, 36, 55,172,224,217,116,147,207, 96, 23,253, 41,110,190,250, 62,183,180,235,117,146,134,232, 9,253,192, 31,159,110,248, +252,193, 18,105, 52, 79,182,107,246,170, 26,215,247,152,162, 98, 24,174, 16,186,196,122, 15,182,164,247, 89,201, 95,105,141,247, + 57,208,224,116,116,220, 16,154, 45, 9,147,200, 97, 20, 35, 80, 68, 24, 38,223,250,181, 53,240,251, 61,127, 12,153,206, 4, 88, + 43, 1,205,213, 69, 32, 78, 83,202,188, 44,233, 59, 79,112,129, 16, 67, 6,172,132, 72,165, 37,227,224, 81, 50,177, 29, 60,155, +193,177,222, 58,116, 27,217, 93, 20,212, 70,226, 67,194,170,156, 84, 38,175, 51,129, 72,116, 41, 7,168, 68,160, 21,130,128,160, +209, 57, 77,105,150, 96, 45, 4, 43,165, 24,130,100, 85, 20,108,250, 54,247,129, 68,202,202,226,214, 87,217,214,135, 7, 27,225, +142,205, 10,119, 18, 44, 53, 92,193,229,123, 29,191,117,252, 1,247,127,102,203, 7, 62,112,218,119, 28, 23,138, 55, 23, 59, 12, + 85,195,221,221, 5,183,186, 17, 37, 20,167, 68, 68,128, 69,109, 49, 70,177,141,145,203,148,137,178,115, 33,144, 33,209,141, 30, + 70,135,244, 9, 27, 34, 82, 41,164, 16, 83,202, 85, 66,248, 97,202,156,246,244,222,177,137, 3,108,103, 92,218,132,208, 13,255, +242, 60, 17, 67,164, 54, 6, 33,225,160, 40,217, 21, 35, 95, 60,118,252,195, 63,254, 61,126, 39, 58,110,127,253,135,152,223,152, + 99,154,130,164, 53,203,202,210, 21, 5, 99, 74, 68,173, 9, 62,243,248, 69, 20,164,144, 25, 28,131,212,148, 18,202,251, 13,175, +222,126,149,255,230,103,255,115,206,223, 57,230,119,199,192,177, 10,108,149, 68,196,136, 1,194, 24, 56,253,149,223,231, 79,254, +231,223,231,183, 80,252,213,255,224, 62,191,248, 95,252, 13,230,159, 57,152,214,152,130,219, 63,126, 3,126,244, 16, 98,228,205, +206,227,207,122,190,245,127,188,197,193,189, 67,218,222, 79, 28, 1,137,117, 26, 61, 72, 74, 41, 40,102, 51, 68, 61, 67, 76,228, +200,250,170, 67, 94,108,185, 85,150, 60, 25, 19,115, 37,169,181,162, 68, 48,223,153,163,119,102,136,114,194, 23,199, 4,163,200, + 19, 72, 57,137, 52,108, 49,173, 58, 65, 76, 42,100, 17, 37,210, 40, 30,116,154,187,171,125, 60, 9, 71,194,141,240,247,255,241, + 31,240,175,135, 62, 7,144, 72,133, 44, 21,194, 42, 36, 37,241, 48,241,203,223,250, 46,255,195,143,126,134,181, 54,108, 66,132, +189, 5,194, 42,210, 39, 37,162,189, 36,181, 27,192, 19,235,130,103,193,114, 41, 4,204, 42, 4,146,212, 78, 32,154, 97,132,226, +122, 16,136,223,159, 16,247,255,182,118,215, 21,203,195, 57, 93,146,220,222,169,137, 72, 78, 17,108, 66, 70, 98, 43,153, 27,183, +175, 47, 53, 7,149, 97,134,193, 5,120,220,118,148,117, 69, 55,108,153,219, 18, 43, 2,155,161,231,180,109,249,216, 15,156,219, +134,187,141,100,140, 30,145, 52, 79, 66,207,118, 27, 16, 66,178, 50, 37,207,198, 30, 69, 68, 4,143, 8, 3, 39,192,205,114,134, +211,185,161,211,245, 44,247,245,171, 26,233, 2, 30,137,138,145,224, 71,164, 85, 48, 90, 82,202, 91, 9,193, 20,196,148, 34,178, +172, 72, 49, 98,154,138, 24,242, 48, 23,181, 99, 87, 72, 68, 81,177, 34,178,213,138,163,242,140, 47,204, 12,143, 29,156, 13, 35, + 66,106, 46,124, 96,140,224,194, 4,240,217, 76, 1, 60,166, 32, 13, 49,115, 78, 94, 12,138, 38, 59,163, 82,132,178,196, 54, 5, +152,130,170,202,110, 33,172,166, 2,182,218, 80,106,141,139,158, 3,157, 73, 17, 86, 91, 74,107,115, 70,133, 82,172,180, 70,107, + 3, 8, 10, 41,144, 82, 19,133,162, 34,114, 28, 18, 21,137, 82,229,230, 98, 95, 23, 92, 12, 14, 77, 68,135, 64, 48, 10,229, 50, +113,242,129,214, 60,119, 35,162, 44,152, 69,176, 9,190, 23, 35,175,105,120, 39, 38,142,164,164, 6,158,197,200,109,224, 17,208, + 76,224, 27,162, 71, 34,248, 90, 93,114,219,104,206,188,227, 78, 81,115,236, 28, 11,179,195, 24, 71,110,207, 86, 92, 12, 27,118, +140, 69,104, 67, 43,224, 78,225,185,223,236,115,188,217, 82,204, 12,111, 61,223, 18,165, 70, 12, 46, 71,217, 18, 40,129, 82, 40, + 14,136,160, 18,131,212,127, 9,147,250,167,163, 12,109,153, 63, 0,122,234,180,124,152,248,180, 83, 60,166,184, 78, 12,155, 80, +176,106,154, 28,211,100,123, 99,154, 52,167,238, 48,139,240,166,197,147, 15,168,210, 50, 83,138,211,205, 26,173, 52, 94, 73,188, + 80, 92, 37, 40,147,162,149,176,246,145,171, 97,164, 16, 34,231, 18, 95,159,203,164,192, 22,138, 48, 38, 48, 10, 37,196, 11,135, + 4, 70, 17,134,145,206, 37,118,172,164, 78, 57,181,205,167, 72,244,121,157,213, 35,152,201,200, 73,159, 88,143, 97,106, 24,228, +203,117,126,186, 78, 81,147, 47, 15, 72, 82, 76,234, 73, 61, 53, 0,185, 38,141,201, 51, 55,146, 89,105,114, 67, 33,166,147,247, +208, 83, 26, 75,240,142, 78, 8,230, 72,198, 24,209, 54,195,254, 21,146, 32, 52, 90, 66, 23, 35,143, 99, 64, 10,205, 19, 38, 11, + 70, 63,117,117,147,157,231,229, 42,241,207,110, 87, 66,214, 22,148,134, 31,255, 43, 63, 65,140,208, 94,181,116,109, 75,187,237, + 40,138,130,161, 31, 80,210,178,183,191,195,173,221,134,224, 35,150,140, 56,236, 92,164, 29, 3, 97,140, 92,181,142,209, 7, 54, +206, 83,151, 58,135,183,136, 44,164,243, 41,209,133,124, 23, 43,132, 96, 12,137, 33,229, 48, 28,231, 35, 54, 69,108,231, 24,122, + 71, 57, 56, 86, 81, 32, 37, 84, 64,116,129, 24, 50,242,240,193,141, 67,222,251,224, 17,239,157, 92,241,122, 23,121,254, 73,128, +117,128,165,130,199, 14,250,200, 44,129, 38,113,184, 48,216, 16,168, 14, 42,214,231,125,158,104, 54,103,180,209,241,165, 47,125, +137, 27,111,188,194,182, 48, 92,110, 91,170, 4,203,101,195,124, 86, 80, 89,195,210, 40,118,203,130,189,121,137,150,146,161,115, +116,151, 45,169,235, 41, 68,182,134, 25,157,225, 14,122, 90, 20,232,148,208, 50, 82,132,132, 30, 28,202, 57, 70,239,105,235,154, +205,108, 70, 82, 21,171, 24,216,155, 27, 78,188, 64, 12, 61,103,238,138,127,122,118,142, 25,215,188,251,157, 15,233,223,126, 76, +251, 27,223,228,157,247, 79,248,253,223,121,143,187, 23,145,117,109,184, 24, 29, 73, 75,180,149,248, 49,135,197, 92, 33,216, 2, + 49,102,151,136,239, 28, 91,153,120, 63, 37,250, 82, 19, 77,129,145, 26,143, 96,140,129,113, 12,188,242,230, 29,254,229,123,239, + 99, 30,141, 60,250,246, 57,255,244,127,251, 67,126,225,111,254, 8, 98,178,194,166, 33,226,175, 6, 82, 76, 25, 7, 92, 26,110, +125,227, 30,205,221, 29,246, 63,187, 98,247,181, 93,230, 71, 11,138, 69,133, 80, 18, 93,106,180, 80, 40,163, 81,133, 38, 78, 13, +243,198,121,198,152,185, 2,135, 83, 20,239,222,124, 78,185, 63, 71, 86, 57,194, 22,159, 72, 99, 36,174, 59,146,115,164,174, 39, + 57,135,176, 42,127,212, 11, 77,242,137, 56, 6, 92, 63, 18,188,199, 71,159,243,173, 75,131,170, 11,236,254,146,195,197, 46, 55, + 69,197,126,165,113, 54,242,180, 31,137,195, 72,252,206, 25,137,192,189,253,146,191,253,181, 47,243, 57,101,249,213,147, 99,174, +124,204, 83, 94, 85,228, 38,216, 84,224,122, 68,187,165,247,242,101, 64,134, 49, 8, 49,129, 61, 72, 19,123,252, 58,222,242, 83, + 39, 68,173,255,252,132,121,157,139, 81, 90,104,230,168,229,140,207,237,204,120,184,187, 96,111,209, 80, 88,205, 65, 83,240, 60, + 66,144,137, 74, 27,172, 12,252,120, 83, 49,183, 42, 67, 84,124,158,194,207,183, 3, 49, 68, 6, 55, 82,144,159, 63,111, 11,120, +171,218,227,222,124,201,221,253,219, 24,109,179, 64,109, 24, 56,139, 35, 67,244,180,192,198, 15, 92,185,142, 77,116,108, 82, 2, +107, 89, 43, 65,221, 52,216,162, 64,218,124, 42, 10, 49, 76,196,115, 8,163, 35, 77, 27,197,224,186,252,222, 16,146, 20, 28, 66, + 24,146,202,226, 87, 89,214, 89,189,164, 44,113,130,225, 68,107, 9, 68,162, 46,217, 4, 71,176, 22, 93, 85, 72, 43,121, 80, 87, +152,218,240, 96, 94,113,119, 86,112,123, 81, 49, 8,201,225, 94,205,185,158,234,133,212,249,249,101,235,151, 89,225,218,192,124, +206,237,221,138,195,186,164,153, 21,172, 26,195,194, 90,118, 11,197,110,101,217,151, 26, 37, 51, 91, 98,161, 11,230, 69, 73, 97, + 20, 51, 91, 17, 68,100, 49, 21, 72,133,100,174,114,240,151,151,154, 65, 8, 46, 93,100,174,115, 2,227,220,102,232, 76,235, 70, +106,149,127,239, 27,239,169,100,118,242, 52, 36, 28,146,221, 20, 25, 66,126,110,245, 66,240,154,214,188, 59,140,220,183, 5,199, + 33,178,163, 36,149, 82,156, 35,185, 15,124,148, 2,114, 10, 2,251,233,106, 70, 29, 97, 97, 21,115, 99,240, 66, 80,153, 76,180, +171, 76, 65, 31, 60, 11, 83,209,138, 68,166,241,123,140,214,184, 40,153,171, 68,151, 12, 43, 3,167, 67,200,246,241, 24,121,189, +106,216, 81,146, 90, 10,110, 74,201,162, 40,177, 66,253,128, 69, 93, 79,235,165,235, 44,118, 57, 81,129,196,148,223,157,166, 34, +173, 39,240,252, 11, 68,172,123,121,167, 26,211, 68, 26,242, 83,138, 88,238,170,178,170,217,230, 73, 83,128, 42,203, 44,136, 52, + 5, 59, 90, 65, 89,224,164,101,140,137, 70, 91,158,120, 71, 23, 34,193, 22,132,190,207,228,159, 77,159,191, 23, 99,144,133,196, +162, 40,172,197, 39, 71,140,137,125, 83,208,199,136, 85,138,224, 60,193, 7,118,180, 96, 16,208,133,128,137,130,109,242,148,211, + 26,204, 36, 56, 29, 60,173,144,249,254,239,252, 20, 65,153,160,170,242,207, 48, 78,105, 76, 97,122, 16, 88, 59,145,244,166,230, + 71,100,111,230,170,177, 36,159,216, 45, 10, 90, 55, 96,101, 86,226,187,233,181, 49, 86, 51,142,142,178, 52,136, 0, 73, 78,164, +163,152, 94,172, 78,157,146,252,193, 38,135, 3,188, 72,107,187, 22, 38, 94, 43, 39,191,223,237,170, 46,167,219,191,224, 75, 95, +255, 42,101, 83,208,111,123,218,245, 38, 99, 5,180, 65, 70,193,197,249,134,162,156, 51, 95,212,204, 27,141, 84,130,118, 72,244, + 62,208,247, 1, 23,161,247,142,182,119, 88,171,184,123,208, 32,200,247,248,156,214, 22,179,149, 45, 68, 90, 31,232, 67, 64, 8, +145,197,250, 46,160,131,167,234, 51,107,125, 24, 28,125, 8, 60,139,142, 62, 70, 26, 41, 25, 82, 98, 37, 21,175,220, 62,228,195, +199, 79,184,250,246, 57,247,172,228,246,107, 37,162, 86,188,118, 88,112,187, 11,252, 59,243,130,207,110,115, 51,240,229,160,216, + 93, 74, 52,176,187, 44, 16, 8,246, 2, 92, 68,199, 16,224,141, 55,239,243,218,103,110,113,220, 58,174,250, 1, 91, 21, 20,133, +166, 41, 52,133, 82,236, 46, 43,234,202, 98,164,160,219, 14,108,215, 45,105, 24, 49, 66, 80, 26,141,145, 18,155, 18, 50,100,171, +158,140, 9, 69,206,153, 55, 17, 52, 17,213, 57,180,119,136, 33, 97, 48,244,197,140,131,253, 93, 98, 57, 39,154,138, 43, 13,101, +123,201,237, 30,158,186,142,195,214,113,233, 6, 94,237, 19,207, 66,135,252,246,187, 92,125,247, 9,255,228, 55,254, 57, 79, 30, +117, 60,122,188,229,195, 62,208, 91,141,208,146, 46,130, 12,158,174,117,124,180, 30,248,206,105,199, 58, 37,164,150,124,102,101, +241, 66,147,140,230,208, 9,182, 50, 49, 68,197,236, 51,175,242,229,159,126,157,195, 7, 37,238,189, 51,254,207,255,233, 55,249, +233,191,241, 21,164, 80,184,179,129,177,115, 4, 41, 80, 66,162, 76, 78,181,147, 11,139, 40, 52,178,204,235,240, 24,179,203,196, +141,121,122, 39,228, 7,125, 18,137, 97, 12, 92, 56,135, 46, 13, 61,176, 50, 57, 4,104, 86, 91,244,117,218,152, 75,132,103, 91, +134,247,143,241, 31,126,194,248,201, 49,227,232, 16, 49, 32,166,160,161,216,142,248,193,227,186,158,182,235,184,188,220,224,198, + 1, 93, 40,164,209, 8,173,161,208,116,222,211, 38,193, 85, 10,196,148, 40, 45,168,186,228,188,214, 68, 45, 56,247,240,209,211, + 71,252,183,111,125,151,231,103, 93, 46, 30,243, 69, 86, 52, 47, 26,196,238, 46,236,237,193,124,137,120,126, 9,174,205,197, 68, + 76,226,223,186,156,232,141,226,229, 42,254,211, 27,184, 79,255,249,186,200,235, 38,175,150, 15, 14, 88,204,107,126,226,104,151, +251,243, 57, 55,155,134, 90, 27,118,148,228,196, 7, 90, 1,253, 20,203,176, 39, 36,187, 5,220, 84,185, 9, 47,133,224,184, 31, +248, 23,207,214, 84, 74,240, 30,145,161,168,248, 94,189,226,247,203, 21,174, 90,240, 87,239,222,227,160,168, 88, 53,187,196,144, +232, 72, 28,183, 3,155,152,136, 41,224, 98, 96, 27, 3,231,126,196, 9,193, 58, 38,188, 18,216,186,196, 24,203, 40, 35, 42, 9, +134, 20,137, 50, 15, 55,227, 56, 18,194, 72, 26,122, 82,136,200, 20, 73,110, 64, 40,155, 61,255, 73, 65, 85,101,207,182,148, 36, +163,242, 57, 74, 11,164, 81,180, 33,209, 7,199, 32, 37, 99, 76,180,201,179, 99, 42,148, 49,220,169, 42,180,206,246,180, 85, 61, + 99, 85, 88, 6, 45,169,235,130, 81,104,196,188, 33,212, 85,174, 37,139, 6, 22, 85, 22, 15,214, 5,119, 87, 51,144,154,210, 42, + 42, 99,137, 72,246, 75, 75,161, 13, 23, 94,176, 83, 91,108,212, 84, 69,241,162,168,121, 18,141,170,112, 49,167, 74, 90,153,165, + 95, 73,106,208, 2,147,160, 46, 10,182,227,136,143, 9,143, 32, 6,135, 16,138, 75, 63,144, 98, 96,144,137,198,185,156,149, 78, +100, 39, 5,108,206,240,100, 38, 18, 46, 36, 54, 66,112,168, 13,143,253,192,131,178,225,210, 59, 82,138, 44,129,143, 8,184,224, + 16, 62,113, 71, 27, 14,165,226,176,214,168,144,144,198,190, 8,146,140,147, 91,170, 52,150,203, 16, 88, 25,195,218,141, 84,182, +100,240, 30, 41, 18,103,163, 67, 39,176, 82,115, 44, 2,171,178,226,117,163, 9,202, 98,148,226, 64, 9,148,212, 52,133,100, 33, +220, 15,170,126,159,146,217,132,205,147,185,158,176,175,218,188, 12, 88, 86, 58,123, 62,153,140,253,253,116,131,239, 93,158,212, +245, 52,237, 42, 61, 77,187,215,201,110,217,248,159, 1, 16,144,148, 66,148,138,186,176,180,218,160,149,194, 40,205,229,116,243, +174,180,229,185,243,132,190,195,206, 23,140,235,171, 73,192,150,183, 0, 73, 43, 42, 33, 72, 41,210, 40,137, 16, 18, 99, 36,189, + 15,153,123,110, 52, 12, 35,235, 40,184, 91,105, 46, 93,160, 86,138,153, 84,156,199,196, 92, 75,206, 98,224,196,101,228, 96, 34, +195, 83,242, 14,138, 44,240,211,122, 42,188,241, 83,170,127,159,109, 35, 34,253, 41,110,244,105, 23,121, 56,171, 24, 68, 94,255, +244,221,128, 22, 9,161, 50,227,184,237,123, 10, 99, 81,225,165,176, 47,251,230, 51,135,121,144,138,167,222,113, 25, 36, 65,155, +220, 16,197,137, 12,120,205, 7, 78,225,251,223,255,164,156,110, 86,112,247,238,125,118,247,119, 25,122, 71,244, 14, 31, 34,221, + 48, 98,180, 33,196, 72,221,204,152, 47, 22, 28,173, 26,148,140,249, 53,117,105,186,149, 7,146,136, 8, 37, 9, 99,192, 88,197, +178, 54,140, 33,101,180,233,148, 19, 45,128,113,186, 1, 54,147,222,192,133,144, 93, 61, 41, 18,134,192,170, 15,120, 23,152,161, +216, 79,145, 48, 6,130,132, 74, 43, 86,203, 57,223,124,250,148,183, 30, 95,240,137,243,188,211,122, 78, 54,158,167,223,107,121, +114,191,224,116,166,249, 23, 91, 79,120,189,224, 96, 71, 50,215,154,102,167,228,167,230, 11, 22, 46, 81,140,129, 98, 49,167,243, + 45, 85,185,195, 27, 15,111, 48, 70,193,232, 19,125,202,177,177,213,100,127,156,205,107,234,202,162,148,196,199, 68,215,122, 92, +223,147, 98,156,208,182,145, 20, 34, 41,166,172,128, 23,153,160,167,132,202,182, 62,173, 40,181, 98,111,165,121, 77, 69, 22, 51, +203,237,189,134,207,220,222, 97, 86, 89, 62,142,134,214,214,236,220,184,133,187,119, 31,127,239, 53, 14,191,242, 25,110,126,254, + 13,206, 84,197, 59,103,199, 60, 59, 89,243,215,247,102,252,163,139, 13,225,233, 39, 12, 79, 62, 66,187,200, 86, 20,156, 78, 97, + 29,214, 69, 62,217,122,222,189, 26,120, 54, 58, 58, 37,249,252, 94,193,225, 60, 55, 37,167, 81,113, 94, 72,238,161, 56, 51,138, +155,135, 51,110,223, 95,113,227,243,247, 89,252,252, 23,216,251,236,138, 95,254,239,255, 1,221,255,248, 29, 94,251,165, 55, 17, +133, 66,207, 44, 74,171, 44, 65,185,214,184,196, 12, 49, 74,189,167, 61,105,249,224,116,195,105, 55, 16, 58,199,213,186, 99,187, +238,216, 58, 79, 31, 35,163,204,186, 2,124,224, 42, 37,230, 70, 97,138,108,191,137,125, 96,120,116,193,240,225,115,210, 59,223, +130,211,143, 8,237, 37,177,191, 66, 10,133, 8, 16,186, 14,223, 13,244,219,142,171, 77,203,135,151,151,124,216,109,144,193, 33, +133,204,205, 65, 97,137, 34, 49,106,197, 38, 6,206, 60,244,147,194,186, 20,145, 7,171, 25, 71,243,130, 7, 51, 67,159, 50,151, +240,164, 11,121,157,254,252, 12,179,103,219,153, 0, 0, 32, 0, 73, 68, 65, 84, 49, 43, 97,103,143,159, 63, 92,241,239,222,188, +193,157,198,242,237, 56, 64, 81,231,207, 75, 31,167,103,153,206,195,198,162,225,206,209, 62,159, 59,152,243,113,159,207, 49, 88, +253, 50, 90, 90,216, 60,180, 44,151,176, 83,103,235,221,238,140,175,222,220, 97,223, 88,142,170,134,156,105, 24,168,116,129, 13, +129,142,196,137,207, 91,139, 43,159, 83,233,110,218,140,191, 62, 27, 6,254,238,227, 45, 79,202, 25, 79,246, 15, 57,221,185,201, +191,169,119,121, 82,204, 17,186,228,111,222,187,205,151,202,154, 31,154,205, 57,136, 9,233, 19, 9,129,151, 35,155, 33,208, 19, + 8, 34, 39, 87,110, 93,224, 60, 70,174,132,160, 37,159,152,102,133,161, 52,134,181,243,200, 24,241,131,231,249,230,138, 20, 2, +109,219, 18,131,199,140, 35,113, 26, 46,210,181,232, 87,233,108,113, 20, 57,200,200,123,159,173,107,218, 48, 58,207,152, 18, 27, + 53, 97, 70, 68, 94,217,123, 41,217,181,118, 18,170,105,118,170, 25, 93,138, 20,166, 96,223, 22,244, 18,150,179, 37, 74,165,220, + 88, 47,102,217,150,166, 52,187,243,134, 59, 85,201,210, 40,202,166,162,214, 6,109, 21,179,162,100, 20, 9, 37, 53,135, 77,157, +239,225,182,194, 40, 48,214, 96,117, 73,161, 12, 99,154, 68,189, 34,163,176,209, 37, 86, 73,186, 16,209,218,112, 53,120, 74, 35, + 16, 73,146, 66,142,220,214, 36,174, 82,164, 77,145,185,243, 24,161,153,145, 61,255,187, 41, 32,146, 71, 7, 79, 18, 96,137,244, + 67,203, 24, 34, 71,218,242,214,176,229, 72, 25,106, 41,120,199,121, 98,138,144, 2, 70, 75,110,203,204, 71,185, 95, 22,116, 74, + 82, 2, 35,137,153,210,180, 74,178,212, 37,155,228, 89,105, 77, 39, 4, 43,107, 57, 31, 29, 51, 93,240,164,237, 49, 66,210,225, + 9, 74,241,229, 89,197,158, 12, 68, 81, 80,106,201, 61, 35,153, 27,131,146,145, 50, 9, 46,199,248, 3, 22,117, 37, 95,168, 15, + 51,133,199,194,188,252, 83,118,131, 23, 89,175,144,167, 71, 33,242,250, 87,132,188,110,105,202,252,223,221,148, 34, 22,166,105, +189, 42, 51,196,134, 41, 98, 78, 68, 82,105,136, 90, 35,140,101, 84,154,115,231,152, 23, 21,206, 88,158, 13, 91,234,178,202,201, + 97,125,151, 39,231,179,171, 92,120,165,162, 40, 53, 67,136, 20, 34,145,132,192, 74,232, 92, 96, 33, 37,165,146,116,237, 0, 82, + 18, 58,199,211, 49,242,234,220,208, 69,207,241,152,184, 89, 91,158,185, 17,159, 12,107, 4,209,249,252,179,251,144, 27,150, 48, +137,253,226,132,245, 75,188, 92,205, 15, 33,223, 46, 99,122,169,250, 28,243, 42,207,169,196,145, 53, 92,141, 35,149, 54,108, 6, +151, 85,241,215,255,111, 8,140,211,170,135, 16,113, 82,230,104, 83,145, 85,153, 35,137, 62, 36,182, 99,151,155, 38, 61, 61,104, +220,164, 69,232,253, 68,156, 11,127, 6,126, 33,166,252,250,200,219,223,252, 22, 63,245, 11, 63,195,246,226,138, 52, 53, 40,222, +123, 78, 54, 27, 98,128,189,249,146,229,114,198,206,220, 82,200,124, 90, 24, 93,162, 29, 3,227, 24, 25, 7,207,186, 27, 8, 46, +210,133,192,162,182, 72, 18,133,146,217,191, 42,193,165, 68,140, 89, 13,111, 98,100, 41, 35,229,148,191, 62,159,236,110,201, 69, +116, 10, 44, 98,162, 65, 48, 79,129,149, 84, 25,146, 49,171,120,247,248,140,254,108,205,158, 18,172,162, 96,150, 2,103, 49,191, +201,174, 62,232, 72, 67,100,125,225,121,123, 27, 57,173, 18,106,105, 56,186,125,132,159,215,168, 24,185,217,148,220, 48, 21,242, +236,130, 81, 23, 52, 82,177,152, 87,116, 33, 16, 66, 36,141, 14, 21,161,170, 11,202, 74,163,181,202, 33, 54, 33, 50,116, 14,239, + 60, 49, 4,162,115,140, 46,160, 98, 14, 91, 40,144,152, 36,104,180,166, 50,154, 89, 89, 80,151,134, 29, 35,184,111, 10,246, 18, +180, 38,195, 33,206, 29, 92,249,132, 85,145,164,225,162,247, 20,109, 96,121, 99,206,193, 43, 11,110,190,121,196, 63,246, 43,254, +214,195,187, 20,119,143,120,253,141,251, 44,191,250, 5, 62, 60, 89, 83,110,207,217,188,255, 33,227,157,187,204,166,165,205,249, +232,121,127, 51, 34,198,136,142,145, 89, 89,176,168, 12, 27, 4,239, 14,145, 11, 31, 89,203,196,122,240, 28, 84,138,203, 33,114, +188, 25, 25,125,228, 11, 63,241, 26,223,248,197, 31,230,141,255,228,115, 96, 18,197, 65,133,174, 52,114, 74,193, 74, 27, 71, 58, +235, 9,103, 61,227, 89,203,230,233,150,167,167, 27,190,117,185,230,100,112, 60, 31, 71,130,130, 86, 11,156, 72,244, 10,130, 18, +184,148, 19,249,132, 82, 52,149,101, 32,178, 25, 61, 93,244,172,183, 45,177,219, 32,151, 13, 65,130,223,221, 37,218, 2, 49,145, +214,198,237,150,243,110,203,201,176,229, 73,244,188,221,173, 57, 9, 35, 49, 70, 26,107,241,147,186,216, 25, 69, 23,225, 34, 37, +206, 93,224, 50,228,109,153,214,185,209,223, 49,154,185, 54,220,108, 26,238, 26,197,235,171,154,219,251, 75,158, 8,197, 92, 65, +247,228,148, 95,124,245, 85,238,214, 21,231,179,125,254,228,234, 60, 47, 23, 11, 3,149,134,170, 70,204,106,168, 10,238,172, 22, +252,200,209, 1,183,119,246,112,181,228,249, 58,193,238, 14,234,230, 33,105,190,128, 41,209,140,163, 61, 40, 43, 22,139, 57,251, +214,176, 44, 13, 7,186, 32, 76,155,132, 66, 26, 68,138, 8,165,240,209,241,193,232,179,240,110, 8, 28,247,145,141, 72,180, 90, +241, 39,209,114,182,127,139, 7, 55,110,178,191,123,131,122,182, 75, 40, 26, 70,169, 16, 69,195,207,148,150,219,101, 65,147, 4, +157,243, 44,181,102,219,181,156, 12, 61,207,186,237,148,254,156, 8, 49, 48,184,145,205,232,120, 22, 28,163,213,244, 66, 82, 89, +131, 11,142,194,106, 78,182, 27, 58, 63,114,225, 19,103,253, 21,231,109,230,209,111, 93,135, 26,187,140,144,158, 54,111, 72,147, +167, 93,161,136,211,102, 54,105, 67, 76,137, 81, 66,235, 61, 66, 26,206,156, 35, 73,193,152, 34,181, 41,178,204,204,150, 84, 82, +211, 73,129, 45, 42,146, 27, 9, 85,205,202, 88,182, 62, 81, 23, 37,187, 69, 69, 8,145,253,170,102, 86, 84,188, 54,179,148,218, +178,103, 45,179, 20,152,149, 13,115, 83, 51,151,130,170,168,168, 76,137,181,150,202, 20, 24,171,209,194,100,122,162,146, 89, 56, +175, 20, 74,192, 76, 11,172,212,140,201, 51,164,196, 66, 74,250,148,155,213,130,200,136,199, 8, 73,105, 52,253, 56, 32, 99,164, +115, 35, 11, 33,168, 98,196, 71,199, 46,145,245, 56, 80, 2,115, 1, 46, 4,116, 74,244,192,211,209,113, 66,228, 32, 69,158, 6, +143,136, 9, 29, 28, 62, 9, 84, 12,200, 16, 89,145,248,242,172,230,147,118,100,215, 26,164,146,204, 76,201, 57,129, 27,186, 98, + 67,100, 71, 91,122, 36,134,136,155,116, 59, 33,229,199,244,198, 7,182, 34,159, 23, 31,106, 73,101, 44,251, 70,112,168,178, 5, + 86,147,120,197, 20, 92, 6, 79,173,126, 16, 75,155,214,211, 52, 46,167,123, 72, 9,123, 77, 46,192, 70,102,133,187,152, 10,250, +181,229, 75, 78,124,242,232,178,207, 96, 53,135, 38, 43, 24, 25,167,152, 81,107,243,218,125,188, 70,154, 78,225,240,246, 26,219, +167, 25, 34, 12, 50,162,138,134,173,119, 12, 8,132,208,140,227,196,240, 53, 22,174,218,169,128, 14, 80,104,102, 86, 35, 82,162, + 81,138,243,214,101,229,168, 75, 44,106,201,133,203,118,188,212,141, 16, 61,169, 48,156,141, 9,165, 37,143, 93,226,204, 37,156, +212,156,250, 64, 76, 42,111, 24,194, 52,205,244,253, 75, 23,166,156,238,112, 87,221,196, 18, 30,243,125, 45, 77,247,245, 16, 95, +198,210,138,196,149, 75, 57, 71,103,202,118,175,124,164, 13,121,123, 81, 39,193,243,232,209, 66,231, 84, 43,145,104,125,190,177, +182, 41,113, 21, 35,165, 86, 12, 62,228,149, 23,233,101, 68,235,181, 29, 68, 76, 14,132, 79, 11,124,226, 53, 14,113,218,146, 4, +193, 55,254,250, 79,226, 67, 36,248,108, 79, 83, 19, 36,168, 41, 74,148, 18,136, 24, 81,218,162,181, 34, 9, 69, 41, 21, 70,100, + 64, 66, 27, 61, 93,239,217,217, 45,168, 43, 69,231, 2, 82,230, 12,245,152, 82,238,231,162, 32,133,132,139, 1,231, 67,254,123, +166,181,150,138, 80,138,108,237,155, 43, 69,233,227,139,181,148,179, 6,107, 36,118,217,224, 70,135, 62, 61,103, 30, 35, 23,196, +220, 40,204, 20,213, 66,211, 25,160,150, 72, 45,176, 43,141,147, 2,243,180,227, 96, 79,225,110, 28, 49, 47, 13, 95,190,121,151, + 84,214,168, 24, 24, 90,135, 24, 2,139, 85, 67, 16, 10, 81, 26, 6, 31,208, 62, 78, 10,127,137, 86, 18, 17,114,247, 62,250, 72, +235,242,125, 51,184,140,185,181, 8,102, 66,113, 88,228,169, 99, 71, 27,246,170,146,121, 99,153, 55, 6,157, 34,214,106,170,166, + 98,167,201,202, 97, 73,100,159,158,131,246,146,221,227, 19,194,197, 57,188,255, 62, 23,107,199,108, 53, 39,117,158,149,146, 60, +158,149,140, 71, 13,199, 7,187,220,216,155,241,240, 11, 15,249,238,222, 17,171, 31,249, 28,162,212,184, 4,110,240, 92,180,142, + 95,249, 95,255, 62,223,254,239,126,157,253,111,188,193,113,204,211, 81,135,100, 59,169,104, 43, 33,184, 81,105,164, 20, 92,133, +204, 14, 88, 85,130,177, 29, 56,233, 35,175,172, 74,132, 22,164,148,232,149,228,163,199,107, 62,250,131,199,204,149,160,125,186, +225,248,233, 37, 39,235,150,239,156, 95,241,157,171, 45,199, 93,196, 37, 69,235, 35,114,166,152, 85, 10,109,228, 68,137,142, 88, + 41, 24,149,160, 49, 58, 91,141,165,164, 23,137, 77,136,156, 8,232, 45,108,202,130,171,131, 61, 78, 87, 11,134,217,156,203,186, +228, 98, 28,121,228,122,190, 53,246,124,100, 13, 31,147,184, 20, 21,149,130,243,162, 36, 26, 67,165, 20,131, 72,140, 66,240, 36, + 4,206, 66,228,147, 24,241, 62,177, 14, 14,164,193,136,124,103,221,177, 37,183,181,197,150, 37, 66, 42, 90, 34,179, 89,193,110, + 83,112,146, 4, 15, 54,199,252,135,175, 63,228,187, 23,167,252,222, 56, 66,114,136,113, 34, 48, 54, 37, 95,219,217,225,181,121, +195, 81,179, 32,200,146,203, 36,248,163,164, 9,171,134,175,223,186,195,231,143, 14, 89,206,231, 60, 45, 74, 88,236,228, 38,190, +176,204,165,162,182,154,185,148, 44, 16, 20, 41,161, 68,222, 24,100,146, 64,226,216,143,124,188,245,136,194,194,106, 23,102, 21, +207,237,146, 39,178,225,104,117,196,103,119, 15, 89, 53, 11,172,169,176, 69, 69, 93,228, 59,244, 95, 41,243,109,122,150, 96,112, + 35, 75,169,112, 67, 79,232,122,158,182,231, 28,187, 22,136,180, 67,207,118,236,249,240,124,203, 39,253, 64,231, 60,107, 63,208, + 69, 71, 63,142,212, 34,241,193,243, 99, 46,219, 43,158, 94,156,240,237,231,199, 60,186, 90, 51, 36,199, 89,191,229,241,213, 37, +142, 68,215, 93, 97, 98,192,232,146, 36, 18, 41, 10,146,206,185,222, 81, 43,162, 18,244,193,211,143,158,160, 53,155, 24,104,133, +167,243, 30, 33, 21, 26,137, 81, 38,235,105,116,193, 76, 23,104, 37,193,150, 8, 18, 73,106, 86,117,195, 16,179, 21,214, 90,131, +149,138,157,194,224,131,228,179,117, 69,210, 10, 93, 52, 44,108,153,217,235,198,114, 80,204, 24,165, 36, 10,153,111,224, 82, 33, +141,196,232, 2, 68,194, 24,133,115, 30, 37, 21, 82, 10, 80,145, 74,104,100,130, 49,230,137,187, 36,210,197,144,197,164, 34, 17, +189,195, 72, 56, 29, 71, 68,138,196, 20, 8,126,164, 74, 1,231, 71,118,132,192, 50, 18, 93, 96,166, 61,114, 76,140,222,179, 91, + 90, 54, 93,135, 35,177, 39, 18, 42,230, 51,163,242, 45,218, 7,180, 16,236, 8,137, 75,158,251,214,228,239, 89, 40,214, 4,110, +233,146, 45, 1,153, 36,157, 0, 43, 50, 28, 42,248,136, 54,134,222, 7,222, 27, 61,129,136, 16,146, 87, 74,147,183,129, 49,127, + 93,157, 18,165,144, 28, 20, 37, 41, 38,124, 12,184, 24,255, 45,213,239, 47, 60,231,211,138,249, 26,184, 31,167,137, 92, 76,106, +115,169, 94,218,189,226,132,126,189, 46, 44,133,252, 84,148, 94,156,176,140, 83,254,186,155,252,136,106, 42, 76, 46, 76, 80,155, +172, 6, 38,116,236,175,238, 80,232,154,199, 93, 59,121,179, 37,168, 42,103,188, 67,190,237, 63,217,228,244,154,202,226,122,199, +253,165,229,116,112,204, 4, 8, 31,120,101, 97, 88,247, 14,237, 18, 51, 11,103,151,227,139,168,211,161, 44,120, 60, 42, 80,146, +214,251,169, 72, 93,223,210, 84, 86,237,183,221, 20, 65,219,101, 37,255, 48, 64,169,114, 52,173,239,115,168, 72,159,149,251,249, +136, 18, 94, 42,239,123, 15, 54,241,193,165,228, 11, 59,138,231,219,158,193,104,252,182,229,158,157,115, 76,164, 64, 48, 70,135, + 79,224,199, 72,178, 26, 23, 18, 70,101,143,106,240,158,253, 82, 81, 68,201, 91,151, 25,115,187,238,251, 28,143,187,105,243, 93, + 16, 50,233,101,216,252,249, 45,139,203, 86,194,245,243, 53,213,178, 65,105,201,217,211,211,140, 75, 4, 62, 58,123,142,210,134, +102,194,183,174, 7,199,174,206, 54, 17,143, 98, 8, 16,146,160, 82,138,113, 8, 44,102,150,109, 55, 82, 89,197,162, 22, 47, 50, +217, 67, 8,116, 41,223, 97, 23, 82, 80, 41,201,149, 11,217,169,104, 21, 38, 9,140, 24,169, 10, 3, 11, 65,232, 6,234,168,209, + 34, 81, 11,133,217,157,115,239,106,197, 27,186, 38,205, 45,191,109,182,152,194,176,135,226,131,224, 89,223, 46,233, 93,224, 94, +128,181,130, 78, 9, 86, 11,203, 65, 8, 84, 9,202,197,138,249,182, 99,121,176,143,106, 22, 60, 13, 61,197,241, 25, 39, 66, 32, + 23, 53,213,222,156, 27,119,246, 24,182, 61,227,224,184, 90,183,164,193,160,129, 66,107, 94, 89, 45, 72, 81,242, 52, 10,124,234, +176, 12,212, 81,176, 82, 37, 15, 22, 11,230,117,153, 47, 81,133, 70,206, 11,212,126,141,112,145,174, 29, 57,181,160,241,148, 46, + 71, 34,142,155, 45,233,108,195,205, 51,199,113,215,209, 17,185,241,232, 17, 23, 31, 63, 97,185,127,192, 23,159, 28,243,171,139, + 57,143,126,248,179,236,237, 6,102, 8,206, 90,199,205, 82,179,237, 60, 90, 11,158,117,158, 15, 79,182,252,246,223,250,187,164, +113, 11, 88,126,237,191,252, 59,240,230, 14,219,255,234, 63,229, 55, 69,228,222,221,125,190,182, 99,185, 41, 4,171, 2, 46,199, +196, 70, 9, 22, 90, 82,218,188,133,120,190,241,252,206, 71,151,124,182,201,123,211,143, 46,182,124,240,124,192,104,201,179,231, +103, 52, 9,168, 4,207, 93,228,121,136,180, 1,122,145, 16,120,218,157, 25,183, 10,112, 2, 10, 23, 80, 90,230, 16, 13, 23,112, + 70,241,209, 85,207, 92, 9,172,150,212, 70,179,117,129,103,131, 99,225, 19,214, 7, 80,146,153, 53, 60,171, 13,189, 89,208, 46, + 42,186, 39,167, 60, 31, 19, 85, 33,104, 77, 67, 21, 3, 79,229,140,253, 90,242,110,155,120,146, 34, 53, 18,127,177, 97, 99, 13, +109,136,120,224, 60,105,162,174, 89, 39, 71,140, 5, 59, 74,176,180, 69,118,144,196,128,183, 5,190,149, 68,231, 48, 49,112,171, +105,248,229,167,103,244,127,244, 7,252,189,243, 1,209, 84, 48, 95,146, 70, 16, 58,191,247,247,173,198,104,141, 23,146,111,246, + 61,231, 33,230, 48,214,249, 46, 95,187,123, 23, 33, 5, 71,253,192,219,103, 23,180, 67, 55, 9,131, 35, 46,140,180, 99,228, 44, + 70,118,108,102, 93,204,133, 98, 19, 34, 81, 36,174,124,207, 99, 12,172, 10,246,139,154, 93, 99, 48,170, 98, 71, 9,140, 84, 52, +186,194,106, 67, 81, 53,212, 19, 28, 81, 38,207,129, 20,124,219, 69,238,110,175,184, 37, 11, 36,146,110, 28, 72,131,227,188,221, +240,241,122, 77, 27, 7, 78,183, 1, 82,224,124,240,140,231,107,100,140,200,182, 39,236, 47, 56, 5, 46, 27,203, 91, 49, 98,156, +199,120, 48,253,136,105, 59,204,106,201,219, 82, 83, 55, 5,133, 72, 60, 42, 37,159,193,162, 22,145, 33, 4,172,182, 44,118,110, + 32, 6, 72,186, 96, 28, 28,222, 57,194,164,111,186,220,174,113, 42,159,222,144,154,146, 72, 80, 2, 41, 18, 30,195, 18,137,176, + 6, 53, 58,208,138,133, 15, 60,243, 3, 6,193, 66, 36,156, 51,204, 82, 98, 8,121,176,104, 22, 26,169, 20, 77,240, 36, 99, 48, + 34,159, 29, 27, 83, 77, 48,155,200,210,148,108,125,255, 66, 7,132, 75,104,105,240,113,164, 44, 52,206, 37,164, 76, 8, 15, 27, + 6, 42, 1, 58, 9, 28,137, 62, 58,144,150, 16, 28, 18,168,148,225,188, 27, 88,166,196,113,112,164,113, 64, 43,129, 9,129, 82, + 71, 66, 76, 52, 62,208,165,196, 14, 5,107, 61,178,227, 4,155,171, 11, 10,109,177, 41,111,121,181, 72, 84,228, 36, 55, 77, 22, + 74,175,240,236,136, 18, 81, 86, 28, 36,184,240,158,215,237,156,247, 92,207, 74,151,108, 36,236, 11,193, 59, 67, 98, 17, 61, 66, + 73,234, 4,143,198,192,158,182, 60, 1,132,239, 57,176,138, 62, 56,140,148, 92,245, 91,230, 82, 18, 99, 96,219,245, 8, 41,120, + 67,106, 30,199,241,223, 98, 82,215,250,165,239,156, 9,239, 87, 78,247,114, 59, 17,151,122,151, 39, 65,239, 94, 78,168, 76,114, + 97, 55,249, 64, 69,122,233,255,108, 39, 11, 86,156,214,198,101,145, 85,170, 90,229,253,195, 68,174,194,170, 60,133,207,114,128, +198,195,155, 15,120,124,117, 78,136, 1,188, 67, 74, 75, 66, 65,187,201, 19,115, 55,192, 48, 32,165, 98, 81, 21,216,148, 81,168, +181, 21,236,105, 56,235, 71,102, 74,130, 27,233,187,172,220, 37,133,236, 37,213, 58,223,207, 84,190, 99,167, 52,169,247,205, 36, + 22,136,211,244,173, 85, 62, 19, 88, 13,114,130,204,139, 73, 92, 99,204,116,110,152,176,185,195,116,175,187,158,214,123,143, 19, +137,199,157, 71,151,138,183, 62, 89, 83, 87,138, 15, 47, 90,180,209,104, 41, 8, 42, 11, 82, 70, 37,208, 66,224, 66, 38,185, 21, + 82,225,137,204, 80, 12,209,211, 88, 69, 67, 98, 75,206, 59,199,231,108,230,204,225, 23,147,160, 47,190,180,223,201,233,116, 18, + 4, 71,175, 28,113,112,235,144,118,155, 69, 50,193, 71,182,125,139, 17,154,131,213, 33,123, 7, 75,102, 77, 65,112,137,194,106, + 84,132,166,212,200, 49,112, 57, 6,124, 74,180, 67,192,185, 72, 83,107,148, 20,104, 57,173,223, 17,120,242,135, 53,166,148,131, +247,144, 68, 1,137,188,174,213, 58, 79,235,248,152,161, 62,133,194,214, 6, 45, 53,101,169,249,191, 89,123,179, 88,203,210,243, + 60,239,249,167, 53,238,233, 76,117,106,174,174,174,234,110,246, 64,145, 77,138,148, 40, 91,178,132,152, 6, 18,197, 73, 46, 20, + 7, 65, 4,196,185, 73,128, 32,185, 8, 2,248, 46,176,238,156, 27, 35,200,125,144, 92, 4,112,132, 12,130,108, 40,138,172, 33, +214, 16, 73,164, 73, 90, 36,155,221,173,110,178,187,171,107, 62,243,217,227, 26,254, 41, 23,255, 58, 85, 69,137, 18, 20,197,167, +177,113, 80, 5,116,157,179,246, 94,123,127,255,247,125,239,251,188,178, 54,204,109, 36, 28, 28,227,181, 96,145, 75,124,109,216, +100, 18, 95, 72, 30, 73,207,246, 40,103,119,167,100, 57,206, 24, 95,158,178,181, 61,229,114, 85,115,185,183,188, 81,111, 51, 13, +145, 93, 93, 48,186,177, 13,166, 96,220,246,100,173, 99, 45, 5,179,237,154,171,151,183, 40, 75,147, 0, 99, 77, 75, 92,246,200, +206, 83, 74, 69,169, 36, 69,132,222,167,209,158, 16,138, 76, 24,246, 71, 35, 46,239, 77,153,108,215,148,163,156, 98, 82,144,207, + 10,178,210, 80, 76, 43,138,113, 73, 17, 34,198, 58,100,239, 56, 95,172,217, 57,106, 48, 46,242,193,193, 33,242,124, 69,238, 5, +166, 52, 92, 11,240,242,227, 5,223,113,199,184,137, 96,218, 45,184,255,219,127,128,207,182, 89, 29,172,216, 44, 26,214,235,150, +223,254, 95,126,149,143,254,209,239,113,239,215,191,145, 52, 13, 72, 2, 38,233, 60,142, 27, 62,250,103,127, 72,248,167, 95,167, +236, 63,229,214,157,171,124,121,183,100, 87,107,254,120,229, 56,232, 2,158,200,165, 82,209,161, 56,149,138,199, 66,114,127, 99, +121,180,238, 89, 53, 30,109, 36, 94, 66, 44, 32,138, 72, 75,160, 35,224,100,128,152,196,139,215,239,236,145, 95,153,114,164,115, + 62, 61,119,252,225,183, 62,230,206,254,132,222, 71,158, 90, 79,171, 69, 74,226,206, 4,247,159,204,105, 93, 74, 88,180,189,101, +221, 89, 66,111, 25, 75, 65,166, 4,185,144,244,121,154,250,185,178, 32,232, 12,171, 51, 84,157, 97,235,146,179,141,101,113,190, +100,213,119,228, 85,198,131,243,158, 77, 20,172, 93,135, 15,145,163, 69,135,146,146,181,210, 56,149,225,163,100,119, 54,166,145, +130,105, 94,208, 33, 57,246, 17, 43, 5, 79,150, 45, 71,189,101,172, 20, 71, 82,241,222, 89,139,232,186,228,145,207, 52,140,170, + 4, 95, 57, 93,115,165,144,236, 85, 5, 7,155,134,119, 87,107,172,237, 17, 82,241, 70, 53,226,181,233, 4, 41, 37, 66, 73, 86, +173,229, 64, 12,217, 7, 62, 21, 84, 21,159,239,202,107, 37,105,133,224, 8,136, 66, 50, 42, 74,246,234,154,207, 86, 19,238, 78, +119,208, 67,224,138, 70, 82, 12,194,178, 92,105,156, 15, 8, 33,200,134,157,117,227, 61, 15, 87, 11, 94,145, 1,215,245,220, 8, +145,213, 98,206,124,115,198,251, 71, 79,248, 96,126,206,199, 39, 27,206,155,142,229,233, 28,123,118, 68,180, 29, 97,179, 33,246, + 45, 97,177, 76,143,249,138,112,190,196, 47,214,248,243, 57,174,239,241,222,225, 86,107,220,217, 25,253,241, 9,253, 98,197,241, +162,225, 97, 72, 57, 26, 45,129,237,188,164, 35,164,172,141,224, 17, 70,211,122, 79, 23, 28,115,239,105,133,224,164,107, 88,217, + 30, 97, 20,189, 28, 38,124,153, 65,101, 25,121,102,104,165,160, 42, 43,180,148,172,165,167, 50, 25, 27,239,208, 89,137, 84, 34, + 33, 94,181,166,202, 4,179,172,196,135,128,202,138,164, 90,143,142,186, 26, 35, 98,192, 6,207,118, 85, 99,173, 69, 68, 65,150, +231,244, 46, 29, 44, 83,109, 25, 36, 70, 18, 92,231, 80,120,140,136,180,193,211, 58, 75, 22, 61,189, 16,104,103, 19, 63,159,136, + 12,142,198, 53, 52,182, 39,118,107,108, 84,212,222,146, 73, 71, 17, 2, 51,151, 92, 90,151,132, 96,227, 44,179, 0, 10, 79,244, +129,245,186, 37, 23,129,232,146, 56,249, 10,130, 55,180,227, 21,165,248,146,209, 92,215,134, 27, 69, 70, 21, 34, 91, 38,231,178, +150,156,217,150,151,202, 17,139,104,217, 86,134,143,219,158,155,133,226, 60, 70, 74, 4,143, 86, 61,133, 84,124, 18, 28, 69,140, + 92, 54, 6, 31, 4,187, 90, 38,212,109, 12,105, 13, 32, 82,131,183, 29, 3, 62, 6,148,253,235, 20,117, 53,136,182,226, 11, 68, +223,160,158, 71, 94,118,131, 23,189, 27,186,235,206,191,128,140, 29,138, 77, 28,188, 52,222,167,248,193,139,241,240, 5,125, 77, +229, 41,147, 92, 13,130,187,186, 30, 22, 12, 42, 1, 7, 68,242, 63,126,218,181,216,126,232,204,163, 32,186,254, 57,201,237,240, + 60, 33,103,125,131, 44, 10,148,137,216,206,177,167, 21, 49,120,250, 33,138,180, 68, 17,131,163,233,124, 26,223, 55,131, 29, 76, +233,225, 80, 49, 88,195,244, 16, 29,171,196,112, 24, 25,104,121, 82, 36, 80,142,237,210, 65, 38,134,164, 13, 8,126,128,234, 12, +120, 63, 63, 8, 78, 46,216,235, 74,190, 16,254, 18, 88, 46, 82, 80,203,201,241,138,185,143, 60, 92,118,204,170, 12,231,122,148, + 84, 8, 33, 89,117,150, 74,167,209,247,210, 59, 42, 33, 89, 13,182, 47, 25,160, 11,145,157, 44, 41, 81,173,190, 56, 68,168,244, +179,109, 24,216,240,242, 57,138, 49,166,157,244,124, 60,225,237,215,239,178,217,180, 4,231,240, 49,146, 9,195, 89,179,100, 90, + 86,124,241,205, 91, 52,157,199,185,152,246,223, 50, 37,177, 17, 2,110,128,205,152, 76,226, 58, 71,219,121, 84, 62,184, 23,124, +196, 1,173, 13, 52,222, 33, 7, 38,188, 38, 82, 75, 65,227, 3, 75, 31,169,135,221,144, 18,176, 81, 96, 50,133,206, 52, 54,147, + 8,173,200, 50, 77, 63, 46,121,122,255,152,147,186, 32,142,199,156,103,138,121, 38,209,185,161, 45, 12,182, 46,240,101, 78, 99, + 20,125,136,156,183, 45,139,224,120,208, 52, 44,124,203,229,122, 11,218,134, 88, 87,228,187, 35,124,227,185,228, 35, 93,174,232, + 37,228,117, 78, 89,230,104,163,144, 33, 64,107, 81,214,161,122,143,110, 92, 58,128,173, 45,110, 72,120,141,218,144, 85, 57, 59, +147,146,108,156,161, 42,157,118,178, 90, 18, 43,133, 50, 18,165,210,107,165, 4, 72,165,168, 66, 36, 39, 18, 58,203,172,177,172, +207,206,185,172, 11, 20,145, 85,111,137,202,113, 52,171,120,237, 23,254, 22,111,254,212, 91,188,252,133, 55, 57,222,116, 60,249, +230,215, 56,248,232, 67,222,251, 23,223,166,253,253, 57, 33, 13,228,210,154, 34, 33, 65,136, 67, 60,208,197,247,213,247,142,121, +247,159,124,139, 3,113, 66,244,138,239,127,248,132,211, 63,253,148,187,183, 47, 35, 28,172,165,160,137,176,238,147, 45, 78, 75, +104, 91,203,253,195, 5, 34, 70,158,156,110,168, 8,116, 77,199,166,117, 68, 37,240, 34,114,181,214,252,189, 47,222,224,149,137, +225,105, 27,248, 80,107, 30,223,185,204,111,170,130,223, 89, 5,190,254,233,146, 91, 59, 53, 50,120,172,130,211,165,103,165, 37, + 78, 68,214,173,195,123,143, 36, 98,100,122,109,173, 20,116, 33,160,165,224,112,227, 88,123, 88, 72,201, 34, 51, 44,182,198, 28, + 8,201, 83, 12, 70, 26,158,108, 90,106, 33,217,116, 45, 58,203,217, 52, 3,225, 47, 4, 50, 34,219,165,228,218,172, 38,100, 25, +178, 40,113, 90, 97,165,102,174,224, 97, 19, 8, 66,177, 17,145,163,182,229,149,170,224,104,112,146,252,196, 36,231,118,145,115, + 67,102, 60, 52, 57,162,206,185,191,106,152,202, 2,111, 45, 55, 98,203,184,239,184,148,103,160, 52, 55,243, 28, 73,164,105, 59, +222,221,108, 88,134,128,176, 61,149, 20,104, 15, 27, 41,184,162, 20,103, 66, 17, 85,198,125, 23,168,114,195, 38, 40,138,220, 48, + 42, 38,232,188, 66, 75, 69,192,208,250, 64,102, 12, 2,129,247, 22,109, 36, 74, 39, 87,197,166,105,112,214,113,238, 26,150,221, +154,247,238,191,199, 72, 10, 30,158, 61,229,227,147,199,124,114,124,204,119, 78,206,248,224, 96, 65,152,207,137,237,130,184,216, +164, 60,243, 1,249, 28, 95, 0,177,198, 16,240, 65, 18, 36,120, 41, 9, 3,174,195, 7,247,156, 46,237, 61,174,235,105,219,200, + 19,219, 17, 8,104,145, 88, 25,203,190,193,232,156,181,235, 9, 82,208, 11,193,113,179,162, 23,145,179,222,177,192,211,116,233, +231,134,204, 36,239,184, 41,232,181,162,136, 18,165, 37, 94, 72,140,144,180, 50,129, 90,156,181,136,152,116, 79,224,201,117,142, + 17, 9,239,108,132, 78,201,153, 89, 65,173, 19, 61, 51, 55, 26,163,100, 90,193, 41,205,102,211,162,181, 26, 0,158,105, 84, 77, +244,180,109, 79,244,145,133,237, 81, 62,209, 54,181,119, 56, 33,145,125,135, 14, 1, 17, 3,181, 8,244, 93,159,250, 79,191,193, +218, 64,230, 27,172,181,108, 11,216,142, 9,249, 61,139,130, 16, 2,187, 82,224,189,103, 18,160, 20,129, 76,120, 88, 54,188, 94, + 74,222, 86,146,187, 69,198,142, 52, 92, 49,154,155, 89,197,101,147,244, 60, 19,101,200, 66, 18,240,109,103, 57,103,222, 50,145, +154, 3,219,242,242,168,230,163,174,227, 90,158,241,104,217, 16,148,228, 3,107, 25,133,192, 90, 10, 94, 45, 52, 70, 5, 86, 33, +176,133,160,150,146, 86,192, 76, 72,174,102, 5, 77, 76,248,142, 59,229,232,175, 81,212,165,252, 33,114,239,179,204, 91,173,135, +157,114, 42,248,183, 62,255, 50,243,163,249, 15, 51,224,187, 48, 20,195,129,231, 46,101,242,118,196,161, 8,184, 97,223, 91, 22, + 73, 49, 94, 94,140,224,229, 32,198, 19,168, 60, 79,172,117,161,136,182, 75, 16,123,103, 81, 66, 18, 69, 76,123,236,174, 75,249, +200,171, 21,224,137, 22, 46,103,146,177,150,180, 81, 16,188,227,192,121,118,178,140, 96, 83,190,239,225,106,243, 60,205, 76,136, + 84, 0,171,122,208, 5,196,231, 96,156, 48,116,192, 65, 12, 34, 57,255, 92, 52,199,160,182, 15, 46,173, 36, 20, 41, 11, 93, 12, +215,135,228,153, 41,253,162, 99,183, 3, 90,246, 34, 59, 55,244,176, 89, 66,231,120,108, 35, 91,101,134, 18,130, 34, 10, 70, 42, +237,169, 69,239,201,133,192,185,200, 88, 43,150,195, 13,166,149, 36,120, 40,117,196, 68,193,218, 15,188,247, 56,188, 94, 34,197, +159,166, 53, 73,120, 22, 5,185,190,255,128, 87, 63,247, 38,121,150,209,173, 26,178, 44,231,115,159,125,147, 7, 15, 30, 18, 93, +224,230,173, 27, 44, 22, 29,101,149, 2, 97,178, 76,147,105,201, 38,122,162, 75, 66, 26, 41, 35,174, 75, 59, 91, 31, 82,216, 75, + 80,113, 24,141,201, 20,150, 35, 21,106, 80, 72,119, 33, 97,111, 51, 41,216, 49, 9,113, 42,226, 16,101,172, 36, 85,166, 89,155, + 36, 12, 68, 75,186, 81,206,159,220, 63,230,211,205,130, 42, 6,214,125, 67, 71,160,141,129, 40, 37,107, 17, 89, 74,146,120, 69, + 10,142,133,103,225, 98,194, 84,146, 34, 46,139,178,194, 4, 65,233, 33, 76, 75, 70, 42,199, 40, 73, 27, 3,217,186,199,108, 85, +137,100, 38, 37, 2,208,157,199,204, 91,212,188, 37,156,174,209,157,101, 76,100, 44, 52,133,214,120,173,113, 70, 34, 50,133, 53, + 10,151,168, 52,196,182, 71,103, 10, 97, 20, 81, 74,132, 82, 72, 69, 42,244,101, 70, 81,231, 20, 69,193,254,107, 55,152, 92,219, + 98,182,232,217,139,146,251, 49, 18,191,252, 58,175,189,121, 21, 45, 20,162, 42,153, 92,153,146,141,183, 17, 93,228,225,241, 33, +155,143,151, 4, 28, 1,193,115,170,182,127,246, 16, 67,137, 7,137, 64,242,232, 27, 15,249,250, 63,253, 54,159,252,230,119,121, +252,123,223,227, 91,239,191,207,207,126,245,109, 92,227,152,175, 59,214, 79,151,228, 71, 11,126,229,127,250,101, 14,191,245, 14, +155,119,223, 39,223,157,177, 62, 95, 50, 63,111, 6,203,141,192, 9,193,153,202,169,162,229,245,189, 49, 95, 59, 89,243, 63, 31, + 54,124, 48,132, 13,233, 76,163,198, 57,241,214, 54,247, 39, 37,183,125, 96,177,232,104,242,140,243, 85,199, 92,102,136,214, 99, +178, 68,137,195, 59, 74,163,105,136, 8, 4,199, 93,143, 53,112,224, 20,231,117,205,122, 84,242, 56, 51,220, 31,229, 28,103, 5, +227, 73,206,104, 58,225, 32,192,178,237,176,243,115, 86, 46, 80, 25, 69,239, 58, 10,229,168,132,166, 54,134, 66, 27,162,150,220, +219, 4, 30, 58,135,146, 57,167, 38,103,187,172,216,213,169, 27, 26,153, 12,175, 4,119,243,146,253,178, 64,106,205, 86,145, 51, + 18,201, 42,187, 95,143,201,180,230,149,113,205, 36, 47,217, 31,215,148,218, 80,200, 12, 27,225,254,106,193, 19,107, 89,132,200, +202,123,118,242, 18, 75, 96,173, 32, 70,137,149, 10,175, 52,103, 82,115, 42, 53,175,151, 5,159,203, 51,238,148, 53, 51, 97,112, + 82, 34,148,193,105, 69, 8,145,198,167,166,192,123, 75, 8, 61,193,167, 81,190,239, 58, 86,221,146,229,234,156,147,239,191,203, +103,174, 94,226,143, 62,125,204, 59,143,142,120,239,116,201,123, 7,199, 28,159,157, 67,183, 33, 10, 71,108, 59, 34, 63,204, 91, +127, 33, 82,235,217,232, 58,132,231,143, 11,183,250,197, 93,116, 81,220,189,239, 89,197,192,131,181, 35, 55,130,214, 91,206,109, + 75,144,130,149,183, 68, 36,143, 54,115,172, 16, 60,106,214,172,162, 39, 6,112, 66, 16, 68, 98, 58, 40,147, 17, 68, 64, 75,133, +200, 52,113, 72,124, 68,107, 86, 33, 32,135, 96, 43,149,105,108,235, 24,103, 57,153, 76,204,248,220,100, 56,111, 41,139,156,145, + 49,195, 86, 54, 75,107,172, 16,200,180, 65,105,141, 50,154, 24, 61,182, 79,133, 89,196, 64,183,238, 16, 17,214,253, 6, 25, 61, + 39,157, 69,135,148,230,185, 27,147,144,176, 22, 2, 17, 29,222, 90, 84,112,132, 24, 41,125, 96, 26, 60,165, 20, 76,130,167, 6, + 74,169,152,136, 84,231,106, 18,226,122, 23, 40, 17,204,136,220,201, 50,238,102,154,109,101,216, 42, 71,236,154,154,151, 70, 83, +246,138, 41, 38,194,180, 26,145, 73,137,150,130,113,145, 81, 41, 67,239, 3, 69, 76,147,213,153,202, 56,114, 61, 91,218,176,116, +142,243, 62,242,129,237, 56,141,240, 52, 6,198, 49, 48, 27,228,104,183,170,130, 16, 5, 19,149,177,165, 12, 59,166,162, 9,158, +207, 84, 51,118,140, 70,248,191,142,250,253,153,208,234,197,162, 62,180, 47,106,176,176, 33,152, 63, 57, 75,133,171,117, 47,140, +156,197, 11,123,119, 1,190, 75,194, 20, 25,147,120,142, 0,186, 74, 49,114, 91,227, 84,248, 7,131, 62, 49,133,195,199,182,135, +178,130, 96,169,162, 99, 52,100,165, 79, 99,160,233, 91, 38, 70,209,217, 62, 9,216, 66, 72, 59,245,144,212,141, 74, 42, 66,232, + 17, 81, 50, 35,208,216,164, 82, 60,237, 44,222,250,148,225,173, 92, 74,251, 42,203,103, 96,154,164, 68, 31,186,110, 35,146,138, +127,224,185, 99,195,115, 2, 94, 28, 10,189, 24,162,240,218,102, 32,202, 57,112,195,168,222, 69, 40,205, 51,150,123, 18,171,197, +231,246, 56, 63, 48,166,189,133,188,100, 82, 42,148, 79, 52,182, 82, 41,162,183, 88, 33, 49, 33,177,212, 55,206,179,157,105,172, + 76, 41, 94, 94, 10,102, 81, 80, 69,207,147,139, 72, 82, 23,210, 59,187,247,131,203, 64,254, 57,112, 70,190, 61,227,230,237,155, +116, 93, 67,211,108, 56, 62, 60,167,183, 45,222, 11, 66,200,113,125, 96, 52, 41,201, 11, 77, 46, 37, 82,165, 53,132, 37, 34, 66, + 26, 5,249, 16,159,197,185, 71, 98, 18,217, 9,153, 68,249, 17, 42,117,161,221,139, 76, 85,154,168,184,232,137, 81,146,105,153, +242,198,133, 72, 97, 20, 46, 89,115,188, 73, 40,211, 62, 83, 28, 29,173,152, 68,205,164,168,104,148,164, 42, 38,136,170,100, 60, +154,146,107, 77,102, 12, 70,128, 42, 50, 10,169,240, 90, 64,150, 83,153,156, 75, 89,129,247,158,124, 92, 33, 71, 5,178, 80, 84, +251, 35, 74,169, 48, 33, 82,180,142, 48,201, 16, 90,161, 98,130,238, 25,231,201, 26,139, 89, 89,100,215, 36,245,171,212,140,132, + 98, 90, 24,178, 92,177,214,146, 53, 73, 28, 22, 50,133, 68,144,109, 28,213,253,115,196, 36,195,103, 26,151, 15,200,211,224, 49, +157,199, 28,204, 81, 43, 11,215,167,232, 89, 77,121,125,135,124,107,204,150,211, 92,113,145,122,209,144, 61, 90,146,159,244,248, + 15, 14, 56,179, 61,227, 75, 19,222,250,220, 43,236,255,141,215,248, 65,213,225,254,244,152, 56,252, 39, 0,161,114, 68,108,249, + 7,255,233, 23,248,227,119, 22, 8,223, 13, 61,187, 76,145,184, 72, 4, 26, 30,117,252,237,255,224, 75,108,154,150,205,241,138, + 98, 57, 71,111,230,124,229,141,187,220,249,177, 59,212,183,111,210, 89,135, 11,130,102,216,223,197, 62,105, 47,100,111,249,181, + 63,250, 38,149,174,248, 71,135,158,249,178,195, 91,139,111, 45,221,186,167, 93,117, 8,155, 50,193,139, 42,231,111,142, 4, 71, + 94,112,214,123,150,235, 22,163, 36,163, 82,226,101,196, 74,197, 82,128,244,145,141,117,156,119,142, 69, 11,199, 85,198, 81,102, +120,164, 36, 79,144, 92, 53,138,191, 49,202,184,189, 83, 51,173,115,150, 94,240, 3, 97, 56, 90,174, 97, 53,231,160,153,115, 41, +215, 20, 17,148,201,208, 70, 17, 98, 96, 29, 35,153,144,156,249,200,227,229,156,187,121,150,150, 20,166,224,238,168, 96, 17, 18, +244,100,171, 44,217,173, 10, 74, 83,208, 42, 77,235, 83,225,216, 42, 74,118,137,212, 89,134,150, 26,149,143, 82, 98,154,209, 28, +117, 14,173, 51, 22, 49, 34, 72, 22, 84, 27, 3, 27,161,137, 3, 14,121,172, 52, 39, 66,210,168,130, 45, 37,121, 43,147,108,153, +130, 66, 24,118, 76, 70, 46,147,122,255,160,237, 88,218, 14,223,247,156,247, 13, 27,219,114,214, 52,116,109,203,106,181,228,225, +201, 99,142, 78,142,120,116,240, 20, 58,199,225, 39,143,225,201, 99,226,242,156,216,109, 82, 19, 19, 2, 81,133,225,192, 30, 94, + 40,222,127,182,152,243,194,116,231,135,163, 84, 46, 30, 23, 41,168,238,226, 97, 19,186,249,163,243,142,127,117, 62, 71, 2,173, +183, 28,186, 13, 79,109,203,169,183, 44,188,229,180,111,232,189,163,245,150, 60, 43,113, 3,231,189,146,233, 64, 56, 49,134, 77, +215,165,224, 24, 2, 77,140, 72, 4, 46, 6,164, 46,112,174, 35,203,179,100, 15,149,146, 66, 43,172,143,148, 69,158, 4,134, 17, +170, 44, 27,166,141,138, 92, 25,162,212, 4, 36,173, 13, 8, 23,105,250,134,205,166,165,239, 45, 49,244,201,135,142, 39,122,143, +119,150,169,209,136, 16, 88,251,142, 82, 72, 68,240,248,190, 69,138, 64,231, 58,180, 15, 72,231,200,134, 98, 45, 66,100, 91,164, + 73,107, 37,161,148,146,145,148,204, 98,138,161,222,146,134,155,245,132,153,206,153, 20, 21, 91,227, 41, 35,149,177, 55,217, 99, + 55, 31, 49, 85, 25, 87,183, 46,145,133,136, 70, 50, 45, 42,108, 76,113,211, 82, 72, 78,241,136, 8, 31,119, 27,154, 24, 89, 17, + 88, 71,193,119, 54, 27,130,208, 60,244, 61, 45,130,147, 16, 24, 33,120,171,206,217, 56,203, 75,101, 73, 64,177,109, 10,142,250, +134, 55, 71,187,116,161,227,122,189,195,189,118,245,215, 84,191,251, 33, 17,236, 17, 13,114,221, 0, 0, 32, 0, 73, 68, 65, 84, +226, 54,113, 46, 41,219,141,121, 62,166,190, 40, 38,249, 16, 69,122,225,235,116,225, 5,181,248, 32,132,243,118,160, 3,248, 68, +122, 26, 15,100, 33, 53,208,231, 46,166, 3, 97, 56, 12, 72, 65, 78, 10, 57,176, 93,203,158,214, 28,246,237, 16, 81, 60,116,166, +171, 53,204, 87,208, 89, 38,117,218,255,120,160,145,130,104, 61, 74, 73,186, 62, 36,142,114,136,116,157, 69,170,152,210,221,130, + 29,124,170,102,136,105,189, 32,198,169,139, 25, 86, 42,136, 66, 12,227,250,161, 19,238,251,116,141,189, 75,187,236, 48, 76, 38, + 98, 76,235, 9,157, 63,139, 9,140,109,178,192,141,148,162,247, 33, 9,251,172,135,104,193,201,180, 20, 90, 45, 56, 93, 90, 84, + 93, 32, 69,226,141, 71, 9, 19, 20, 14,143,139,158, 32, 34, 42,200, 36,110, 19,130, 60,192,177,237,113, 90,113, 89,195, 97,231, +159,171,244,197,160,107,136,195, 26,228, 5,104,253,163, 15, 63,226,179, 63,249,227, 9, 9,233, 3,173,239,137, 65,144,235,140, +157,221, 61,242, 34,167, 42, 50,198,101, 78,110, 20, 34,130, 80, 2, 61,252,123, 33, 68,178, 66,167,216, 85, 23,136,131,100,162, +115, 46, 69,125,170,212, 63,154,139,179,161,136,233,252, 18, 35, 35, 45, 40, 5,100, 74, 83,168,228,245,246,131,240, 74, 12,216, + 80,149, 25, 22, 89, 70,191,182,212, 58, 97, 92,215,221, 6, 27, 60,189,107, 19,220,196,123,148,201,185,122,229, 38,211,122,198, +100, 54,227,242,246, 30,179,170,198, 8, 67,173, 13, 35, 33,153,236, 78, 40,140, 70,219,136, 44, 13,126, 0,207,100, 82,224, 51, +153,130,185, 66, 68,217,128,233, 60,210, 38, 84,107, 52, 10,101, 82, 54,187,201, 85,202, 73, 55, 10, 35,192, 32, 41,140, 66,231, + 26,187,233,153, 29,116,240,104, 5,109,143, 47, 21, 20, 26,169,147,175, 93, 54, 1,185,238, 16,147,114, 72,235, 3,129,194, 92, + 25,147,141, 12,246,116, 69, 55,239,105, 30,156,112, 37, 56, 94,201, 13,227, 66, 51,207, 53, 87,246, 39,188,245,153, 59,132,105, + 75,245,214,132,203,111,223, 68,124,110,159, 47,254,199, 63,199, 23,126,226, 10,127,255,239,254, 44, 89,222,240,237,111,126,130, + 28, 60, 6,233,221,147,182,239,146,192,233,201,199,236,190,246, 42, 58,244,200,222,167, 4, 47, 37,209, 90,178, 38, 38,176,144, +119,116, 65,112,190, 88, 34,176,248,213,138,222, 90,156,204,249,181,143, 62,193,127,242,125,194, 39, 31, 19, 30, 63, 34, 60,252, +148,112,178, 32, 60, 58,160,107, 2, 99,239,249, 79,174, 22,124,241,202,148,173,105,206,135, 75, 71,179,108,112, 66,160,165, 71, + 32, 56,247,145, 50,194,201,166, 73, 34,178, 16, 88, 91,193,169, 80,180, 90,178,118,129,214,121,254,118,173,249,185,253,146,215, +102, 25, 61,138,211, 32,120,191,113, 56,173, 57,148, 38, 9,180,150,167, 24,215,147, 69, 64,102, 88, 37, 89,245,176,238,122,116, +111,169,136, 56,219, 49, 82,129,109, 19, 41,178, 12,239, 36,186,200,145,217, 8, 35, 13,101, 85,209,184,200, 89, 20,120,147, 49, + 14,142,203,163,154, 82, 41,164, 54,152, 40, 81, 90, 35,133, 64, 72,195, 19,239,145,210,240, 88, 4,148,144,116, 41, 35, 47, 29, +200,149,166,208,249,128, 39,141,188, 82,100,188, 42, 35,123, 72,138, 44,167,150,130, 17,146, 67,219,241,131,166,229,164,223,112, +220,119,124,212, 44,121,186, 89,114,116, 62,231,241,147, 39, 60,190,255,132,179,123, 15, 89, 31, 29,192,106, 9, 7, 39,131,246, + 40, 29,158,163, 74,107, 71, 84, 24,232,152,241, 47, 12, 74,249,255, 82,224,253, 11,223,159,141,227, 93,143,235, 58,238,109, 60, +223, 94,174,105, 68,228,219,203, 13, 39, 6, 30,186,200,121,148,144,231,228, 91,151,232, 84,202, 81,232,133,194, 5,143, 82,138, +121,223,225,148,196, 59,199,121,219, 64,132, 54, 56,132,179,200,152, 68,164,209, 90, 54, 62, 48, 46,203,244, 60,155, 68,111,204, +148, 76,177,164,190,199,199, 72,136, 2, 33, 37, 82, 36,253,135,183,145,179,118,205,178,235, 89, 7,203,218,182, 52, 33,176,218, +172,232,250,158,211,102,131, 11,158,243,182,195,117, 29, 83, 13,190,239,145,206,146,135,128,237, 58, 42,161, 32,132, 20,144,131, + 64, 17,153, 74, 65,231, 29,219, 66,160,165, 96, 36, 36, 59, 58, 99, 58,154,178, 95,212, 76,243, 17, 85, 81,145,231, 35,234, 98, + 76,105, 74,242,188,102,183,170,153,228, 57,179,186, 70, 56,199,100, 60,166, 48, 57, 10, 65, 41, 82,116,120, 16,137,115,242,196, +245,212,198,176,112,145, 54, 6,126,176,110, 25, 73,201,119,108, 71,140,105,149, 32,130,227,117, 99,232,156,227,237,209,132, 15, +218,150, 61,169,177,193,242,198,100,155, 15, 55, 43, 62, 51,222,229,187,103, 7,252,248,222,149,255, 31,150,182,240,124,124,251, +108, 44,159, 13,194,176, 11,116, 42, 67, 76,222,133, 26, 62, 14,133, 94,136, 84,236,132,120, 62, 32,106,237, 96, 63, 75,169, 73, +148, 58,221,176, 82,253, 48, 74,118, 24,141,251,206, 83,233,228,121, 63,233, 82, 33,151,128,240, 73,248, 64,103, 97,221,128,111, +233, 84,218,223, 33, 20,219, 3, 12, 69,249,200, 88, 72, 22, 33,125,208,117,109, 32, 10,255,124,140,222,117,105, 5,112, 1,212, +201,139,212,133, 63,139, 50, 29,138, 54,131, 98,191,115,207,119,234,132,193,242, 22,158,157,164,211,255, 51,168,250, 93, 76,138, +120, 37,233,219, 33,231,188,237,159,219,226,164,127,190,247,206, 37,139, 54,114,212, 56,164, 12,212, 8, 54,222,145,107,133, 33, +162, 93,160, 23,129, 12,137,141,224,162,195, 40, 69,219, 57,162, 16, 52, 65,208, 55,125,250,157,220,102,152, 46,252,217,193,220, + 96, 24,216,155,113,249,242, 21,144,130,233,100, 11,219,116,140,235, 17,123,151,118,168, 70, 57, 91,147, 2,136, 24,165,159, 49, +131,252,160,103, 80, 67,208, 11, 2,156, 15, 68, 23,177,189, 35,120,200,242,148,128, 55,214, 34, 9,229, 34,100, 82,166,167,139, +148,140,214,133,200,169,117, 4, 17, 49, 33,210,251, 64, 39, 65,169,100,157, 49, 74, 97,234,156,229,167,135, 28, 46,150,172, 68, +164, 87,154, 94, 27,114,157,113,119,251, 18,183,182,246,169, 39,219, 76,102, 51,174, 94,221,229,141,187,215,249,201,183,110,145, + 77,167,212, 91, 83,246, 71, 53,178,117,100,147,146, 50,203,160,115,104,163, 17,179,196,149, 86, 90, 17, 10,153, 44,121, 17,164, +243,136, 65, 71,208, 35,240, 90,130, 78,153,241,218, 40,140,145, 20, 82, 81, 74, 40,163, 72, 0, 27, 31,121,231,196,113,184, 95, +210,198, 21,253,147, 19,186, 71,167,248,117,139, 40, 51, 68,110,144, 34, 32,164, 70,230, 26, 25, 34,162, 75,239, 5, 17, 98,250, +187, 42, 71,204,114,244,245, 49,249,172, 68, 25, 69,172, 37, 49,151, 72, 9, 7,167, 43, 58, 89, 82,141,102,136,106,196,143,239, +141,249,207,189,227, 11, 46,242,155, 31,220,231, 35, 17,120,237, 43,183,217,125,185, 96,116,189,100, 45, 3,156,244, 40,224,171, +255,240,231,249,151,255,195, 59,124,231, 87,190,206,171,127,231,243, 20,206,162, 67, 64,134, 64,101, 45, 7, 77,143,127,250, 41, + 31,254,234,183,216,236,103,216,245,146,157,245, 9,187,243, 83,182,207, 14, 16,177,227,126, 16, 92,157,108,115,125, 52,166, 48, + 25,186,219,240,213,246,140, 59,221,130,141, 50, 60, 93, 52,188, 62,202,185, 57, 46,248, 90, 11,191, 83,228,168, 33, 71,104, 99, + 10,140, 49,196, 40,240,235, 53,210, 57, 92,107, 57,183, 61, 93,159,172,138,197, 98,141, 88,110,232,187,192,219,181,230,213,105, + 65,110, 52, 39,125,228, 55, 14, 27,150, 4, 76,157,145, 85, 37, 93,208,220, 59, 58,228,252,228, 0,225, 26,136, 17, 43, 20, 62, + 6,214,109, 79,227,122, 70, 64,180, 61,133,134,138,180,139,205,140, 36,203,106,234,178,164, 55,134,141,147,136,178,164,172, 70, + 4, 23,152,106,205, 56,215, 84, 58,199, 40,147, 24, 11,121, 18,226,158,186, 64, 39, 53,231,209,115,210,247, 20,164, 3,209,102, +200,189,184,156,101,156, 73,201, 76, 41,150, 81, 48,149,145,215,178, 20,222,179, 21, 61, 75,215,179, 10,142, 7,182,227,215, 79, +207, 56,177, 27,150,139, 57,113,177, 72,141,200,201, 25,177,109, 97,125,142,144, 33,133, 96,245, 3,179, 67,166,136,105,140, 68, +244,225,133, 83,114,130,217, 64,248, 43,125,124,255,168, 34, 31,254,146,226,238,242, 12,167, 75,156, 16, 56,105,120, 98,114,206, + 46, 93,226, 81, 94,115, 54,222,101,119,186,203,108,119, 31, 47, 36, 50,175, 88,106, 73,231, 45,182,239,105,186, 22, 99, 12,193, + 57,154,152,178, 36,186,118,131,183, 22,221,119, 8,151,162,108, 51,239,144, 17, 86, 93, 71,149, 25,182,124,164, 9, 30, 33, 37, + 89,219, 13, 33, 43,142, 82,128,243, 14, 47, 37,116, 9, 39, 61,119, 61,139,232,120,218,119,184, 64, 58, 68,132, 72, 46, 2,219, + 72, 70, 2,218,174,199,250, 84,107,174,229,134,130,136,114,158,145, 78,246, 75,233,147, 48, 80, 18,153, 42,141,140,130,189,114, + 4, 17,246,171, 41,187,229,132,253,233, 30,120,207,184,218, 66,153,156,158,200,118, 61,195, 71,136,202,144,143,106,118, 77,193, +168, 30, 97, 16, 20,121, 73, 32,173, 76,147, 36, 77,162, 17,116,125, 79, 67,164, 18,146,135,182, 67, 16,121,220,116, 76,144,252, +174,179, 67, 51,155,106,233, 76, 74,238,249,192,127,180,179,205,135,253,134,175, 20, 21,167, 10,246,178,130,247,230,167,252,244, +246, 62,239,109,150,252,196,222, 85,126,235,224,225,191, 38,246,251, 51, 16,141, 25,184,237, 67,215, 13, 67,142,164,122,110,233, +202,205,115, 97,220,139, 7,128,126,192,154, 74,157,210,140, 80,169,216, 5, 63, 76, 1,178, 36,170, 67,160,180, 98, 44,147, 7, +247,172,237,168, 68, 26, 3, 27,159,130, 71,112,126, 16,135, 13, 30,242, 24,241, 81,242, 90,145,161, 73, 5,232, 40, 68,116,112, +236,104,201, 88, 72,142, 93,155,198, 87, 23, 42,241, 48,164, 50,169, 60,173, 8,172, 27,210,214, 6, 73,129, 15,233,141,166, 72, + 42,255,174, 31,236,119,109,242,224,251, 54, 21,244, 23,167, 27, 58, 79,227, 35,165,211,225, 70,203,231,192, 26, 49, 8, 1, 47, +212,243,118,216,215, 91, 7, 93, 67,140,146,243, 85,199,198,192, 52,164,147,164, 28,222,137, 54,198, 52, 60,144, 49,217,110,172, + 67,239,237,241,157,165,227, 53,229, 56,246, 49,121,240,237,176, 99,151, 60,103,209,191,240,245,224,253, 31,240, 99, 95,126, 27, +162,160, 91, 55, 52, 93, 75, 12,112,114,188, 32, 56,205,229,253, 41, 50,138,164,110,207, 82,184, 9, 49,237,246,189,136, 88,231, + 81, 33,210,181, 46,105, 1, 69,234,180,145,145,202,104,106,157,186, 25, 31, 35, 27,235,159,229,255,246, 62,157,180, 54,222, 51, +239, 35,185, 74,123,248, 16, 97,233, 28, 77,136,120,163,104,148, 98,215,148,232,233,140,107,245, 4, 47, 12, 74,101,140, 77,201, + 91,147, 45,234, 24, 57, 62, 61,161, 95, 47,144, 62,224, 54,150,178,183, 76, 16, 92,158, 86, 76, 47, 79,241,163,156,172,177,140, +148, 34,100,169,135, 21,153, 70,150, 25,162, 48,132, 33,198, 81, 93,160,252,125, 28,130, 43, 36, 82, 43,116, 72, 7, 12,161, 69, + 50, 63,132,136, 70,144, 41,137,138, 17,233, 61, 15,207, 44,246,220,226, 99, 78,254,210, 22, 71, 33,195, 44, 55,184,239, 31,208, +172, 91,226,162, 69, 54, 29,172, 59,226,162, 33, 62,221,224, 30, 29, 33, 90, 75, 92, 54, 72,169,209,181, 70, 79, 42, 86,179,130, +197, 86,193,114, 82,225, 70, 37, 22,193,193,201,138,213,233, 41, 70, 6, 68, 94,242, 31,206, 74,174,232,140, 42, 42, 38,120,238, +105, 69, 94, 20,140,119, 46, 49,189,122,137, 27,175,220,226,246, 87,238,144,125,249, 37,254,179, 66,243,210,207,222,225,105,181, +224,157,255,254,143,248,147,223,120,151,207,127,229, 22,255,227, 63,249, 29,142,190,249, 1,211,109,197,150, 44,120,245,213,125, +174,120,203, 79, 42,193, 87,203, 49,111, 86, 51,102,249,136,135, 70,179, 46, 39,124,245,165, 43,188,117,117,143,219, 87,118,184, +148,143,248,169,157,171,188, 49,221,230,229,224,248,189,222,242,255, 60, 60, 69,202,130,127,220, 75, 78, 51,197,189,113,201,189, +237, 17, 31,205,106,244,164, 98, 60, 42,208, 42,163, 95,108, 56, 63, 95,128,136, 40, 29,185,225, 54,124, 81, 9,222,232, 87, 92, + 19,158,243, 78,176, 18,146,167, 22,254,217,131, 13, 31,158,174,233,137,200,113,201,206,172,228,242,168,166, 18, 37, 11, 20, 31, +157,159,115,182,217,160, 67, 67,215,183, 40,231, 19,238,183,235,217,207, 37,165, 72,110, 11, 39,101,138, 90, 21,145,133, 11,228, + 82,160,133,164,115, 22,215, 7,140,132,105, 93, 83, 73, 67,149, 41,114,149, 72,123, 81,192,153, 13,116, 49,221,215, 22, 40,149, + 98, 41, 36, 75, 36, 47,231, 25,175, 21, 53, 39, 81, 98, 5, 92,215,138, 93, 37, 57,113,129,195, 16,249,183, 71, 99, 58,151,238, +199, 39, 1,190,190, 90,178, 21, 45,135,135, 39,233,253,127,190, 30,216, 26, 46, 9,111, 59,143,232,134,184,228,139, 28,114,169, +147, 94, 98,208,246,136, 48,172, 38, 73, 90,158, 11,144,231, 95,244,248, 75, 11,187,214,196, 34, 35,150, 37, 33, 31, 19,242,138, + 80,143, 8,245,132,176, 53,195, 95,217,199,223,186,140,187,178,143,187,126, 11, 55,221,198,141,118,233,138, 17, 55,242,146,237, + 73,133,208, 6,235, 3,167,203, 6,103, 91, 68,244, 24,231,232,135, 88,236,190,217,224,125,106,128,100,183, 38,244, 45, 83, 34, +218,182, 20, 49,160, 9, 72,215,147,133, 68,165, 28, 41, 77,215,247,168,220, 16,218,110, 88, 69,166,130,231, 87, 29, 70, 40,230, +237,134,181,237, 57,179, 13,202, 7,100,244, 20, 65,240,165, 50,227,181,170,224, 70, 89, 48, 53,130, 50, 66,215, 56,148,128,137, + 18, 76,149, 98, 44, 53,106,200,166, 24,101, 25,219,121, 77,129,160,154,108, 39, 52,116, 86,176, 83,207, 64, 42,182,234,105,154, +234,148, 19,108,244,228,229,132, 50,171, 88, 71,203,104, 60,101, 84, 86, 76,165,162, 30,143, 17,222,145,149,229, 51,108,118,136, +129, 60,203,211,164,161,239,176,222,179,118,150, 35,223,209, 6,199,161,235,153,119,158,223,107, 27,162,179,105, 10, 3,140,165, +100, 25,225, 31,236, 76,248,229,179, 37,191,184,181,197,159,180, 13, 87,165,226,126,219,240, 51,219,251,252,225,114,206,151,234, + 41,255,114,121,202,191,121,227,206,191,166,148,182, 11, 16,188,139, 41,199, 91,188,128,145, 45,179,231, 9,108, 65, 13,187,105, +249,188,219,247,110,240,153,155,231,184,216,222,131,242, 84, 49,176,233, 3, 85, 85,160,131, 39,148, 37,141,119,196,102,195, 56, +207, 57,219,180,228, 82,176,177,142, 92, 11,172,181,100, 34, 69,126,166,159,153, 65, 88,131,148,236, 23,146, 54, 66,239, 29,185, +130,235, 74,243,212, 5,178, 40,208, 56,240, 58, 21,226, 63,155, 62,183, 57, 79,227,248,233,236,249,117,108, 6,150,123,166,211, +206,126,211, 63,247,226, 67,218,203,255,168, 44, 21,111, 65,141,135,160, 23,255, 67,214, 54,138,148, 18,151,186,127, 9, 34, 7, + 29,210,239, 0, 16, 59, 32,227,248,112,133,218,139, 92,178,130,221,188,160, 42, 13, 83,224,208,123, 64, 82, 2,141, 81,168,195, + 67,126, 66, 73, 22, 62,114,213,120, 30,106,153, 18,220, 46,172,117,127,193,215, 39,247,238,115,247,206, 93,188,116, 24,163, 80, + 66,113, 54,159, 51,221,154,114,112,176,230,234,229, 9, 40,137,136,130,177, 17, 44, 8,184, 76, 17,219, 52,134,180, 49, 32,181, + 72, 1, 36, 34, 29,220,188, 77,138,239,165, 76,250, 66, 41, 32, 87, 41,172, 38,196, 52, 94, 35,132,164,234,143,158,115, 11, 15, +186,158,206, 57,114,160, 48,146,210, 24,150, 34,242,250, 94,205,149, 60, 35,168,136, 50,154,229,201,146,147,179, 99, 26, 21,217, + 22, 5, 63, 51,221,166, 46, 75,182, 46,141,209,163, 28,217, 69,108,105,136, 70,210, 58,199,165,221, 9,106,119, 76, 53,239, 89, + 57,203,121, 8,228, 49, 32,137,104,163, 80,133, 30,244, 21, 32,181, 67, 12,150, 74, 37, 4,194,250,180, 22, 25,226, 99,133, 15, +105,250,137, 74,163,238,232, 9,153,230,223,248,220,140,227, 71,107,138,203, 91,204,246, 74,158, 78, 86, 60, 62,172,177,149, 37, +211,145, 8, 92,162,227,180,105,185,254,210, 62,157,236,249,214, 31,124,135,187, 69, 75, 49,170,200,166, 19,140, 74,153,235, 31, +182, 13, 7, 25,124,235,227,251,100, 85,141, 81,146,163,245,138, 27, 59,151,144, 1,166,221, 49, 71,118,143,203, 82,161, 0, 17, + 2,215,102, 99,108,132,166,245, 44, 59, 75,159, 37,182,194,127,153,149, 76, 17,252,164,146,228, 63,253, 83,252,224,115, 43,234, +227, 67, 54, 31,126,143, 95,124, 99,151,229,106, 13,167,115, 94,223,209,236,230, 37, 86, 73,176,145,220, 36, 91,209,182,140,188, + 33, 34, 97, 58,230,234,222,140, 81,153, 19, 4,236, 8, 69, 17,210, 65,108,164, 4, 63,119,220,240,251,173,227,151, 63,124,140, + 95,156,227,110,222,132,151,247, 97, 84, 32,164,224, 88, 75,222,172, 43,222,190, 50,130, 43, 99, 62,125,103,206,131, 39,247,153, +246,107, 94, 25,101,236,196, 64, 94, 84,220,113, 29, 31,206,159,242,127,124,175,225, 35,149,232,100, 58,147,196,160,216,180, 26, +145,101,108,215, 57, 87, 94,185,206,102,123,130, 59,188,196,236,248, 35,246,215, 11,114,215,242, 56, 43,248,104, 25,153, 24,197, + 90, 20, 68,165,200,138, 60,241,190,157, 37, 68,201, 44, 51,116,222,178,233, 28, 83,173,200,202,140, 3,219,225,188, 64, 27,201, + 90,192, 72, 41, 64, 49, 95,109,208,178, 96, 37, 90, 78,176,236,100, 5, 51, 41, 89, 57,207, 29,109,240,209,113,179,204, 57,160, +229, 82,208,140,149,230,172,111,121,173,204,112, 68,126,165,177, 60,104, 58,246, 11,197,217,186,101,108, 20,244, 61,213,100,196, +230,124,158,166,120,157, 27,178, 28,210,174, 42, 14,152,103, 49,196,184, 70, 13,194, 5,162,145, 63, 84,164, 5, 36, 46,190,115, +127,174,120,191, 88,192,127, 84, 65, 39,207,146,190,167,168, 17, 87,174,240,229,235,151, 41,178, 49, 31,135,192,227,205, 26, 17, + 93,226,238, 3,152, 10, 17, 83,116,109,180,142,168, 3,149,146,136, 34,167,111, 28, 90, 70,150,237,146,245,106, 78,219,183, 76, + 67, 67, 57,217,162,105,150, 88,219,130,144, 8, 2,210,123,116,240,212, 82, 80,111,230, 20, 58,103, 25, 28,151, 90,199, 90,103, +180,202,160, 17, 44,108, 79, 37, 20,174,235, 25, 27,205,122,189,192, 75, 1, 93, 64, 11,201,252,252,156, 85,136,172,250,134,162, +119, 72,239, 16,120,246,137,220, 44, 74, 10, 37, 81, 49,176, 4,156,118, 52,163,140,104, 35, 99, 97, 24,229,154, 45, 93,226,189, +103, 42, 20, 54,146,220, 42,179, 75, 4,239,240,163, 29,172,235,144,229,104, 64,177, 26,148, 78, 77,204,246,100,139,229,102, 73, + 94, 84,132,168,201,164,129, 76, 49,174,199,216,182,101, 50,174, 17, 46,164,120, 89, 36, 89, 38,177, 93,159, 8,155,218, 48, 95, +156,178,244, 61,171,174,225, 9,145,123,155,150,247,205,208, 60,102, 25,248,228,192, 90,153,146,255,250,210, 22,255,237,193, 41, +255,221,141,171,252,227,167,135,252,253,237, 41,247,108,207,141,114,196,255,122,112,192,191,119,233, 18,255,124,121,206,191,123, +233, 26,191,127,248, 20,197,206,221, 95, 34, 31,216,225, 38, 27,196, 96,234, 57,149, 44,252, 21,198, 57, 90,167, 16,147, 11, 75, + 26, 47,140,213, 61,207,169,112, 23,208,149, 11,113,221,179, 64, 4,159, 58, 94,235, 83, 39, 92, 21,100,163,154, 24, 35,151, 71, + 37, 85, 8,200, 92,147,245, 14, 19,192, 32,152,219, 62,177,197, 67, 36, 58,139,119,201,228,227, 90,151, 14, 23, 82, 38, 21, 57, +201, 74,214, 10,197, 37,173, 89, 74,168,133,102,233, 29, 19,173,105,188,163,139,146, 77, 8,233,116,244,103, 89,233,145,244, 4, +247,107,200,202, 84,152,241,233,119,189,232,212,173, 79,187,180, 24, 6,205,192,160, 48, 15, 46, 61,135,179,173,244,221, 13, 7, + 13, 72, 99,125,212, 48, 13, 48,195,140,203, 13,227,254,152,126,143,224, 94, 88,111, 12,138,124, 21, 89, 55, 29,135, 86,241, 82, +161,120,106, 29, 82,169,148, 74, 23, 19,205,205, 13, 7,129,167,173,227,212,246, 44, 93,196,218,144,198,250,222, 15,215,240,163, +191,238,189,247, 33,175,252,216,103, 40,234,146,172,168,184,125,247, 37, 66, 23,147,208, 79, 73,102,211,154, 66, 43, 2,130, 60, + 87, 73,188, 31,160, 15,150,174, 77, 98, 63,231,211,148, 48,248,128,141,129, 73,101,104,123,143,144, 2, 45, 34, 82,165,209,123, +231, 35,185, 86,212, 90,210,184,144,124,236, 33,210,249,192, 73,219, 19, 34, 84,185, 73,147, 1,163,120,184,105,185, 34, 97,247, +251,167,156, 29,156,210,172, 55,188, 90, 21,252,120, 61,229,198,254, 22,179,237, 9,123,121,201, 40, 42,140,117,112,214, 34,231, + 27,138,121, 71,239, 35,125,231,169,124,164,152, 84,132, 92,113, 26, 29,143, 36,204, 53, 24, 45, 17, 90,162,202,156, 40, 85, 90, +209,132,180,139,198, 70, 2, 73, 39,128,124, 30, 81,160,132, 64, 41,133, 48, 73,193, 27,149, 74,196,191,253, 49,163,203, 99,230, + 81, 97, 90,199,189,243, 6,191,182, 72, 37, 41,242,140,160, 12,148, 21,217,229, 93,102,151,198,232,155, 59,236,237,238,241,222, +135,223,231,192, 40,158, 68,248,211,249,156,127,241,209, 39,252,223,191,252, 33,223,253,173,143,121,242,221,115,238,127,235, 41, + 63,248,230, 1,143,191, 51,231,189,175, 61,225,221,211, 35,238, 77, 36,127, 18, 35, 47,111,111, 17,235,146,249,143,221,162, 51, +134,217,155,183, 17,215,118,161,168, 57, 63,239,153, 20,138,151,115,195,142, 0, 35, 4, 65, 74, 44,176,223, 54,188, 28,160, 78, + 87,136, 48,146,219,163, 41, 69,158, 92, 23,214,167, 52,177, 72,160, 19,145, 21, 2,103, 50,182,171,130, 40, 18, 71,193,104,197, + 40,207, 48,133,230, 20,201,147, 40,249,194,213, 25,183, 38, 99,122, 10, 38,235, 6,113,186,100,125,180, 68,228,134,185,139,108, +103,138, 91,165,225,202,164, 96,186, 91,161,119,118, 24,159, 58,110,133,134, 92,105,100,140, 16, 5, 83, 1, 69,220,240,253,195, +167,248,205, 28, 86,235, 20, 61,217,123,106, 36,219, 66, 82,107,193,164,202,248,210,229, 9, 63, 87, 78,121,115,179, 65,207, 15, +120,180, 90,240,125, 31, 49,194, 18,237, 6, 17, 3,189,117,196, 24,113, 94, 80,122,203,117, 26,110,216,158,171,194, 83,216, 13, +125, 51,103, 79,151, 84, 50,114,110, 29,211,188, 2, 34,167,235,142,162,200,152,247,150,117, 8,188, 57,158,240,199, 77,207, 79, +140,106, 76,150,113, 24, 2,159, 41, 11, 58, 27,184,149,101, 84, 69, 77,229,122,174, 22, 21,235,232,169,179,156, 83,103,217,209, +154,153,146,132,216,177,105, 61, 75,235,120,228, 67,154, 84,246, 22, 86, 77,106, 30,130,123,158, 14, 23,211, 71,133,208,105,133, + 39,244,112, 95, 94,136, 36, 7,221,132, 4,100, 8, 63,252,231,103,154,138, 23, 10,191, 76, 66, 89, 97, 52,236, 94, 38, 78,167, +112,247, 54,188,242, 38,255,254,235, 95,228,165, 91, 55, 25,143,119, 57,245,112, 96,138,164,198, 71, 19,116, 70,140,142, 32,100, + 42,122, 74, 16,186,150,118,179,132,213, 57,151,148,199, 45, 78, 56, 61, 63,224,119, 30, 61,162,136, 61,149,150,204,155, 21, 82, + 43, 54,109, 75, 41,192,119, 27,100,215,176, 75,100,199,187,148,150, 40, 21,187,182, 39, 71,176, 45, 5,165,179,232,190, 65,199, +200,194,183,172,251,134, 85,187,193,246,142,195,243, 51, 54, 77,199,217,249, 9,125,211,176,238,214,136,174,167,196, 81,186,158, + 50, 4,222, 30, 21, 84, 74, 81, 75,137, 33, 50, 70,144, 9,207, 30,138, 59,153,228,229, 66,179, 47, 4,183,117,198,231,138, 17, +149,183,188, 85, 76,168,198, 59, 92, 67, 83,142,182, 80, 49, 80, 84, 51,164,209,104,147, 51, 46, 70, 72,149,161,243,156,206, 91, +242,170, 6,165,168,181, 65,228,134, 74, 25, 60, 80,215, 37,222, 38,237, 72,146,140, 37,139, 31, 64,223,245, 4,215,163,162,224, +160,155, 51, 15, 61,143,154, 5, 31,250, 72,211, 54, 4, 33,137, 46, 37, 38, 34,224, 23, 70, 25, 95,223, 88,254,171,253, 75,252, +195,199,143,249,111,174, 92,229, 55,207,230,188, 90,230,252,243,179, 57,255,206,238, 46,191,219,172,248, 74, 61,225,187,109,195, +207,236,239,163, 24,223,249, 37,134,228,234,103, 40, 87, 31, 82,241,177,253, 95,173,176,135, 11, 5,248,144,141,174,228,179,177, +119, 42,218,242,121,161, 18,164,221,180,148,207,147,217,132, 76,105,109, 98,144, 71,215, 37, 91,101,129,145,146,206,167,206, 38, +119, 1,105, 36, 65, 8,106,239,232,108, 79, 31, 34,113, 16,233, 41,231, 9, 46, 32,227,160, 7,158, 47,210, 1,165, 11,168, 42, +137,164,158,120,203,174,212, 52, 70,176,140,130, 22,207, 18, 48, 58,121,149,125, 55,168,216, 95,188,222, 11,218,221,197,186, 32, + 12,192,157, 16,134, 34, 62, 4,212, 68,159, 58, 96, 51,232, 0,156, 75,133,120, 50,133, 73,145,242,162,155, 52,129, 64,103, 3, +144, 39, 41,250, 25,186,236, 52, 22,143,195,212,162, 75, 7,132,100,190, 76,207, 87,140,207,179,157, 61,220, 91,119,188, 58,206, +121,208, 58,218,144,246,236,243, 62, 32,124,100,222, 59,244,176,159, 62,105,147, 24, 48,177,224, 47,226,129,254,226,215,244,149, +183, 94, 99,182,183, 77, 57, 74,251, 69,173, 76,242, 23, 11,157,212,168, 6,252,144,128,100,148,120, 54,146,111,173,195,217, 56, +128, 51, 34, 46, 68,188, 79,162,188,186,214,140,139, 11,223,182, 24, 50, 34, 4, 82, 8,250, 24,217, 88,139,141,145,214,185,103, + 33, 18,142,136, 25,124,169, 79,206, 27, 78, 91, 75, 89, 23,108, 13,177,186,181, 82,148,101, 78,221,123,132, 23,200,117, 79,214, +121,124,215,226,251, 64,167, 33, 40, 73, 62, 42,168,148,196, 52, 14, 19, 4,186,179, 20,227,138, 32, 21, 15, 6, 64,210, 44, 55, +216, 16, 17,117,145,196,107, 34, 9,245,144, 98,200,102, 18, 16, 99, 18,238,137,132,193,149,198, 36,196,170,148,200,152, 70,184, +253,172,128,227,142,145, 48,132, 43, 35,212, 89, 75,253,141, 71,212, 55, 50,194,106, 73,189,238, 9, 27,216,222, 42,216,158, 21, +148, 85,142,237, 29,110,171,224,165,215,111, 48, 63, 92,179,152,207, 57, 56, 60,226,254, 59,103,184, 24,113,235,126,176, 26, 41, + 2,142, 56, 60, 56,237,176, 77,203,222,103,239,210,188,121,155,241,237,109,102, 90,240, 55,103, 35, 94,149,138,167,125, 75, 62, +169,216,185, 49, 99,186, 63, 33,107, 60,223,118,142,243,174,167,115,158,105, 81,240,165,124,130,107, 23, 24, 37, 8, 58,226, 46, + 95, 35,247, 45, 74,192,218,182, 60, 42, 10,158,110,206,233, 92,199,166, 89, 51,239, 90,142,188,227,220, 11, 58, 36,167,173,165, +223,244, 84, 85,198,121,107, 57,207, 52,215,246, 42,182,170,140,105,109, 88, 96, 56, 12,146, 71,239,127, 3,115,126, 68,190, 17, +184,147,134,251, 66,113,117,148,115,187,204,120,121, 39, 71,100,138, 75, 59, 53, 91, 78,145,183, 93,250, 40,146, 2, 47,224, 84, +106,102, 89,205,229,190,165,223, 28, 51,251,228, 29, 86,135,247, 40,124,129,237, 28, 58,128, 80,146,215, 13,236,201,136, 89, 55, + 28, 62,125,200,159,156, 46,248,160,235, 41,130, 77,136, 99,107,105, 90,203,198, 10,246, 84,207,181,216,243,102,132,219, 72,118, +109, 2, 47, 85, 82, 37,102,119, 8, 72, 21, 57, 93,174,153, 55, 61,107,111, 17, 94,178, 83, 87,188, 61, 29, 35,165,226,199,202, +146, 81,149, 49, 69, 32,155, 13,143,150, 75,214,222, 49,210,154, 49,142,135,206,210, 44, 78, 41,148, 97,175, 40,184, 92,213, 68, + 33,120,119,189,230,188,233, 56,179, 61, 31,110,154,180,186,115, 46,233,138,194, 48,241,107,125,170,222,147,113,250,174, 50,132, + 73, 66, 64, 97,116, 18, 87, 14, 17,199, 23,133, 91, 13, 69, 93, 93, 24,145, 46,254, 14, 80, 90, 35,140, 70, 78,119, 16,251,123, +136, 59,183,224,245, 55,225,218, 13,184,250, 18,236,221,228,238,238,117, 62,191,191,197,116, 84, 80, 22,134,211,206,242,201,226, + 20,188, 37, 70, 71,236,122,194,102, 77, 88,159, 17,150, 11,226,227,199,132,213, 25,241,195,143, 56,222, 44,248,238, 71, 31,113, +255,244,128,239,190,127, 15,119, 58,231,112,221,112,180, 88,147, 27,120,112,124, 76, 17,122, 14,142, 78,152,224,216, 18,145,157, +102, 67, 38, 21,133,128,202,246, 76,165, 70, 18, 40, 92, 64,185,158, 16, 28, 85,179,102,215, 89,122,103, 25,183, 13,133,235,152, +250,150,151,155, 21,175, 7,207,155, 50,240,122,215,242,213, 76, 51,113, 45, 55,137,236,234, 68,104,219, 86,154, 26,216,213, 5, +149,115,236,133,200,109,173,184,161, 4,175,168,130,151, 76,206,181,124, 76, 25, 5, 87,202, 45, 84, 86,176, 43, 11,172,150,236, + 25, 3, 85,157,146, 25,235, 26, 83, 22, 88, 4, 58, 87, 24,173,145,131,102,204, 72,129,212, 89,170, 33, 33, 82, 21, 9,243, 26, + 69,250,188,216,180, 61, 82, 43,122,107,217, 52, 45, 17, 79,192,209,249,150,165,237, 88,118,107, 14,188,231, 7,203, 22,111, 45, + 65,184, 36,202, 13, 22,132, 66, 70,248,185,209,152,223, 89,110,248, 47,118,183,249,223, 79,231,252,244,180,228,107,231, 27,254, +222,222, 46,191,124, 50,231,239,110,111,241,141,126,195, 79,143,198,252, 95,243, 51, 20,147,151,127, 9, 61, 40,217, 7, 16, 26, +153, 74,163,104,147,253,165,138,202, 63, 87,216,229,160,198, 20, 50,117,118, 46,166,150, 77,136,231,106,241,190, 29,238,198,193, + 43,205,176, 87, 87, 67,216,184, 76, 79,230,222, 40, 25,234,199, 82,160,140,164, 9,145, 82, 73,198, 42,112,210, 36,144,128,247, + 17, 33, 35,177, 11,207,206, 35,193, 37,186,220,179, 29,126,232,152,152,140, 69, 27,217, 26,167,200,187,131,181, 99,100, 20,157, +144,228,153, 34, 72,129, 68,146, 27, 69,215,118, 63,250,122, 47,196,125, 74,167,195,142,144,207,135, 88,201, 83, 4,114, 56,180, +244,118, 64,222, 14,172,119,100, 2,225,244,205,160,210,203, 6, 40,204,144, 51,159,107, 38, 10, 58,149, 14, 63, 25, 17, 47, 84, +218,129,203,240,156, 0,199,112,224,146, 98,144,175, 40,158, 6,199, 37, 35,217, 81,146, 67,235,217,143,176, 12, 48, 65, 96,173, +103, 17,161,233, 2, 34, 4, 98,102,210,193,227,226,223,252, 11,190,158, 84, 21,159,189,243, 18, 16, 89,175, 54,116,155, 6,231, + 60,101, 93,179,119,105,130, 12,130, 44, 55,212, 70,167, 4,164, 16,201,134, 32, 16, 31, 99,234,134, 92, 68, 32,153,212, 6,103, + 61,253,224,248,203,179,164, 24,143, 34, 21, 65, 49,176,124,146, 35, 39,117,233,193, 71, 58,235,233,250,192,249,198,114,180,234, +152,175,187, 52,234, 30,229,124,239,225, 49, 79,219,142, 85,140,108,156,227,241,102,195,185, 0, 21, 60,217,118, 69,147, 27,178, +189,154,234,198, 14,242,165,109,182, 62,115,153,226,198, 14, 98,167,166,120,105,139, 77,149,161,131,164, 28, 21, 60, 94,183,148, + 70,112,100, 29,171, 16, 17,101, 78, 81,164,113,100, 16, 67,204,164, 2,171,161,147, 18,127, 1,202, 41,116,202, 8,207,146,134, + 68, 9,129, 46, 53,147, 50,103, 60,183,244,203, 13, 92,174,104,103, 21,197,237,109,202, 73,137,253,100,201,225,161, 32, 8, 69, +115,214, 48,177, 29,217, 52,167,239, 28, 75, 23, 40,182, 42,110,189,113,157,197,227, 57,255,234,183,222,199,125,216,224,214, 61, +110, 40,229, 23,126,226,100,100, 75,247,159, 56,111,152,127,237, 62,229,205,138,171,119,175,242,153,222, 51,126,247, 4,117,222, +178,127,222, 49, 89,109,184,150,193,205,121,203,229, 16,248,172, 48,188, 90,140,184, 51,154,242,242,213, 61,202,233,132,221, 98, +151,157, 87, 95,226,234,181,107, 92, 63, 92,146,119,150, 32, 10, 94,255,249, 47, 51, 89, 69,190,181,110,249,188,202,200,219,150, +223, 62, 59,229,228,248,152,135, 15, 62,225,254, 71,223,231,193,135,127,202,175,127,227,187, 92,159,237,144, 21, 25, 81, 39,192, + 74, 84,138,168, 52, 42, 74,158,116,129,167,197,152,240,107,255, 27,246,221,111, 34,154, 99,100, 95, 33,246,118,248,183,174, 20, + 92,159, 22,236, 26,144, 54,208,244,144, 91,139,142, 17,235, 28,157, 86, 72, 36, 91, 50,114,107, 50,226,243,245,132,219, 85,205, +151,138,140, 75,199,159,194,226, 9,247,142, 78, 57,235, 34, 51,235,224,120,206,251,143,239,241,235,159, 60,228,119,143,214,248, + 62,176,136,130,220, 91, 38, 50,162, 20, 92,201, 97, 11,197, 77, 34,159, 81, 25,123, 66, 82,233,156, 66,104, 38,166, 2, 33, 9, +121,198,178,143,172, 17, 92,157,141,184, 52, 25,179,157,101,236,150, 5, 74, 40,174,103, 25,123,185,193, 7,207,121,179,228,201, +124, 78, 29, 61, 27,223,211,245, 61,206,121,206,219, 53,125, 12,196, 24,152, 72, 65, 93,105, 74, 60,149,239, 8,182,227,157,174, + 29,236,178,253,224,178, 25,194,171,242, 28,246,182,224,202, 46, 76, 70, 48,173, 17, 85, 9, 89,134, 48, 5, 66,167,213,131, 80, + 73,247,241,172,144, 59,135, 26, 18,177,245, 80,208,117, 85,160,198, 91,200,235, 87,145,175,220, 69,220,190,131,184,126, 23, 49, +189,130, 24,109, 67, 61, 67,100, 5, 72,137, 81,138, 27, 82, 83,106, 65,179, 90,243,240,232,132, 7,167, 79,137, 39,135,196,131, + 35,226,209, 9, 60, 57, 32, 30,158, 19,159, 30, 19,207, 78,137,199, 39,196,213, 2, 78, 78,136,231,115,154,163,179,212,104,185, + 14,214, 61,221,124,197,227,249,134,211,206,114,127,177, 97,164, 2,211, 16, 40,154,142, 81,174, 49, 49, 48,138, 1, 33,135, 84, +200, 0, 27,215, 99,164,161,114, 29,193, 59, 74,101, 24,117, 13,133, 84,212, 62,240,182, 50,188,102,114,110,168,156, 61, 41,184, + 82,148,236, 11,195, 29,165,185, 45, 52,175,161,216, 87,154,207,232,130,155, 89,205,110,136,220,150, 57,147, 16,184,161,115,182, +132, 34, 71, 50,173,102, 24, 4,117, 62, 3, 34,121, 94, 33, 76,198,184,168, 64,107, 76, 89, 16,164,162, 71, 32,181, 68,152,180, + 34,246, 8,138,204, 96,148, 65, 9,153,112,194, 68,230,182,167,245,158, 24,211, 52,108,221,117,104,173, 89,174, 86,244,193,179, +106,215,232,224, 88,180,107, 62,217,204, 33, 90, 54,209,243,209,217, 25,143,172, 39,244,158, 16,210,106, 37, 70, 73, 84,154, 27, +198,144,101,154,183,138,140,239,181, 45, 63, 89,231,252,105,215,241,246,164,230,183,206,151,252,194,206, 22,255,231,209, 25, 63, +191,189,197,175,157, 44,248,197, 27,151,135,162, 78,120,238,109,144,131,141, 44, 27, 10,186, 16, 9, 90,242, 87, 17, 85, 6,159, +246,204,113, 40, 28, 23,124,120, 6, 49, 71,176, 63, 44,144,123, 81,129,221,167,195,132,168,198,212,211,138,141,115,236,141, 42, +188, 79,128,130,105,150,130, 68,142,150,107,114, 96,221, 56, 92,151,196, 86,105,172, 45,137, 93,155,130, 96,252, 0, 89, 89,183, + 32, 3, 93, 7,251,147,156, 32, 5,199, 93,228,165, 73, 70, 47, 83,146, 88,144,130,177, 16,108,124,100,221,165, 40,209, 31, 25, + 87,122, 49,141,232,125,154, 60,200,144,174, 71, 12, 45,126,116,233,201,179,131,143,223,133,231, 93,126,240, 73,137,127,209,113, +203,129, 31,175, 21,228,154,237, 12, 22, 46,178,149, 9,234, 76,178,236, 6,225, 92, 74, 32, 72, 1, 57,241,197, 3,196,176,202, + 80, 17,239, 60,109, 4, 17, 36, 70, 68, 14, 99, 68,133,192,177,183,228, 90,114,218,245,180, 33, 32,163, 32, 51, 17,223,251,212, +173,255,168,107,188, 96, 4, 61,120,204, 91, 95,248, 28,163,233, 24,188, 71,162,121,114,248,104,208, 58,100,108,207,106,182, 70, +121, 26, 30, 12,231, 18,165, 5,189,141,207, 94,234,222, 5,214,182, 99,213, 88,164, 6,219, 6,156,135, 34,229,148, 38,170,152, + 72,236,240,214,122, 70, 42, 57,169,227,112,141,109,111, 17,192,122,227,112, 3,113,204,122,207,238, 86,197,162,241,204,231, 75, + 30,247, 61,243, 81, 73,190, 55,193,111, 23, 92,185,182,141, 40, 13,187, 47, 95,162,188,190, 13, 59, 37,155,182,231,147,147, 57, +199, 71,115, 30,156, 47,121,178, 89,115, 30, 2,203, 0,123,179, 10,165,224, 97,223,113,214,122, 62, 58,183,156,116,112,115,167, + 76,113,178, 98, 48, 52, 8,153,222,220, 82,208,137, 20, 3, 28, 11,147,166, 44,133, 70,101, 6,145, 25,188,148,100, 59, 5, 38, + 87,104,231, 40, 15, 86,152,101,159, 14, 0,153, 34,191, 54,161, 13,208,156,247,216,190,225,254,123, 31,114,115,225,169,175,111, + 35, 8,220, 91,121, 86, 86,113,235,141, 91,180,249,152, 7,239,253,224, 89,151,158, 30,138, 4,122, 77, 15, 8, 8, 52,130, 53, +199, 95,251,148,211,218,241,234, 43, 55, 48,227,196, 65, 8,181, 98,147, 43,186,220,160, 34,140, 60, 84, 66,160,103, 53, 98,127, + 66, 48, 25,178,208,112,109, 10, 70,164,108,237,195, 5, 90,101, 68,149,163,119,119,248,212, 20, 60,169, 39,252,157,207,191,204, +246, 75, 47,243, 73, 52,220, 47,115,186,173, 45,150,213, 22,171,106,196,141, 75, 99,222, 63,123,202,175,127,247, 29,126,245,227, +202,128, 32,160, 0, 0, 32, 0, 73, 68, 65, 84, 7,124,245,165, 59, 84, 69,198,163,222,243,237,133,227,221,206,211,245, 14,166, + 21,188,243, 77,196,227, 71, 8,191,225,120,114,139,217,108,196,213, 12,214,125,224,253,121,207,102,213, 50, 81,130,176,106, 88, +180,107,122,157,225, 98,164,170, 43,114,173,153, 25,195,165,178,102, 87, 41, 94, 26,111, 33,122, 75,190, 62,166, 57,123,196,239, + 61,120,196, 31, 60,121,200,111,124,250,136,251, 77, 64,138, 36,128,148, 67, 66,217, 76, 5,110, 41,201, 37, 4, 87,116,198,171, + 89,197, 94, 62,162, 30,111,145,229, 5, 85, 94, 33,141,102, 82,214,156, 5,207, 90, 75, 38, 69,141,204, 52, 99, 83,160, 77, 10, + 28,217,205,147,207,124,229, 60, 62, 4, 86, 49,249,237,181,210, 16,225, 90,150, 83,232,140, 76, 8, 58,151,160, 39, 99, 41,216, + 82,234,255,229,236,205, 98, 52, 77,207,243,188,235, 93,190,237, 95,107,239,174,238,233,233,238, 89,201,225,112, 68,138,164, 40, + 75, 98,168,213,202,130,196, 65,156, 88,200,102, 69,112, 16, 64, 8, 16,228, 44, 1,124, 66,192,201,137,207, 28, 32, 1,146,200, +128, 3, 40,113, 2, 91, 32, 98, 71,118, 44, 75,150, 21,209,220, 68,114, 72,206, 62,189, 76,239,181, 87,253,219,183,190, 91, 14, +222,175,186,123,134,155,236, 2,126, 84,117,119,161,250,223,234,123,222,231,121,238,251,186,217, 81, 10,213,180, 12,132,229,237, +186,141,109,141, 76, 98, 78,195,112, 13,198, 83,216, 88,139, 81,174,147,205,232, 4, 26, 78,249, 11,107, 57, 47,108,140, 25, 76, + 51,142,165, 64,166, 89,188,169, 4, 53, 29,163, 54,182, 25,188,252, 60,159,120,249,101, 94,125,245,167,152, 95,189, 76,184,254, + 34,234,202, 85,244,245,231, 81, 59, 87, 80,147, 29,228,120, 3,161, 52, 34, 73, 16, 82, 61,177,231, 54, 53,101, 83,243,156,175, +169,231,199, 28, 31,239,241, 79,223,122, 19,110,125, 0,123,199, 80,206, 96, 81, 18,108, 67,112, 29,161,173,163, 96,237,169, 6, + 40, 60, 93, 7, 92,191,146,116, 29,194,116, 96, 90,124, 80, 44, 2,188, 58,204,184,156,167,100,125,150, 70,166, 83, 50,169,112, +222,146,244,209,210,214,199,119,122,174, 51,164,109,201,210,140,145, 74,184,144,102, 76,133,100, 59,201, 24, 34,152,232,148,137, +212,228, 74, 49,206,198,228, 18,182,134, 27,108,138,148, 66, 37, 12, 68,194, 16, 65,138,100,154,230, 72, 23, 24,164, 5, 69, 82, +144,168,148, 44,159,162,116,130,146,241, 57,209,249, 16,153, 42, 66,154,129,140,155,215,144, 36, 24,169, 8, 64,235,124, 44,226, +198, 68,144, 40, 2,235, 61,199,229, 10,227, 5,149, 49,164, 50,238,207,165, 15,212,101, 69,227, 45,117,221, 34,130,231,184, 62, +101, 97, 13,173,173,217,107, 74, 58,215, 49,146,146,155,203,146,198, 58,188,148,132,198, 16,180,130,208,114,162, 19,158,215, 9, + 7,174,229, 83,217,136,111, 85, 13,175,165, 25,239, 52, 13,159,155, 12,249,191,143,206,248, 43, 23,182,248,221,131, 99,254,234, +238, 54,191,123,103, 15,197,228,218,151, 30,239,181,207,241,175,169,234, 45, 20, 42,182, 87,169,254,137, 35,219, 15, 41, 54,206, +119,235,198,199, 23, 86,208,123,175,195, 19,127,251, 99, 59, 91,255,103, 5, 66,231, 80, 20,108,108,174,177, 83,196, 12,221, 52, + 31,176, 62, 24, 49, 25,229, 56,161, 9, 4, 58,227,233,172,137,204,119,223,171,200,203,182,247, 95,244,227,240,178,142,130,181, +206,130,212,148, 4,106,175,185, 58,148,212, 8,106, 4,195,158, 77,126,210, 5, 20,208, 56, 27,173,112,222,253, 24,240, 78,191, + 74,120,140,120,237,119, 94,162,159, 60, 72, 17,213,239,189,248,235,241, 27,252,233,142,191, 63,241, 33, 99, 10, 93, 93, 59,158, + 29, 74, 22,109, 96,213,122, 66,214, 7,192,208,131,105, 68, 63, 50, 87,231, 85, 38, 60, 41,242, 33,208,121,143,149,208,244,193, + 25,181,131,137,214,204,218, 14,153, 42,180, 11, 92, 72, 36, 75,239,113, 56, 48,242, 7,215, 12, 31,149, 73,108,174,241,210,199, + 95, 68, 41, 77, 49, 40, 80, 34, 33,205,115,108,227,144, 73,202,250, 90,193, 36, 79,250,194, 30, 98, 10, 27,158,166,117, 88,225, +105, 26, 67,211, 57,108, 99, 35, 87, 31,143,237, 28,203, 30,100,146, 75,193, 86, 30,139,143,146,145, 41, 46,132, 96, 51,141, 8, +200, 32, 4, 77,107,209, 90,145, 17, 69, 88,153, 80,172, 15, 50,172, 11,236,205, 74, 18,165, 9,233,144, 98,107,202,231,174, 95, +228,217, 11,235,220,153, 87,188, 89,214,140, 70,209,235, 51,239, 12, 75, 99, 48, 62, 80, 19, 56,177,129, 54, 85,124, 80,182,220, + 42, 43, 92, 34,216, 26, 23, 84,222, 83,249,192,229,245, 1,163, 60,146,175,188,232, 81,172, 33, 62, 93,149,241,156,185,192, 92, + 72,150, 82,210,106, 77,208, 10,159,164,184, 68, 81, 37,146, 71,139, 26,115,255,132, 97,145, 66,221, 33,239, 45, 73, 79, 13, 90, + 56, 76,170, 73,183, 11,144,158,211,155, 7,172,150, 71,220,124,116,151,231,221,136,201,230, 4,175, 60,195,105, 78,174, 20,207, +188,112,145,171,159,125, 14,207, 17, 15,222,217,195,145,227, 46,104,124,161,120,249,175,253, 69,126,227, 55,126,142,223,250,207, +126,137, 63,186,188,206,103,127,237,243, 60,248,211,155,156,125,235,251,252,225,226,148, 7,211,109,190,126,188, 0,223,241,135, +183, 30,241,198,195, 99,190,242,214, 13,222,153,207, 56,116, 49, 64, 35,117, 34, 34, 59,235,142,174,170,152, 61, 56,230,225,141, + 91,220, 63,188,203,172, 90, 48,115, 29,135,141,164, 29, 13,241,121,194,160,241, 36,235, 5,183, 27,207, 89,219, 69,142,148, 10, +180,217,132, 79,125,236, 5, 54,167, 59,188,111, 2,255,117, 6,227,195, 35,190, 38, 70,220, 91, 5, 94,239, 28,167,214, 16,234, + 25,225,224, 30,226,213,207,194,231,126,137,191,246,197,207,243,189,189, 25,223, 45,225, 52,207,113,149,229,230, 73,203,124,213, +178,142, 97, 77, 39,176, 40,185,107, 91, 6,217,128, 86,194, 40, 77,153,166, 26, 41, 96,152, 15,113, 82,145,228, 3,200,199, 12, +164, 96, 61,180, 28,183, 21,207,109, 79,120,105,119,157,207, 62,187,195,206,214, 58,175, 76, 7,204,140,101, 77, 9,174,167, 25, + 47, 36, 57,207, 38, 5, 23,139, 33,195,225, 4,157,230,120, 47, 16, 66,160,243, 28,129,128,222,150, 54, 24,164, 92, 28, 79, 25, +228,154,113,150, 50, 74, 53, 3, 45,153, 68, 21, 40, 37,240,168,118, 40,165, 49, 42, 33, 79,115, 6, 89,138, 78, 52,235,195,132, + 4,197,133, 60,229,229, 52,101, 67, 10, 84,103,168,131,197,250, 64,237, 3, 39, 58,139,157,121, 49,238, 25, 29, 27,144, 15, 96, +184, 14,131, 53, 80, 5,159, 31,141,121, 46, 79,153,166, 5,163, 44,225,134, 84,145,121,144, 36,168, 65,138,202, 51,210,205,117, +254,141, 11, 23,248,249,231, 94,230,194,133, 93,174, 76, 47,115, 43,159,146, 76,182,208, 58, 67, 43,133, 84, 10,233, 37, 82, 4, + 68, 83, 34,140,129,217, 30,156, 60, 64, 28,220,133,131, 7,188,243,254,123,188,113,235, 22,239,222,190, 11,135,143, 96,177,136, +141,137,233, 89, 36, 61, 49,244,252, 26, 25,254, 28,189,158,240, 62,174,173,178,140,124,115,194,120,156, 83, 46, 99,147,179, 61, + 28, 18,100, 92,153,106,161, 48,222, 19,165,110,113,216, 11, 1,167, 18, 50, 33, 41, 84,194, 24,197, 84,105, 82,149,144, 11, 73, + 34, 69,204,136, 72, 11,180,135, 60, 31,160,101,130, 78, 50,178,116,138, 82,146,172,216, 70, 39, 89, 4, 67,233,140, 68,231,232, + 36, 69, 39, 3,116, 62, 0,227, 80,121, 14, 89,134,212,154,144, 36, 40, 33,240, 34,174,126, 91, 4,171,224, 34,237,219, 71,158, + 99, 23, 34,153,239,164, 92,209, 4,208, 40, 78,218, 37, 45,209,198,108,186,142, 16,160,108, 42,172,181,212,166,229,164,158,145, + 72,205,202, 86, 28,155, 18, 37, 28,169,212,156,153,134,111,159,214,184,198,197,130,158,165, 96, 12, 97, 48,192,181, 49, 18,252, + 51,131, 17,127,127, 85,241,159,110,173,243, 59,167,167,252, 59,147, 53,190,124,114,198,191,191,190,198,223, 59,216,231,183,175, + 94,225,111,223,127,200,111, 63,127, 13,193,245, 95, 13,116, 13,232,252,113,199, 27,187,192, 52, 22,119,149,246, 34, 48, 34, 33, +237,233, 24,207, 31, 39,156,179,150, 39,218,250, 62, 4, 70,165,113, 44,253,244, 1, 32,190, 83,162,162,114,178, 1, 91,107,252, +236,218, 56,146,178,242,130,245,241, 6,153, 20, 81, 10,154, 72,230,203, 51,142, 23, 53,111,220,189, 19, 1,250,174, 15,135,233, +120,146,140, 38,125,196,196,218,250,137, 74, 61,201,216,152,228, 52,109,111, 21,200, 5,117, 31, 46,103,122,129, 86,181,172,227, +232,190,106,126,252,227, 27,228,209,190,199,135,207, 37,143,191, 62,247,129,123, 27,159, 7,251,145,174, 56, 27,197, 16, 28,157, +146, 41,137, 77, 19, 92, 99,144,153,194, 11, 17,119,223,222,163, 18, 21,179,225, 77, 27,253, 51,210, 63, 9,199, 57,159, 80, 60, + 29,178, 35, 50,178, 73, 70, 46, 20, 99,160, 72, 4, 11, 19,208,192, 18,207, 98,213, 33,117,136,194, 55,249,147, 31,231,127,245, + 55,254, 58, 91,187,235,172,230, 21,213,210, 96,203, 22, 65,194,213,107,187, 92,187,184,206,206, 70, 30,173,248, 46,208, 57, 71, +217, 57,102,179,134,206, 89, 14, 14,151, 52, 62, 16,188,167,173, 76, 68, 67,138,128,206, 36,215,118,198,108,140,115, 46,141, 19, +106,235, 9, 61, 89,202, 7, 72,130,167,181, 14, 27, 60,243,170,195, 4,200,165, 96,185,108,162, 74,117, 99,128,107, 13,124,103, +143,159,255,133,143,115, 79,122, 30,182,142,129, 55,152,163, 5, 15,171,150,195,174, 35, 47, 82, 62,249,252, 22,137,140, 32,140, +101,101,185,119,188,194, 54, 6, 43,161,154, 55,164,153, 34, 75, 83,190,240, 83,207, 32,147, 24, 42, 50,202, 82,210, 52, 33, 32, + 72,100,244,133,203,214,226,107,195, 73,217,177,183, 50,172,156,199, 17,131, 94, 38, 90,177,145,197, 0, 27, 41, 4,239,175,106, +230,239,157,145,221,127,196,171,121,202, 39, 46,172, 83, 92, 25,146,140, 51,194,131, 37, 85,145, 97,159, 29, 51,219,159,179,247, +250, 45,234,197,156, 66, 74, 62,243,234, 39,209,215, 54, 73, 47, 76, 57,182,142, 71,166,227,254, 89, 75, 82,151,236, 90,195,239, +126,253, 3, 94,122,113,135,195, 58,230,149,255,235, 87, 39, 12,115, 77, 3,252, 63, 55,207,120,176,106, 9, 85, 69,168, 43,218, +179, 35,194,235,239,240,220,231, 94, 98,224, 44, 95,251, 95,190, 79, 69,135, 66, 60,161,196, 95, 29,242,243,159,221, 33,155,142, + 96,186,206,188,172,217,120,230, 25,190,246,213,175,114,252,250,119,162,237,121, 48,226,139,175,188,198,197,151, 63,206,120,109, +139,170,156,113,227,224, 17,167,203, 51,106,229,185,127, 88, 51,188,184,205,231, 95,249, 36,172,111, 51, 48, 53,191,109,106,178, +214,241,245,197,156,255,166,216, 37, 76,135,228,120, 6, 18,190,119,120,138, 56, 61,224,123,127,245, 87,216,185,182,193,223,250, +211, 59,252, 79,239, 30,146,140,134,108,100, 9, 63, 55, 25, 32, 23, 21,175, 77, 37, 63,163, 19,210, 89,201,236,224,144,253, 44, +165, 73, 19,158, 25,228, 4,231, 16, 66, 98,165,160,171, 26,230,120,222,173, 91, 14,202, 21,123,173,225,164,109, 89, 27, 12,249, +194,230, 26, 71,213,130,177, 82, 72,107, 57, 62, 59,162,109, 74,174, 16,248,124, 62, 38, 79,114, 10,157, 50,154,110,129, 76,177, +193, 83,219,134, 90, 72,218, 52,225, 56, 4,190,221, 85,140,135, 3,108,154,179, 51, 46,240, 62, 48, 12,113,197, 52,206, 18,142, +202,150,183,155,134,195,210,176, 32,112,214,182,164,210,179, 22, 36,185, 2,235, 61,163, 4,158,243,158,103, 85,202, 56, 85,204, +234,138,239,174, 74,246,186,138, 47,175, 42, 58,231, 8, 73, 66, 72,114,130, 46,122, 32,151, 36,168,148,207,227,121,105, 90,240, +188,150,156, 86, 37,243,106,201,172, 58,101,191,238,248,238,170, 66,121,251,120,212,254,249,201, 58,159, 26,141,120,254,210,117, +198,131, 2,147,104,222, 61, 61,227,110,217,114,218, 25, 22, 77,205,161,115,184,230, 12,187, 60,195,204, 43,236,209, 25,246,240, + 33,118,178,137,179,101,236,137, 58, 27,107,182,181, 31, 86,200,255, 57,125,239, 63,170,207, 3, 16,151, 47,178,117,237, 18,215, +243,156, 11,243, 5,207,121, 79,158,167,172,165, 25,235, 58, 97,172, 19, 84,112,196,129,159,196, 57,131, 82, 17, 39,158, 73,205, + 80,104,118,101,194, 68, 39,100, 34, 68,236,180,233, 72,148, 6,227,208,249, 0,165,242, 8,109,209, 26,130, 66,166, 89,252,218, +152,199, 90, 29,172, 69,140,167,224,226, 66, 75,168, 72, 33, 68, 39, 88, 66,236,192,149,192, 33, 56, 1, 78,148,231,216, 65,173, + 35, 29,175,108, 12, 3, 33,104,172, 35,193, 19,172,163,234, 90, 12, 14,108, 84,229,111, 10,193,220, 52, 76,116, 70,103, 91, 62, + 88,158,176,165,115, 90,223, 48,146,158,214, 91, 2,129,131,106,201,239, 31,158,113,235,160,198,121,135,207, 51, 66,112,132,233, +152,224, 28,122, 99,141,207, 78,214,112, 66,241, 31, 93,121,142,255,126,111,143,191,190,187,203,223, 61, 57,226, 63,220,220,230, + 43,139, 5,127,121,235, 34,255,231,193, 62,255,197,149,203,252,239, 15, 30,245,101, 87,141, 98, 65, 20, 61, 14, 53,205, 97, 52, +130, 76,245,216,215, 65, 31, 88,210, 23, 21,107,127,252, 43,124,254,239,143,191,173,151,108, 42, 27,139,179,232,231,182,231, 5, +253,156,239, 62,204,120, 81,199,116,168,221,193, 24,161,115,214, 7, 99, 74,211,161,146,140, 86,104,182, 39, 41,139,230, 17,151, +119,119,120,120,231, 94,124, 51,153, 94,124,103, 1,209,244,224, 23,243,228,190, 8, 29,207, 4, 1,230,214, 19,180, 36,145,146, + 85,229, 24,165, 26,219, 89, 42, 47,158, 0,115,126,210,129, 5, 98, 55, 46, 68, 60, 21,132,167,222,185, 45, 17,135,123,190, 82, + 80,242,169,231,225,220,218,214, 64, 40, 64,200, 72, 92,243,113,204, 51, 32,198,204,154, 92, 65, 3,173,177, 40,149,226,154,158, +200,236,207, 45,105, 93,188, 31, 90,127,100,138, 96, 80, 78,147,104,193,161,243,172, 7,201, 64,192,178,127, 9,178, 92,210,214, +238,201,110,254,252,240,245, 35, 62,222,248,254,247,249,165,139, 95, 96,178, 54,192,217,146,249,209, 49,222,194,157,219, 2,235, + 2,163, 98,135, 52, 81, 72, 9, 34, 8,242, 62,196, 36, 24, 71, 62,201,209, 61, 53, 47,209,178,247,211,199,149,201,225, 89,141, +181, 17,212,179, 51,201, 88,116, 14,173,100,188, 96, 43,193, 64,107,132, 15, 36, 18, 58,235,232, 44,140, 70, 25, 4,207,122,150, +224,179,156,147,181,146,255,235,107,239,242,173, 7, 55, 49, 4,142,218,154,129,214,108, 14, 71,228, 50, 67,231, 41,139,163, 37, +195,201, 24, 33, 37,131, 81,130, 22,146, 70, 72, 78, 15, 78,104, 22,139,232, 58, 84, 18,153, 42,190,240,201, 43,209, 77,145, 9, +164,148, 88, 31,122, 65, 28, 88, 37,105, 83, 73, 85, 75,200, 21,174,141,235, 5,235, 5,173,115, 44,141,162, 72, 97,146, 43,252, +250, 6,249,238, 26, 73,119,133, 27,123, 43,110,188,113,200,231, 15, 13,215,118,167, 20,187,129,201,237, 57, 62,129,209, 48, 99, +247,167, 95,196, 55, 29, 77, 8,148,193, 50,108, 91,244,131, 19,100,158, 98, 69, 28, 63, 94,200, 53,137,151,252,230, 23, 95,228, +209,202, 32, 71,146, 89,166, 88,174,103, 12,148, 98,101, 45,131, 75, 19, 46, 47, 90,174,135,130, 45,189,141,224, 10, 27,191,246, + 51,188, 51, 43,105,170,138,255,224,111,190,200,124, 85,178, 44, 27,156,235, 96, 80,112,244, 15,255, 5,237,149, 43, 28,252,179, +215, 17, 87, 78, 16,163,130,157,151,174,115,248,250,119,158,160, 66,171, 21,255,228, 91, 95,197,125,235,171,216,203, 87,113,179, + 85,164,130,209,224,187, 94,211,245,240, 1, 55,206,142,248,212,171, 63,207,229,221, 11,180,235,107, 12,165,224, 89,224,139,123, +111,115,147,231,201, 70, 35,180, 13,184,151,174, 33,222,168,249,239,254,217,187,252,229, 87,118,249, 59,239, 30, 96,219, 14,225, + 44, 51,165,249,167, 39, 51, 46,102, 57,133, 83,124,236, 74,206, 51,151,214,185,168, 53,223,126,247, 77,182, 54,118,152,121,207, +133,209,128, 82,198, 14, 89, 21, 25,157,181,116,198,210,228, 19,156,168, 89, 75, 11,174,140, 52,167, 50,112, 97, 48, 65, 3,243, +176, 98,115,125,155,180, 42,184,140,194,119, 53,169,119,100,162,183,216,246, 57,243,193, 25, 72, 83, 66,103, 56, 9, 29,161,103, +115,111, 56,143,233, 44,178, 79, 62, 20, 46,176,240, 29, 77,127,206,214,120, 78, 59, 71,112,150,210, 56,146, 52,163,114, 14, 17, + 20, 99, 60,155,195, 33,211, 44,163,109, 13,149,202, 64,181,188, 97, 60,198,247, 90,156,115, 55, 80,240,100, 56,214, 70, 3,118, + 16,124, 58,207,216, 21,146,113,162, 72,139, 33,165,183, 20, 98,131,183,155, 99,132,214, 72,162, 96, 75,107,205,165,241,144,204, +121, 46,122, 24,121, 16, 85,205,101,235,185,215, 46, 16, 93,195,237,211,135, 84,135, 39,188,183,172,120,111,255, 4,149,128,169, +154,168,140, 95,156,112,174,210,249, 97,172,120,241, 19,138,118,248,136, 7, 62,252,168,127,111, 3,179,178,230,142,243,200,182, + 67, 89,195,101, 41,209,137,166, 9,130,179,166, 35, 65,160,149, 34,113,158, 84, 71,226,104,176, 30,165, 3, 66,122,132,140, 36, + 75,231, 3, 9,146, 36, 29, 18,108,131, 74, 7, 8,153, 18, 66,136,235, 5,145, 34,164, 67, 40, 5,198, 68,127,191,236, 31, 89, +154, 64, 83,130,206,145, 82,225, 93, 11, 40,130,181,136,158,143, 17, 2, 49, 92, 71, 43, 86,157,167, 9,129, 89,103,232, 84,204, +101, 95,153, 24, 36,212,118, 45,198, 70,226, 94,133,165,232,101,139,247,156, 97,164, 82,238, 87, 51,102,245,146, 84, 42, 62,168, +207,208, 66,112, 22, 28,101, 91,210, 25,203,235,103, 11,110, 63, 92,224,187,152, 65, 18, 86, 51,194,100,147,176,170,160,200,176, +167, 51,190, 97, 60, 63,187, 53,229,111, 62,186,203,127,187,115,137,191,189,255,136,223,218,186,192,223, 61, 57,226, 55, 55, 47, +240,229,195, 71,252,187, 91,155,252,157,253, 99,126,227,210, 46,138,209,115, 95,194,119,177,155,117, 54, 94,232, 7,195,152, 23, + 46, 68, 44,234,231,187,117,215,211,211,126, 82, 81,255,145, 65, 48,105, 52, 42,247,140,111, 66,140, 23,140, 49,160,154,193,176, + 96, 99,178,206, 88, 4, 58, 33,120,118,247, 42,137, 82, 20,197, 0,145, 38,140, 6, 25,203,198, 80,117, 13,206,195, 73,240,125, + 18, 27, 79,132,126,193,245, 33, 49,231,161, 37, 46,142,204, 73, 40, 3,164,131, 20,239, 2, 77, 27,177,166, 85, 99, 49,153,142, + 99,122,111,250,209,116,127,197,210, 58,250,199,165,140,143,253, 60, 4, 69,246, 48,115, 84,175, 72,127, 42,181,174,231,199,208, + 17,239,131, 15, 63, 8,122, 73,116, 20,102,232, 12,167, 85,159, 95, 46,216, 45, 4, 71,173,103, 43,133, 60, 17, 17,119,159,193, + 56, 81, 84,166,143,179,125,122,167,254,209,131, 84,162, 49, 45, 84,193,177,155,104,150, 62,208,122, 71,234, 37,171,208,197, 34, + 37, 60,104, 98,148,172,251,241, 35,248, 59,111,191,207,167,126,238,103, 25,142, 10,118, 54,214, 73,178, 12,103, 96,243,194, 26, + 73,162,201, 18,141, 18,146, 60,141, 99, 48, 2, 88, 23,250, 61,116,212,104,139, 62,197,206,135,120,225,132,128, 23,176,168, 13, +165, 13, 84, 33,208,250,152,230, 38,129,129,150, 88, 23,176,190,119, 10,218,248,124,183, 54,224,157, 64,229, 41,149,130, 47,127, +229,117,190,118,231, 38,167,109,203,237,179, 37,169,144,108,143, 70,116,206,144, 74, 5, 2,150,101, 73, 87,213, 52,166, 99, 57, + 43,169,140,101, 53, 95, 32, 16,188,246,234,115,124,246,181,231,216,125,102, 7,165, 36,182,115, 76,134, 25, 82,168, 40,133,176, +177,163,213, 90,245,246, 59, 79, 75,136,108,111, 2, 66,120, 52,129, 68,123,164,128, 65, 42, 25,166,130,253,147,150,121, 11, 42, + 83, 36, 91, 3,212,229, 9,179, 44, 99, 88, 40,242, 97,138,203, 4,170,181,100, 37,100, 13,164, 85, 75,162, 3,162, 72,104,206, + 42, 86,119, 78, 57,123,247, 30,195,195, 37,195,221, 33, 94, 9, 38,169, 98,154,105,214,165,228, 84, 9, 78,133,100,238,161,242, +129,131,206, 81,181, 14, 21, 4, 63,181, 57,100, 60,204,184, 58, 29, 48, 65, 49,237, 28,239, 46, 44,143, 42,207,137, 87,212, 94, + 81, 76,167,232,193,152,201,231, 95, 99,109, 52,225,149,159,126,137,245,221, 93,142,110,220,230,180, 58,163,104, 20, 7,181,197, +250,238, 9,255, 27,112,203, 57,214,212,184,182,194,183, 29,206, 70,107,142,111, 43,252,254, 62, 15,125,205, 67,161,121, 36, 20, +186,110,248,189,217, 25,223,156, 47,216,117, 21, 74, 15,200, 58,195, 39, 22, 11,218, 79,127,140,175,220,221,231,247,254,223, 63, +160,222,187, 11,123,119, 16,123,247,225,225, 7,136,211,135,212,203, 83,110, 39, 99,126,126,107,196,118,154,144, 2,215, 77, 66, + 53, 59,225,127,120,247,117, 94, 28,111,210,165,113,109,227, 66, 96,225, 28,251, 58, 97,101, 3,206, 71,254,193,206,184, 32, 15, + 32,180, 96,101, 44,153, 82,132,224, 81,214, 50,234,106,138,224, 80, 2,132,105, 81, 34, 65, 40,137,237, 58,140,119, 24,235, 88, +152,150,219,109,205, 94, 91, 99, 85, 66,161, 37,222,244,217, 11,198,145,166,138,202, 6,150,117,139, 50, 6,233, 91, 70,190, 33, +119, 29,151,165, 99,214,118, 40,161,120,175, 92, 33, 72,120,102, 52, 96, 71, 39,180,120,142,218,134, 63,154,205,120,189,105,159, +100, 60, 52,117,212,228,232,132,103,242, 2,225, 45,175,201,192,179, 90,144, 73, 9,198,177, 46, 37, 39,198,240,103,139,146, 67, +235, 80, 42,160,210, 20,157, 15,217,205, 11,174,101,154, 23,210, 9, 69,185, 96,179, 53, 76,150, 43,166, 77,197,165,174, 99,125, +126,196,206,170, 34,239, 58, 46, 34, 40,138,140, 71,171, 50, 94,123,123, 11,220, 15,116,213, 79,251,223,127,194, 77,126, 4,110, +243,248,179,214,136, 62,162, 22, 41, 17,222, 16, 74, 67,125, 86,179,119, 54, 99, 71, 64,235, 28, 71,193,209, 52,142, 36,141,185, +243,206,217,152,220, 71,143,208,150, 18, 47, 37, 99, 1, 67,149, 34,108, 67,174, 83, 68,240,136, 16, 80, 74,161,180,198,155, 14, +165,211,248,255, 42, 13, 66, 69, 56,143, 78, 30,175, 73, 67, 79, 50, 21, 8,130, 51, 8,165, 9, 62, 32,164,196, 57,135,119, 29, + 72,133,107, 27, 42,215,178,232, 90,142, 92, 71,165, 21, 43,211, 97,156,101, 86, 87,212,214, 48,175, 75, 90, 99, 56, 94,157,114, + 86, 47,113, 93, 76, 13,205,164,162,243,158,198, 25, 58, 91, 71, 62,153,141,211,202,224, 28,243,186, 98, 86,118, 60,168, 27,190, +117,127,134,171, 75,124,215,197,233,136,245, 4,215,198,201,185, 51, 80,164, 8, 27,120, 40, 2,191,144, 42,254,215,179, 57,255, +229,133,203,252,131,249, 41,127,105,178,206, 31,207,102,124,122, 48,224,125,239,249,226,120,200,239, 60,122,216,239,212,207,119, +232, 66,199, 87, 40, 43,162, 10, 83,233, 39,123,225, 44,235, 81,174,254, 39,238, 99,127,116, 81,239, 49,168, 42, 34, 95,133, 76, +158, 40,202,243,130, 43, 91, 35,156,235,152, 12, 70, 60, 63,216, 96,168, 82, 54, 46,108,176,190, 49, 97, 56,202,169, 92, 32,209, + 2,141,102, 81, 87,180,206,210,150,203, 88,212,211,254,196,123, 14,157,193, 61,177,111,133,168, 48, 71, 38,209,246, 41, 4,100, + 58,138, 78,179, 62,116, 70,136, 72,116,115, 54,118,194,217, 8, 46,108,194,120,210,155, 68,237, 19,113,153, 16,113,167, 46,228, + 19, 12, 46,125,222,186,232,223,222, 46, 64,222, 71,173,202,143,232, 17,156, 3,153,227, 68,212, 45,100, 82,162,164,199, 42,193, +118,166, 24,249,192, 44, 4,174,104, 1, 38,112,220, 24,130,147, 79,118,233,231,187,245,115, 84,237,121, 56, 75, 15, 87,223, 72, + 51, 14, 86,134, 81, 34, 24, 1,123,101,199, 52, 81,120,239,104, 90, 8,231, 62,254,243,215,246,199,124,172,239,110,113,245,185, +171, 28, 30,159,209,118, 22,235,162, 53,195, 7, 98,161,245,129, 60,213, 81,200,229, 3,109,239,130, 8, 38,250,194,131, 7,153, +136, 40,228,203, 20, 78, 8,188,141,135, 68, 21, 4,173,245,116,198,163, 19, 25,227,101,125,164,205,121, 41,113, 82,112,218,121, + 26, 36, 22,129, 81, 26,169, 5, 70, 4,246, 30,156, 98,219,142,141,124,192, 70,158,145,234, 24,178, 32,133, 68, 8,197,201,106, +201,170,109,232, 92, 71,211, 52, 52,109,131,176,130,203, 59, 59, 92,187,180,197,178, 54,220,188,125,192,173, 27,247,121,120,255, +128,147,147,134,139,187, 19,166,131,140,166,179, 4, 60,169,142,118,186, 32,192, 17,217,251,238, 28, 84, 67, 32,147,144, 73, 65, +145, 18,243,236, 19,201,234,246, 25,234,168, 36,109, 3,173, 13, 24,231,168, 51,197, 65, 90,176,187, 54,192, 6,129,210,144,109, +174,193, 89, 64,172, 26,228, 78, 70,216, 26,226,157,195, 46, 27,138,105,193, 96,154,197, 29,108,174, 24, 37, 41,131, 32, 72, 31, +174,152, 47,150,124,235,205, 7,248, 89,205,222,237, 19,150,143, 78, 80,171,146,176,114,236, 92, 24, 81,100,154,149, 11,116, 85, +199,119,206,106,238,204, 42,188,146, 12, 6, 57, 27,163,148, 53, 9, 83, 13,133, 51,252,133,181,130, 23, 54,166, 20,105, 66,121, +237, 89, 84, 39, 88,203, 4,207,174, 13,217,185,176,195,238, 51,151,152, 92,216,198, 14,167,204,100, 17,119,138,182,251, 16, 74, +244, 49, 63,252,240,144,166, 44,121,235,108,201, 31,180, 53,223, 52,146, 67, 33, 25, 89,199,206, 56, 97, 83, 6,198,153,226,149, +179, 51,174,143,135,108,109, 92,100,111, 56,197,222,125, 31, 30, 62,130,114, 9,143, 30, 33,142, 14,145,237, 9,121,217,241,146, + 30,145, 90,143, 50,142,113, 93,241, 41, 5, 55,170, 37, 95,105, 21, 23, 7, 9,251,198,114,199, 7,206, 42, 71,139,100, 17, 34, +187,123,144, 72, 70, 90, 35,137,191,255,169, 16,148,182,163, 51,134,196,180, 12,130, 39, 13, 17,141,235,157,197, 56,135,117,142, +218,118,236, 45, 79, 40,125,199, 94, 87,115,234, 13,123,171,154,205, 52, 69, 56, 71, 98, 12, 74,107,172,113,236,173,150,204,155, +146,196, 25,214, 77,139,176,158,173, 96, 88,115,134, 13, 33,120, 80, 46,168,108, 75, 73, 74,174,225, 97, 83, 49, 43, 87,188, 63, + 59,225,171,243, 83,154,122, 21,187,197,166,238, 29, 65, 30,145,103, 12,165, 68, 4,199,101, 60,133,130,129,183, 36, 33,240,230, +106,193, 55, 22, 53,111,119, 45,210,117, 72,157,162, 84,194,122,154,176,155,142, 25,203,132,237, 84,115, 17,201,150, 82,172, 15, + 10, 10,149,162, 59, 19, 41,154,190,141, 54,208, 76, 50, 29,143,112,227, 1, 71, 70, 34,122, 97,240,143, 42,236, 63,224,131,255, + 17, 30,120,249,209, 98,175, 53,164,186, 39,223, 41,240, 50, 14, 37,234, 54, 34,184,157,225, 65,211,114,203, 72, 86, 4,190,223, + 6, 58, 97, 88,217, 88,124,141,115,184,224, 64,169, 88, 12,165, 64, 6, 72,137,144,171, 92, 72,164, 80,104, 2, 34,196,107,153, +210, 89,244,134, 88, 19, 15, 18, 62,230,117, 8,235,162, 41, 85, 74,130,105,192,199,159, 39,164, 36,116,109, 63,232,140,164, 58, +111, 44,222, 26,218,224, 40, 77,199,158,181,236, 57, 75,109, 45,149,139,120, 91, 33, 98,166,124,213,149,156,214, 51, 78, 76,195, +254,114, 70,235, 13,141,119,145,246,169, 37,137,243,204,109, 36,148, 58, 60, 74, 40,108,215,178,242, 14, 17, 60,137,240,220,173, + 58, 90,215, 18, 76, 31,196,163, 1,157, 18,154, 14,145,100, 80, 25,196,184, 64,212, 13,183,117,202,127,188,177,206,255,120,176, +207,191, 54,200,248,227,101,201,181, 60,101,134, 39,183, 29,255,240,228,132, 79, 76,167, 40, 38,207,127,233,113,135,238,109,244, +154, 43, 31,187,201,243,142, 80,244, 5,160,237,250, 83,229,191, 98, 81,215,242, 73,241, 13, 1, 17, 92,124, 20,215, 47,241,241, + 75, 27,124,226,153, 23,184, 52,221,226,165,173, 93,158, 25,111, 34,114,205,181,237,117, 86,222,210,153,192,104, 50, 32, 40,205, +131,131, 67,214,199, 99,110,159, 29, 96, 86,125,234, 88,103,226,207, 14, 42, 30, 58,240,209,190,117,238,137, 23,196, 19,155, 82, +253,247,137,184,140, 10, 34,118,242, 90, 70, 53,250,170,141,127, 63, 30,193,120, 8, 69,191, 46, 88,244, 39,235,243, 81, 55, 50, +254,172,115,225, 95,146, 63,225,212, 43,221,191,145, 93,188, 63, 79, 67,100, 30, 63, 31, 30, 66,252,217, 90, 4, 70, 69, 84, 87, +174,245, 9, 97,151,181, 70,121,207,134,138, 2,158,121,235, 34, 97,142,240,100, 5,114, 14,146,120,124,104,178,208, 70,162,220, + 84, 11,150, 33,230,239,166,137, 96,213, 6,188, 10, 76,148,160, 13,125, 34,158, 23, 63, 20, 23,251,244,199,205,239,191,195, 23, +255,173, 95, 97, 99, 50,100, 89, 54, 49,181,169,179,116,141,137,193, 10, 66,145, 38, 9,131, 76, 71,202,174, 13,125, 94, 76, 64, +247, 2, 63,173, 98, 82,152, 84, 18,215,249,216,125, 3,193,249, 56,198, 31,166, 12,138,148,198,249,199,254,112, 47, 4,101,231, +104,250,116,218,243, 19,123,227, 29, 89,170, 8, 33,161, 59,171, 65,138, 24, 24,163, 53, 73, 63,142, 12,193, 33,148,100,160, 52, + 74,105, 6,217,128,141,181, 45, 70,147, 49,235,147,156,189,253, 51, 30, 62, 58, 0, 41, 41,242,156,166,233,176,193, 82,163,216, +221, 26,225,131, 71, 17, 80, 74,162,117, 68,224, 57,231,232,140,165, 53, 54,134,163,244,145,188, 82, 4,180, 20,104, 17, 51,230, +147, 66,177, 56,108, 24,165,146,237, 92,113, 57, 75,240, 14, 94,155, 36,108, 21,154, 3, 27,240, 62,142,234,241, 30, 70,154,230, +210, 4, 51,200, 9, 89,130, 30, 21,136,237, 9, 97,154, 35,134, 9,153,243, 80,183, 4,235, 88,168,192,187, 66,112,253,229, 29, +214,114,201,149,205,130,143,125,108,139,112, 92,177, 38, 2, 97, 99,196,126, 23,120,111,105,120,115,222, 50, 51,129,221,164, 99, +224, 29,207,155, 57,203,147, 67,158, 75,115,182,117,202,115, 4, 46, 21,145,184,101,141,225,189,178, 68, 59,199,154, 15, 12,132, + 98, 82,228, 20,137,100, 45,207,216, 42, 82, 46, 76, 6, 12, 54, 38, 28, 39, 99, 12, 22,223,118, 63,144, 4,198,226, 12,230, 51, +186,170, 36,156,158, 16,164,163,194,243,234,112,196, 90,146, 80, 32, 73, 19,141,106, 59,210, 97,194, 48, 36,220,169,142,225,228, + 36,254,238,104, 13,139, 5,161,172,185,115,188, 79,222,204,217,182,138, 20, 40,178,140,137,119,108,183, 43, 30, 46, 79,185,217, +118, 28, 90,203,101,239,216, 54, 13,223,245,130,147,182,230,154,106,153, 91,197, 51,169, 36, 85, 26,109, 3,214, 25,172,243, 28, +149, 11, 26,111,217, 49, 29,162,109, 81,222, 48, 91,205, 16, 33,112,216,173,120,103,254,136, 42, 4,238, 45, 78,121, 48, 63,226, +102,181,162,170,150, 72, 17,176,171, 37,251,213,130,179,206,241, 96,118,130, 13,158, 77,211,209,181, 45,181, 51, 76,188,193,135, +192, 26,129,196,118,100,182,161,241,112,228,106,206, 26,195,119,246,239,242,181, 71,247,249,254,236,152,114,177,128, 85, 5, 39, + 11, 88,172, 98,151,222, 58,200, 51,108,128, 81,154,241, 65,215,113,217, 55,184,186,102,102, 12, 15,218,154,127, 81,150, 72,211, + 34,130, 67, 57,131,212, 25, 87,211,140,105,158,147,250,192, 40, 75,217, 29, 20,108, 37, 3,134,131, 28,229, 37, 88,131,176, 6, +111, 59,172,181,100,105, 74,161, 21,147,193,136,106,154,115, 38,250, 61,126, 80,209, 77,209, 95,167, 62, 90,204,197,211, 94,248, +159,112, 67,107,132,146,113, 74,231, 69,236,137,212,147, 97,188, 8, 14,124, 64,184,216,136,148,139, 6, 23, 60,123,157,231, 65, +219, 17,122,108,107,227,162, 69,239,156,176, 23, 3,158, 2,107, 74, 19, 76,135, 14, 14, 37, 53, 88, 23, 83,191, 67, 76,100, 59, + 47,238, 16, 16, 82, 19,188, 69, 4,240,214, 32, 84,130,183, 13, 8,133,235,237,213, 65, 42, 92,215,225,123, 79, 73,227, 90,170, +174,228,160,173,184,225, 91,218, 52,227,172, 89,225,172,165, 54,134, 89,189,192,226,153,155,150,133,235,184,187, 92,177,244,130, +121,185,140,217,101, 34,170,107,103,222, 48,214, 26, 23, 60, 2,201,170,169,168,112, 24,239, 80, 66,114, 84, 55,200, 34,225,168, + 1,239,187,184,254,241, 50, 70, 69, 75,141,176, 6, 38, 3,196,217, 2,177, 62,229, 25,219,242,181,206,240,249, 34,231,173,206, +178, 50, 53, 55,140,163,236, 58, 30, 24,207, 84, 4,190,182, 56, 65,177,118,237, 75, 36,170, 7,195,232,152,231,157,232,120, 83, +250,195,227, 93, 99,162,255,208,152,127,181, 0,152,180,207, 92,215, 17, 82, 35,242, 49, 92,186,204,175,190,252, 9, 94,189,250, + 50,105, 54, 96,123,123,155, 75,235,155,120, 18,158,189,180, 78, 35, 36,237,170,102, 48,202,105,173, 71, 42, 73, 38,115,234,174, +197, 55, 45,167,222,198, 39,227,220,158,161,101, 31,129,218, 39,191,185,238,201,232, 95,245, 34,183,200,246,140,111,184,243,119, +176,212, 49,113, 45, 81,113, 12,223,118,209,214,103, 2, 44, 87, 96,234, 15,171,216,149, 0,145,244,157,115,255,174, 21, 60,225, +183,107,221,115,220, 93, 47,158,179, 63,228,249,136,246,182,221, 97,202,172,243, 60,167, 21, 19,165, 24, 4,137, 14, 81,220,230, +140, 99, 34, 36,163, 4, 78,218,126,243,117, 14,245,177,246,169,207, 79, 17,250, 68,191, 43, 62, 15,101, 8,176,169,160,108, 2, +109, 48,100, 58,193,153, 62,128,230, 39,116,234, 0,107,155,235,188,242,202,139, 4, 41, 72,115,205,198,120, 72,231, 2,182,243, + 12, 38, 3, 46,175,143, 81, 90,160, 84,204, 74,246,189, 67,210,248,128,150, 17,214,160, 50,137, 12, 49, 94, 85,246,246, 16, 84, +188,127,137, 76,200,242,120, 40,136, 83, 50, 65, 32,224, 2, 72, 33,226, 83, 74,160, 72, 53,227, 60, 69,202, 64, 58, 76, 57,126, +112,138, 18, 10, 37,101, 20,188, 16,185, 5, 74,106, 70,249,144,193, 96,192,179,187,151,248,245,159,249, 56,155, 27, 99,246,143, + 22, 28,157,206, 24, 78, 70,140, 39, 35,202,178,162,115, 29, 27, 59,219,236, 92,218,196, 56, 79,145, 39,140,138,148, 36,145, 24, + 27, 21,175,214,122, 66,159, 36,230, 93, 92, 25, 9, 31,176, 54,178, 18,206,175, 87, 74, 9,150,165,165,107, 2,249, 32,137, 57, +209, 90,146, 56,203,254,157, 83,228,170,229,221, 59,103,156,236,159,177,153, 41, 90, 25,184, 51,144,188,227, 36,199, 78,114, 88, + 59,110,189,115,143, 71,247,246, 56,156,149,148,214, 82,183,150,170, 53, 36,211, 1, 11, 1,223,190,241,136,236,246, 13, 62,247, +252, 37,254,198, 87,222,230,209, 59,183,105,131,103, 88,149, 36,121,198,123,179,134, 3,165, 56, 10,129,195, 32,248,181,171, 5, +191,126,109,155,183, 31, 60,228,155, 15,110,242, 79,238,222, 35,168, 0, 94,112, 57,139,194,179,251, 7,199,220, 95, 44, 24, 59, +199,192, 88,148,233,200, 2,140,181,230, 74, 62,224,103,183,175,176,150,167,180,137,198,111, 13, 56, 45,214,177,178, 32,212,154, + 96, 10,144,105, 47,191,139,204,242, 48, 59, 37,156, 30, 18,116,198,107,215, 95,100,153, 77,216, 17,142, 76, 69,173,132, 74, 20, +171,214, 82,174,206,184, 89,183,132,229, 28,202,138,160,227,117, 39,216,128, 43, 27,190,183,127, 68, 48, 51, 46,167, 5, 35, 60, +197,104,140, 91,157, 50, 59,222,227,247, 15,143,120,239,116,193,221,206,242,229,131, 7, 60, 76, 50, 78, 44,220, 53,134, 55,218, +142, 63, 41, 27,254,164,178,188, 42, 12,202, 59,230,229,138,247,203,134,133, 89,226,219,154,172,107,152,205, 23, 20, 74,242,246, +242,140,119,206, 78, 56,237, 12,247,151,103,188,123, 52,227,189,211, 19,110,221,220,227,224,116,197,189,147, 67, 6,218, 18, 92, +199, 89,181,192,154, 21, 89, 91,225, 77, 67,144,144, 4,135,145, 10,237, 29,185,247,132,174, 70, 59, 3,166,194,116, 13,111,150, +103,204,170, 25, 77, 85,225,202, 10,206,106, 68, 91,193,193,105,116,233,204, 74, 68,103,160,169, 48,153,100,133, 96, 89,151,188, + 93, 54,188, 55, 91,240, 94,181,226,187,203, 21,194,180, 8,103, 17,109,131,116, 6, 41, 3, 23,138, 2,229, 2, 90, 72, 10, 31, +120, 46, 75, 89, 83, 58,226,175,149, 66,167, 41,190,109,168, 93,139, 21, 14,225, 29,211, 98, 68,162, 37,195, 44,229, 76, 8,150, + 66, 64,145, 65, 58, 64, 36, 3, 68, 26,217,242,194,187, 15,129,109,158,190,233, 31, 2,184,121,220,173, 39,125, 81,239,127,199, + 63,180, 44, 12, 1, 17,250, 70, 40,213,143,243, 49,132,239,192,122,188,131,163,101,199, 28, 71,129,196, 27, 75,135,196, 58,199, + 80, 41,202,174,166,243,150,156,136, 69,238,156, 65, 17,245, 8, 65, 4,148, 84,216,166,126,172,213,242,166,137,235, 63,215, 70, + 1,154,179, 56,215, 98, 93, 3, 82,198, 3,159,169,113,128, 17,158,186,171, 57,107, 87, 84,206,114, 11,199,126, 87,113, 96,106, +206, 90, 75,101,106,142,154,101,100,181,183, 37,165,183,156,214, 53,149,117,172,130,195,121,137, 12,129,153, 53, 52,182,139, 61, +241,249, 52,136, 64, 16,158,178,139,142,158,101,137,101, 66,182, 0, 0, 32, 0, 73, 68, 65, 84,221, 50,144,138, 34, 4, 76,170, +153, 45,226,227, 15,244, 73,154, 26, 68, 62, 64,204,150,136,173, 41,226,224,132,114,109,194,199, 21,188,141, 70,116, 21,211, 44, +163,180, 29, 59, 50,229,253,114,198, 80, 69,131,171, 98,227,249, 47,209,217, 39, 59,117,161, 99, 1,234,122,111,186,137, 72, 70, +234, 85, 28, 19,201,126, 7,126, 14,148,249,151,234,214,243, 88, 72,133,131, 98,130,152,174,243,201,171,151,120,118,243, 25,132, + 78, 80, 42,225,226,214, 26,193,121,116, 8,204,235,142, 34, 19,104,173,168,106, 75, 72, 5,243, 85, 75, 85,119,120, 99, 25,164, +146, 91,179,167,226, 8,207, 5,120,178,127,171,157,135,151,156,219,191,242, 65,111, 13,147,125, 26, 90,159, 43,158,244,143, 57, + 75,122, 92, 99,136,187,250,197, 18,202, 50,222, 62, 10,107,145, 50,190,179,147, 36, 30,126,206,139, 56,125,145, 63,143,167, 85, +105,156, 24,164,242, 7, 11,187,148,224, 53, 11,103, 89, 79, 18, 54,165, 32, 11, 17, 62,227, 9,236, 8,193,153, 11,140, 3, 56, + 33,217,212,146, 35,215,119,253,231,157,250,227,207,189, 69,174, 47,244,174, 47,252, 57, 34,238,151, 91, 67,154, 43,180, 82, 49, +158,150,222, 3,255,231, 0, 16,188,251,221,183,248,236,175,254, 2,219,235, 19,164,146,204, 87, 45,211,233,144,147,147, 25,243, +211, 37,181, 9, 72, 21, 59,210,104, 3, 11, 49,158, 84, 42,138, 92,147,100, 18,225,162, 11,221,138,152,188,150,104,141, 22, 10, +111, 61, 74,198, 16,149,170, 54,120,231,113,206,211,117, 30,173, 37, 74, 62,185, 13,243,140, 76,235,152, 1, 36, 20,109, 29, 40, + 23,101,223, 97, 4,178, 36,165, 72, 7,140, 39, 19, 38,211,117,158,123,254, 25, 62,247,242, 46,139,147,146,111,188,127,135,116, +144, 81,140, 6,180,109,199, 98, 85, 49,152, 12,185,120,113,155,225,184,192,247,187,251,213, 50, 94,168, 7, 89, 18,197,123, 62, + 18,242,140,141, 5,221,121,143,235, 85,253,198, 58,156, 11, 72, 41, 73,180, 34, 77, 52,227, 65, 74,146, 42,208,113, 60, 88, 87, + 29,109,211,113,116,255,144, 91, 55,239,176, 56, 61,225,224,225,125,110,223,219,231,237,219, 15,248,214, 91, 31,112,156,175,177, + 51, 46,152, 37,154,183, 66,194,151,191,250, 45,190,254, 63,255, 9, 95,189,241, 46,255,232, 15, 94,231, 31,253,227,111, 35, 86, +199,188,124,249, 58, 39,251,167,252,155,175,190, 76, 33, 52,191,255,213,111,112,229,234,101, 62,251,185, 23,248,245,237, 33,127, + 38,128, 11, 67,202,165,229,229, 73,134, 82,154, 95, 30,166, 56, 31,248,238,253, 3,188, 53,124,236,234, 85,220,100,131, 67, 2, +218, 25,238, 86, 45,167,171,146,235,197,152, 32, 4, 3, 33, 49, 38,134,136,164, 82,242,233,141, 93, 46,236,236,176, 57, 28,115, +211, 90,110,184, 12, 49,154, 64,161, 48, 58,193,111, 20, 20, 91,235,236, 92,219,129,209, 58, 45, 26, 86, 22,164, 37, 4,201,228, +217,103,185, 62, 78, 25, 11, 73,103, 59, 18,173,217, 47, 87, 44,155,150,133,149,124,176,154, 69,104,211,108, 21,131, 44,130, 36, +120,219, 31,236, 4,111,207, 86, 92, 80, 13, 27, 74,211, 85, 37,143, 22,135,252,189,123, 71,188,249, 96, 70,117, 60,231,232,224, + 16,237,107, 46, 54,103, 44,110,220,160,109,103,160, 4, 66, 39, 8,219,242,237,229,140,163,166,230,165, 34,227, 15,110,189,135, +246,129,213,252,152,211,249,130,155, 85,203, 91,243, 5,239,150, 21, 95,155,151,188,126,182,228,221,121,205,131,217,146,217,106, +137,107,107,156,109,169,170,146,155,243,154,253,182, 37,152,138, 60,213,236, 74,201, 84,128,113,150,160, 20,170,107, 81,214,112, +236, 45, 27,166,161, 67, 64,215, 50,111,151,212,139,138, 85, 85, 33,124, 0,231, 16, 94,192,188,129,118, 5, 93,141,176, 29, 84, + 37,156,158, 33, 14,143,240,103, 11,192,227,203,138,122,181,164, 92, 44, 16,139, 5, 98,181,132,186, 66, 46, 22,136,174, 69, 9, +195,202,117,172,107,141,144, 9, 74,192, 69, 45,217, 17,158,161, 76,145, 90, 18,234,146, 96, 29, 70,128,212,138, 81,154, 33,128, + 66,105, 10,165,113,161,195,100,138,153,241,136, 44,129, 97, 6,163, 17, 66,166, 72,149, 34,113, 72,231, 62, 4,181,209, 79, 21, +118,253,195, 10,187,142, 35,115,126, 72,136,140,112, 46,214, 20, 41, 99,167, 46,162, 72, 48,142,203, 29,162,234,192, 5,170, 85, +203,253,202,176,232, 12, 34, 4,130, 12,204,155, 38,114,230, 3,116,109, 75,227, 12,185, 15,184,224,232,188, 65,122,168,187, 42, +166, 45, 58,135,235,106,156,233, 98, 65,247,142,174, 94, 17,132,199, 88,139, 13,142,206, 89, 90,111,113,222,177,104, 86,148,109, +195,153, 45,217, 55, 45,111,119, 75,110, 54, 43,110,149, 53,119,203,154,210,118,220,238, 58,150,173,161,242,142, 86, 73,102,171, + 18, 43,161,179, 22,101, 35,236,108,209,212,148,222,227,181,228, 65, 85,115, 49, 75, 56,181,134,182,173,177, 33,224,149, 64,219, +232,199, 55,214, 49, 85, 10, 33, 96,179, 72,217,171, 76, 20, 81,123,143, 48, 22,108, 28,193,203,249, 10,177, 54, 69, 30,204, 56, + 77, 20, 98, 49,199, 14,134,172,230,115,188,210,156, 52,115,100,154, 49, 11,158,114,121,134, 98,116,237, 75,232,243, 78,189, 79, + 87,235,179,101,177, 29,212, 77,236,222,109, 63,218, 78, 84,180,141,105,126, 44,192,228, 7, 62,178, 52,238,184, 19, 21, 79,132, +227, 33,131,233, 26,175, 93,190,198,100,109, 28, 35, 59, 61, 12, 6, 57,178, 23, 64,248,186, 69, 43,201, 96,152, 97,156,229,204, +121,170,101, 75, 23, 12, 78,192,114,181,228,160, 93, 96,170,174,183,204,201, 39,209,169,231,176, 27,211, 19,230,210, 34, 22,239, +252,188, 8,247, 59, 23,165,123,206,125,218, 43, 80,251,125,181, 51, 31,142,150,253, 97,235, 4, 21,161,251, 72,221, 23,243, 36, + 58, 6, 92,128, 81,209,231,201,247,197,190,238,126,112,212,237, 92, 31, 75,171,217, 78, 20,195, 30,206,210,187,238, 48, 6,118, + 18,193,125,239, 24,186, 64, 30, 60, 71, 82,224,186,167,118,233,231,157,250,211, 74,246,126,109, 18,124,192,132, 56,238, 86,104, +108,176,113,244, 29,252, 19,220,237,159, 51,170,113,184, 54,225,226,181, 93,138, 36,199, 56,195,254,253, 35,188, 51, 12, 6, 35, + 28, 48,155, 55,120, 4,147,113,134, 16,130,245, 34, 65, 8, 65,158,107,148, 82,100,153, 36,207, 20,193,157, 3,102, 4, 89, 46, + 73, 19, 69,150, 69, 14,130, 53,158,209, 80, 19,130, 64, 72, 17, 71,102, 65, 60, 30,225,159,199,218, 7,235,217,159,149,125, 34, +159, 96, 48, 25, 50,154, 76, 24, 77,198,140, 38, 99,146, 60, 69,167, 5,173,177,236,205, 86,204, 77, 96, 48, 28,130, 20, 72, 47, + 73,146,132,233,250,152, 52, 77,104, 27,195,236,116,193,219,239,191,203,255,246, 71, 95,231, 79,254,244, 13, 82, 20,235, 59,107, +140,139,244,241,232,207, 67,175,118,117, 44,202,142,186, 49,148,165,161,169, 45,214,248, 72,197,235,237, 55, 39,173,231, 99,157, +225,170,246,188, 25, 60,243,170,102,181,170, 89,149, 21,117,187, 36, 81, 9,243,213, 25, 15, 14,247,216,223,127,196,173,218,241, + 96, 1,126,123,196, 34, 75,176,207, 60, 75,158,150, 28,190,254,128,240, 65, 75, 56,171,184,251,157, 61, 62,243,133, 87,184,242, +252, 46, 97,125,192,157,121, 69,125,122, 76, 97,106,222,185,117,159, 7,143, 30,242,245, 59, 15, 57,122,255, 30,215,240,252,123, + 47, 61, 67, 45,224, 31,191,243,128, 71,139, 57,111,207,106,158,219,216,228, 23, 63,243,113, 54, 94,125,158,181,235,187,220,244, +130,123,247,238,240,193,131, 91,124,112,114, 76,131,103, 39, 31,240, 64,167, 44,218, 21, 50,209,188, 52, 93, 39, 77,115,106,107, +248, 78,215,241,102, 82,176,157,101, 92,209,130,157,196,144,143, 51,198,211, 9,195,124,192,246,198,144,193, 48,101,161, 83,124, +231,193, 25,102, 23,183, 25,232, 49, 74,122, 74,165,104,234,154,253,174, 99,229, 53,221,149,171, 28, 79, 47,210,118,115,120,120, + 16,131, 69, 92, 31, 22,226, 61,190,159,144,188,109, 91,218,106,201,205,182,228,255, 40, 87,124,103,105,113,243, 6,247,193, 28, +127, 56,199,220, 93, 49, 95,149, 96,170,216,217,248, 14, 49, 63, 70, 78,214,216, 30,111,241, 59, 95,248, 4,191,252,169,151, 48, +173,231, 96,126,204,219,251, 51, 62,184,247,128,123,103, 43,238,122,193,163,166,165,105, 44,214, 54,177,115,107, 27,108, 23,133, +130,206,251, 88, 32,188,165, 92,173,216,107, 2,147, 84, 50,192,209,248,142, 11, 66, 82,123,143, 22, 2,235, 12, 83,211,178, 82, + 9,109, 53,231, 65, 85,179, 10,129,174, 92,113, 58,171, 98, 55,142,138, 81,163,161,111, 8, 62,186,211, 54, 22,177, 92,192,124, + 14,179,121,108, 44, 22, 53, 98, 54, 67,156,157, 32,142, 79, 16,199,199,200,197, 2,121,186,128,197,130,185,109,153,153, 10,133, + 98,135,192,181, 52, 35,181, 22,209,182,248,206, 97, 8, 56,111, 73,149, 34, 17,138, 34, 73, 73,133, 66,121, 79,234, 3,206, 59, + 38,227,156,113,145,240,252,120,192, 11,107, 3,214,166, 5,227, 34, 97,222, 4,148,245,113, 59,233,253,227, 66,158,126,164,200, +235,167, 58,122, 33, 68, 44,210,166,239,212,205, 83,227,119, 23, 67, 78, 68,136,157,186,112,253, 4,247, 60,184, 38, 8, 68, 87, + 65, 42, 17,109, 77,217, 6,246,219,134,147,186,101,148,234,200,205,234, 26,154, 0,141, 49,204,113,164, 33,208, 56, 67, 27, 2, +166,107,113, 34,208,118, 53, 22, 79,101, 27,156,107,113,214, 96,189,197,184, 14,227, 13,101, 87, 81,217, 22,231, 58,246,218,138, +131,122,198, 7,109,201,237,106,197,183,109,205,222,114,201, 55, 79, 87, 44, 92,199, 65, 89,115, 38,224,208,121, 78,172, 67,107, + 69, 89,150,168, 52,199, 6,139,113,158, 78, 9,150,141,195, 56,207,178, 50, 28, 25,199,153,241,140,173,101, 32, 28, 86, 40, 90, +103, 81, 46,166,146, 90,239, 25,234,120, 65,203,164, 96, 36, 21, 75,239, 89, 90, 19, 15, 62, 68,160,152,148, 14,129, 66,182, 75, +212,100,140,154, 45, 81, 89,138,182, 14, 53,202,145,117,137, 74, 52,170,142, 60,125,169, 51, 20,235,207,127, 9,219,119,234,231, +230,131,208, 7,172,208,231,131, 43, 25,139,177,234,247,235, 42, 60,137, 88, 85,242, 9,159,252, 71, 89,192,164, 4,153,197, 93, +118, 58,132, 98,128, 72, 83, 6,195, 28,145,164, 76, 82, 77,146,102, 40, 25,240, 1,114,173,145, 74,144, 9,176,166,163, 89, 53, +204,106, 71,219, 25,206, 22, 37, 42,213,180,171, 6,176, 28,148,115,234,170,137,221,177, 13,177,112,203,190,115, 69, 64, 48,125, +242,141,140,209,167, 73,127,191,125,136, 35,167,208, 31, 52,252,249,232,186, 39,196,157,123,224,127,220, 58,129,126, 77,145, 21, +189, 50, 61,196,195,129,214, 79,146,215, 68,191, 14, 16,231,251,240,143,118,252,113, 70, 53,214, 30, 47, 21,218,129,246,113,188, +123,190,122, 95, 35, 78, 70, 74,239, 25, 10,207,105,119,142,138,181,125,132,107, 95,118, 30, 47,181,206, 95,147, 94, 84,231,125, +244,104,170, 62,207, 62,244,135, 55,255,231, 63,148,221,248,254, 13, 94,249,204,107,168, 76, 51, 46, 10,234,182,195, 89,199,114, + 49,103, 99,115, 74,158,198, 85,205, 48, 75, 98,200,139, 32, 10,224,132, 32, 81, 2, 27, 4,206, 6,130,140,170,101,173, 98, 24, + 74,146, 38,164, 89,138, 76, 52, 74, 9,130, 9,113, 56,212,196,200, 93, 99, 60,198,216,120,190, 10,158,217,178,163,174, 61,213, +178, 67, 41,201,104, 24,139,119,146, 37,188,120,125,155,151, 46,111, 16, 84,138, 15,129, 68, 73,164,144,172,170, 21,243,147, 5, + 82, 10,100, 34, 56,124,116,192,247,110,188,195, 31,127,247,109,254,236,246, 45,190,242,246, 45,110,126,103, 15, 62,168,225,118, +205,141,113,205,199, 47, 93, 98, 99,125, 68,170,162,187, 91,247,178,146,198, 56, 58,227,112, 30,154,198,210, 54,142,198,246,201, +193, 90,146, 41, 77, 55, 84,124,122,163, 96,120,161,224,238, 32, 97,184, 53, 98,124,101,131,236,165, 75, 36,207, 93, 33,108,173, +145,138, 1,251,167,167,188,251,206, 1,109, 17,120, 20, 18,214,150,150,236,194,148, 3, 37, 25, 60,127,157,171,215,183,121,246, + 51, 59,124,230, 87, 94,226,211,191,246,113, 78,148,229,238,193, 1,239,223,126,200,183, 30, 60, 68, 33,248,173,201, 38, 27, 94, +240,207, 27,203,157,170, 65,234,140,201,197, 75,216,205, 41,199, 90,211, 77, 11,154,139, 91, 36,151, 47,113, 89,167, 20, 71, 21, +223, 60,171,121,243,254, 41,239,221,186, 71,215, 89,178,245, 77,222, 42, 87,236, 47, 79,169,234,138,249,114,142,150,130, 85,158, + 83,213, 75,164,181,220, 48, 29,223,181, 6,165, 7,228,222,179, 46, 61, 3,215,210,106,201, 95, 26, 13,249, 43,211,117, 94, 82, + 18,167, 21, 42,151, 44,172,224,250,100,200, 56, 87, 84,197,132, 3, 18,142, 90,207,253,106, 73,105, 45,109, 91, 51, 89,219, 34, + 75, 4,114,178,201,194,204, 8, 71,199,208, 57,130,238,233,118, 66,224,165,161, 89, 54,188, 57, 95,242,237, 69,201,161, 83, 56, + 65, 20, 82,174, 41,252,105,212,231,167, 43,207, 79,229,154,191,184, 94,240,252, 98,197,205,186, 4, 28, 87,159,189,198,199, 71, + 3,214, 18,205,223,122,235, 30,183,131,136,187,202,163, 57,193,119,120, 20, 94,107,156, 15,209,137,210, 69, 30,130,243,254, 49, +201,207, 3,193, 69, 17, 21, 78,112,156,164, 92, 25, 42,118,131,199, 58,203, 24, 65,107, 58,134, 4,156,115,100,166, 97, 30, 60, +167,222, 51, 63,155,115,186,168,232,218, 22,119,178,138,214,170, 44,229,213, 11, 5,255,246,165,117, 62, 62, 29,243,198,241,234, +113,108,234,227,142,214,244,130,221,182,133,182,142, 28,143,208, 7,184,244,187,101, 89,199, 8, 95,121, 82, 34, 59, 67,233, 26, + 82, 37, 24,219,142,245,166, 66, 57,143,243,150,186, 45, 9, 50, 32,157, 39,149, 2, 45, 64, 11,141, 12, 30, 41, 37,133,146,108, + 38, 41,159, 24, 12, 25, 39, 9,211,108,192,122, 62, 96,146, 40,126,122,115,194,199,198, 3,214,181,224,200, 58,146, 0,169,247, +164,125, 97, 79,250,219,211, 29,187,240, 81,148, 38,180, 64, 24,158,100,190, 59, 31,129, 55,206, 61, 1,210, 40,137,176,145, 61, + 32, 68, 28,249,147,104,132,141, 13,143, 16, 81, 84,214,117,158, 71,171, 14,105, 59,202,206, 50, 8,130,149, 8, 88,235, 56,117, +142, 3, 1, 71,182,163,146,146,135, 85,201,137,112,172,154, 21, 51,239,104,218,150,189,174,193,155,134, 67,215, 98,141,161, 82, +138,101,219,114,191, 46,185, 85, 46,248, 32, 56,190,113,186,226,131,206,112, 99, 94,243,192, 58, 26,231, 89,213,150, 86, 6,170, +101,133, 79, 83, 26,239, 73, 8, 56, 41,169, 77, 71, 25, 4, 74, 40,142, 86, 13,235, 89,194,126,109, 40,155,134,182, 53,108,103, +146, 19,103,216,148, 26, 97, 45,155, 74,209, 66,212,191, 16, 83, 30,231,206, 16, 2,212,214,113,185, 72,120,127,209, 64,211, 69, +205, 53, 30,233, 4, 82,216,184,202, 59, 93,160,130, 64,167, 26,109, 12, 74, 43,116, 8,104, 23, 35,175,149,148,200, 85,133, 98, +218,239,212,221, 57,253, 77,197, 66,224,252,147, 0, 17,210, 94,237,221,227, 93,117, 74,246,252, 69,214,175, 94, 64, 95,216,164, + 29, 15, 97,107, 19, 6, 99,184,120, 33,126,189,181, 9,147, 53, 24,140, 98,145, 77,147,136, 60,204, 18,228, 56, 35, 77, 18,100, +112,140,117, 26,177,125,185,102, 58, 28, 49, 29, 23, 76,166, 41,174,181, 56,111, 32,120,188,132,106,181,192,244,172,220,163,211, + 25, 85, 83,114, 80,205,152,213, 21,198, 7, 66,119,190, 15,239, 85,225, 69, 10, 77,251,132,134,148,232, 88,212,181,142, 43,134, +244,169,241,187,238, 59,247, 68,199,125,134,210,177,168, 43,249,227,167, 17,185,142, 43, 5,124, 20,212,233, 60, 22,246, 44,233, + 45,117, 34,138,239,206, 73, 76,173,123, 34,182,251, 8, 51,255,149,188,160, 8,176,239, 59, 46, 41,141, 2,150,253, 47,241, 88, + 8, 18, 33, 72,165,164,240,240, 64, 75,130, 0, 90,251,228, 96, 96, 31,171, 84,122,111,190,232, 21, 27, 34, 78, 16,148, 2, 93, +244,147, 8, 27, 31,223,191, 76,172,110, 34,217,183, 29, 47,189, 16,225, 22, 87,118, 54, 57, 91, 84,156, 29, 31,225,131,138,135, +177, 60, 99, 88,100,212,181, 33,200, 88,212,109, 32, 90,209,164,192,123, 17,247,228,113,225, 69,162, 20,214,250, 30, 69, 31,199, +219,182,207,137, 15,222,211, 57,135,107, 28,131, 97, 26,247,218, 65, 16, 28,228, 89,194,104,152, 51, 26, 23, 92,216, 25,179,181, + 49,224, 51, 47,237,240, 51,215, 54, 89, 53,134,251, 71, 75, 30, 62, 60,160,106, 58,190,249,230,247,185,127,116,196,239,127,239, + 29,254,236,143,223,226,235,223,187,193, 27,119, 30,112,255,222,156,178,181,180,231,118,205, 81, 30,133,136,135, 6,127,167, 38, +127, 38,229,202,181, 93, 38,195, 2, 25,226,240,197, 19,207,141, 65,200,232,149,117,145,124,165,164, 68,101,154, 97,161, 25, 23, + 41, 27,121,194,239,189,183,207,215,111, 28, 49,187,121,196,217,173, 67, 56, 94,177, 60, 89,224,131, 35,153, 20,236, 92,219, 98, +114,253, 42,255,249, 47,190,134,218,220,101, 49,157,160,101,224,167, 82,197,219, 69, 65, 54, 72,185,250,242, 46,249, 51, 23,144, + 23,183,185, 57,235,248,211, 15, 30,240,255,157,214,124, 93,140,120,127,178,203,175,188,250, 34, 47, 92,222,228, 52, 31,242, 72, +228,108, 77,167, 60,251,201, 23,153,236,110,112, 40, 20,157,245, 12, 11,205, 32,207,120,118,152,241,153, 66,176, 88,214,124,251, +100,193,221,166, 98,103,103,141,245,103, 47, 51,188,180,205, 88,143,120,189,236,184,175,167,188,176,181,205, 21, 41, 89, 10,193, +119, 66,224,123,214,177, 39, 21, 73, 26,149,220,169, 20,180,213, 18, 99,106, 26, 23,248,205,233, 58,207, 12, 71, 92, 72, 50,238, +217,142, 3,231, 24, 42,152, 52,150,141,249,138,105, 98,145,131,117,110,216,138,169, 74,233,108,135,242,142,253,147, 3,134,211, + 77,130,113, 44,101,130, 93,206, 8, 85, 5, 62, 16,186, 38,142,225,173,193,227,241, 66,226,250, 11,179,147, 26,145, 74,134,163, +132, 38, 11,140, 22,129, 79,108,228,252,226,245,117, 62,183, 57,102,146, 37,172,117, 14,177, 90,241,126,115,198, 63, 95, 88, 78, +207, 22,124, 99,190,136, 86,167,181,141, 8,183,240, 16,186, 50, 90,243, 44,120,215, 60, 41,228, 66,196, 46,253, 41,149, 63,196, + 97,165,235, 90,198,227,156,165,113,236,138,128,116,134,169,177, 52,174, 37,224,153,183, 45,117,107,168,173,101,182,108,168,170, + 22,233, 44,141,233, 16,198, 32,138,156,255,228,202, 22,191,188,115,129, 65,170,248, 86,219,208,204,234, 15, 77,205,196, 71, 35, + 85, 85, 44,228,231, 2, 52, 33,163,128, 86, 90,139,176, 29,162, 44, 17,199, 75, 14,143, 79, 57,105,102,236,132,142,177,237,232, +154, 18,159, 38, 24,107, 8,109, 69, 22, 60,174, 51, 72,161, 48,222, 32,132,100,173, 24,179,158, 23, 12,178,130,141,124, 76,167, + 20,195,100,192,246,112,157, 11,105,193,115,195, 33,151, 7, 57,207, 72,205, 21,165, 41,148,228,106,158,179,150,165,124,122, 52, +101,223, 91, 18, 33, 80, 61,131, 94,156,119,235,177,245,142,161, 72, 46, 10,173, 63,164,144,151, 18,153,196, 68, 68,233,125,252, +218,121, 68,255,119,162,235, 34,202,214,185, 24,113,237, 61, 39, 93,199, 94,231,249, 32, 56,110,159, 54, 60,244,134,165, 20,124, +208,118,220,110, 27,110,215, 45,247,188,225, 86,215,241,102,101,120,171,108,184,163, 2,183,156,225, 77,211,114,100, 44,111,152, +142, 7,117,201, 91,182,227, 86, 91,243,118,109,120,163, 49,156, 25,203,204,122,218, 16,237,171,198, 56, 80,130,214, 70,203,173, + 49, 6,135,103,222,121,230, 62,142,241, 59,235,121,104, 12,153, 20,204,154,150,206, 90, 66, 99, 17,198,177,108, 60,151, 7,138, +220, 88,174,103, 41, 82, 4,182,149,194,123,207, 26,208,244,152, 97,107, 61,169,128,101,221,225,125, 96,225, 44,194,199, 60, 18, + 9, 40, 99, 81,157, 69, 21,154, 68, 41,116,213,162, 85,194, 21, 87,211,233,148,169,177,248,186,137,223,163, 20,250, 7, 9,113, +221, 15, 94,208,117, 15, 71,144, 50,178,141, 95,185,196,245,205,109,154,206, 51,206, 83,234, 45,199,162,118, 28,214, 11,214,147, +130, 36, 45, 40,155,134,253,178,138,251,219,164, 23,220,233, 39,251,248, 60, 21, 76,178, 20,130,195,132,142, 73,146,162,148,100, +152, 11, 76,103, 8,170,163,177,142, 84,129,112,134,164, 72, 73, 4,180, 18,238, 29, 44, 34, 67,128, 64,189,234,240,222,199, 67, +195,121,116,105, 63,198, 66,167, 79, 30,131, 1,114, 31,139, 91, 34,227,247, 75, 29,139,126,154,210,211, 81,158, 20,251, 85, 10, +117,253,100,223,254,195, 62,170, 6, 54,198,125,225,238,159, 39,213,167,174,229,253,253,176,253, 33, 33,113, 31,166,237, 61,245, +244, 18, 60, 95,175, 75, 62,145, 23, 92,215, 25,203, 16, 24, 11,193,179, 66, 62,246, 9, 19, 60,117, 15,140,185,228, 44, 15,206, + 87, 26,231,135,132,199, 63,183, 31,197,235, 2, 54, 55,226,255,189, 42,123,112, 77,143,158,173,254, 37,133,142,137,132, 32,185, +251,149,239,114,243,133,231, 41, 62,247, 26,243,213,138,143,189,244, 12,207, 93,191,196, 91,111,222,226,240,209, 35,218,178, 35, +207, 52,137,210,168, 10, 6,195, 4,103, 3,149, 51,100, 65, 70,217,130,146,228,121, 18,109,107, 62,110, 78, 91, 23,213,169,198, + 65,145, 73,140,240, 36,137, 70,117,158,144, 71,181,184,214,138,113,145, 80,202, 8,170,137, 23, 60, 65,219, 57,210, 68,243, 15, +254,240,255,103,236,189,122, 44, 75,179,244,188,231,115,219, 30, 27, 54,125,102,121,215,213,102,218, 84,147,163,129,208, 50, 35, + 18,148, 4,112, 40, 8,188,162, 0,253, 2,233, 94, 16,248, 19,116, 33, 72, 0, 37, 8,208,141, 64, 2, 26,104, 64,129, 24, 81, +131,230,104, 60,167, 77, 85, 23,171,170,203,102,101, 86,250, 12,115, 34,142,219,246, 51,186,248,118,102, 86,119, 87,207,116, 0, +129,116,129,140,115, 78,236,179,215,183,214,122,223,231,253,128, 71, 39, 71, 76, 71, 83, 30,159,156,115,111,185,224,189,187, 71, +168, 76,114,177,204,217,153,149, 44,214, 61,156, 14,207,125, 54,252,124,142, 91, 72, 21,201,190,198,238,229,248,191,163,224,110, +199, 31,255,249,207,121,225,249,231,152,190, 85,176, 63,202, 49, 34,178, 21,148,210,104,229, 98,104, 71, 22, 16, 74,160, 4,104, +163, 72,149, 68, 75,129,244,158,221,182,163,237,122, 78, 23, 39, 32, 21, 75,219, 99,235, 53,235,143, 54, 24,149,178,116,130, 43, +223,125,145,231, 94,185,200,215, 38, 91,110,221, 60,229,202,209,154,107,103,154,174, 18,156, 94,154,242,200, 42,230,235,142,223, + 53,158,159,228, 9,122,182,195,235,105,201,205,180,224,197, 36,229, 63,157,106,236,170,226,167,199,143,113,101,193,229,209, 14, +197, 60, 99,238, 45, 63,217, 70, 26,222,200,193,244,108, 77, 85,102,212, 57,180, 23, 74, 46, 79, 83,246,130,103,190, 51,230,162, +150,124,250,193, 29,146,229,130,195,124,204,120,118,129,236,194, 8, 89, 55,184,237, 26,181,233,232,131, 39,164,130, 84, 41,232, + 29,143,117, 73,147,195,105,211, 48, 49,129, 44, 73, 16, 46, 16, 68,100, 46,116, 4,230, 8,246,139,132,139, 89,134,116, 61,119, + 78, 62,101,103,239, 50,231,222,227,148, 33,145,158,170,171,121,247,147,247,105,199, 59, 96, 12,242,229, 87,241,117, 13,139,199, +120, 93,198,108,108, 41, 16, 85,141, 48,131,227,164,238,193,158, 99,117, 74,155,101, 8, 7,114,170,153,207, 19, 46,229, 41,115, +147,160, 9,220,214,154,151,172,227,181, 7,199,188,189, 94,242, 39,155,171, 96, 70, 8,147, 32,144,112,227,121,152, 78, 9,119, +238, 17, 54, 21,161, 89, 71,189,116, 15,193,200,167, 14,209, 95, 1,170,180, 29, 98,186,195, 6,152, 72,197, 18,129,219, 52,156, + 26, 25, 59, 87, 21,145,212, 77,213,227,250,142, 41,113,250,120,199,250,168,212,238, 44,178,106,121, 49, 73, 73,133, 66,234,132, +209,104,194,249,100, 77, 88,213, 67, 2,223,175,129,189, 12,112,172,224, 60, 65,201,167,118, 66, 7, 56,107,177, 52,116,231, 13, + 31,173,207,248, 95,238, 60,230,251, 38,227,198,108,204,120, 62, 34,155,142,120, 46, 27, 83,181, 53,185, 74,232,251,150, 30, 79, +146,231,160, 12,217,240, 61, 77, 90, 48,245, 30,235, 29,227,180, 32, 45, 39,216,205,217, 48,114, 15,136,113,193, 15, 66, 32, 67, + 80, 8,197,186,107,120,171,157,114,212, 52,188,183, 92,242,110,221,162,250, 14,101, 45,194,254, 82,222,251,151, 14, 72, 79, 1, +156,157,125,154, 1, 47,158,208, 63, 59,139,120,146, 11, 31, 60, 33,209,241,121,246,131, 32,174,247,172,155, 26, 13, 84,149,228, +241,195, 21,186,200,208, 50, 6, 45, 41, 41,144,168,152, 1,159, 70, 71,147, 16, 17, 61, 13,110,216,178,134, 1, 1,237,241, 77, +143,183, 30, 55,220,175, 92, 18, 35, 91,179,210,208, 5, 71,130,100, 21, 98, 79, 22,128,160, 4,222,246,172,147, 4,223, 58, 8, + 29, 75, 25, 87,216, 50,145,144,106,194,166, 67,164,138,157,214,242, 66,106,208,125,203,142,202, 16,222, 71,200,216,112,235, 47, +132, 36,211,112,180,106, 16,193,115, 57, 87,220,173, 19, 68, 84,101, 32,123,144, 74,163,140, 68,123,152,102,130,203, 74,243,237, + 82,209, 88,199,117,111,105, 83,201, 81,102,184,185,174,185,189,110, 81,140,174,253,211,191, 85,181,174, 6, 96, 74, 8,112,237, +128,231,246,102,180, 54,176, 91,150,228,166, 36, 51, 25,123,229,132, 76,104,114, 19, 57,189,163,212,144,200, 64, 97, 4,171,110, +216,121, 11, 65, 98,146,184, 71, 21,130, 34, 49,104, 9, 55,118,118, 48,105, 74,162, 2, 93,215, 83,164,146, 92, 43,166,165,198, +216, 64,179,109, 25, 25, 65,187,172, 88,111,207, 73,180,102, 81,109,185,119,118,134,237, 61,146,200,227,133, 39,161, 32, 67,241, +106,219, 33, 18,181,137,197, 45, 77, 24, 84, 80,207, 70,237,121, 22,191,134,161, 83,183,253,112,120, 81, 80, 87,241, 74,251,155, +198,240,194, 67, 57,138,190,171, 50,139, 69, 60, 77, 6,117,123, 22,197,135,102, 80,199,123, 23,213,158, 95, 86,156, 63, 25,251, + 59,207,117,173,240, 66,178, 12,129,145, 15, 84, 2, 82, 33,162, 94, 81, 64, 41, 4,159,217,150, 92, 73, 54, 82, 70, 92, 42, 3, +100,199,250, 95,180,184,205,119,153, 92, 60,164, 28,141,169,165,142, 83, 11, 61,232,225,131,143, 73,115, 90, 71,135,192, 47, 24, + 82,252,175, 30,234,228, 83, 63, 10, 31,254,236, 67, 94,255,230,155, 36, 89,202, 98, 91, 49, 46, 50,186, 16, 80,105, 66,181, 90, + 35,179,148,253,157, 49,227, 60, 65, 34,152, 36, 2,173, 37,163, 68, 81, 91,143,148,112, 48, 54,113,191, 45, 5, 10, 65,110, 52, + 58,213,200,129, 62, 55, 78,163, 32, 46,114,155, 21,125,231,168,182,150,117,211,177,222,118,212, 85,199,182,234,168,250,158,122, +211,211, 11,207,189, 59,199,252,139,191,126,155,101,181,166, 76, 13, 82, 64, 19, 98,218,215, 40, 51, 84, 46,208,235, 64, 48,192, +202, 69, 49,100, 42,163, 8,244,118, 27, 51,143, 39, 17, 88, 65, 42,224,221,138, 59,101,197,139, 87,174,112, 97,103,196, 36, 79, +227,132, 32, 49,164, 70,162, 7, 26, 34, 34,196,188,119,249,196,109,232,217, 54, 29,171,166, 37, 49, 16,188,164,107,123,200, 83, +244,197, 93, 46,124,239, 53,190,113,117,151,127,244,141, 27,220,187, 48,231,115, 41,233,203,148,139, 23,167,124,195,247,124,235, +213, 67,174, 78,225, 38, 41,123, 99,205,181, 89,193,238,106,197, 79,110, 63, 70, 20, 35, 94,191,177,195, 27, 99, 77, 18,122, 14, +131,229,110,232,184,103, 52,243,249,152,221,197,134,211,211, 37,201, 39,119,169,174, 92, 68,118,142, 63,255,171,183,249,248,143, +127,136, 93,181,220,125,120,196,173, 7,247,249,224,103,239,115,243,237,119,184,113,225, 58,203,109,207,103,143,239,243,211,155, + 55, 41,109,199,165,249, 30, 19,163,113,137,198,104, 67, 90,102,116, 94,160,205, 96,121, 37,144,116, 53,127,184,173, 57,205, 39, + 60,144, 57,191,111, 5, 63, 72, 20,183,109,203,187,109,203, 81, 93, 49,174, 59,246,132, 98, 90, 24,102,227, 9,135,105, 70, 38, + 37, 69, 89,210, 7,197, 44, 79, 57, 24, 21,232,190,227,130, 16,248, 36,103,163, 50,152,149,132,211, 37,228,134, 16, 20, 1,133, + 23,150, 32, 19,188, 84,241,179,111,162, 0,108, 91, 19,132, 96,156, 37,236,149,154,203,133,225,165, 81,206,149,157, 25,175,205, +114, 38, 46,176,168, 90, 94, 15,144,159,159,243,197,250, 28, 49,153,198,131,130, 50, 8,149,192,222, 30,228, 41,225,172,138,185, +225, 10,188,139,200,226, 32, 69,108, 24,190,252,118,207,198, 48, 74, 56, 13,138, 60,151,180,109,143, 87,154,186,106,113, 74,209, +247, 14,217,117,132,174,167,116,129,189,214, 33,109, 64, 90,199,194,134,104, 25,235, 45,251, 99,133, 73, 19,254,109,183,229,199, +173,139,158,228, 22, 4, 81,161, 46,126,185, 75,127, 34,149, 25,108,159, 66,240,180, 91,127, 10,144,241, 50,110,251,250,158,202, +121,110,182, 13,239,156,158,242,163,227, 51,206,214, 21,174,217,210,119, 61,133, 18,145,251, 32, 5, 86,104,172,209, 88,165,145, + 69, 70,151,165,104,147,146,100, 25, 34,196, 52,179, 92, 70, 63, 56,222, 51, 53,138, 84, 4,174,148, 35,198,202,112, 99,103,159, +203,163, 9,151,203,140,189, 36,101,207,104,238, 12, 9,213,191,124,223,252, 21,223,187,247, 40,239,145, 90,199,209,177,181,113, +179,107,237, 32,184,211,207,244, 7,246, 73,138,167, 4, 27,179, 38,188,235,241,189,197,225,113,193, 98,117, 66, 31,160,239, 28, +189,209,116, 70,210, 41, 73, 43, 36, 45,208, 10, 65, 27, 2,173, 20,180, 66,208, 13,177,207,164,134, 38,209, 72,161,216,155,141, +120,177, 76,121,109, 90,114,163, 24,113,161, 72,121, 62, 49, 92,202, 52,107, 2, 85,158,209, 11, 65, 72,211,232,212, 73,212, 83, +203,119, 16,146, 96,163,125, 13, 9,175, 39,130,111,102,134,239, 22, 5, 19, 2,135, 70, 49,150,177,246,109,189,139, 1,166, 33, +208,244, 49, 18, 90,133,192,219,155,154,182, 11, 8,173, 80, 34, 68, 87,145,144,131,240, 56,225,239,150, 25,111, 77, 71,188, 84, + 22, 92, 25,143,120,121, 50,198, 40,197,203,105,198,141,209,136, 61,205,111, 80,212, 97,216,207, 70, 66,154, 60,152,112, 48, 42, +216, 47, 39,140,211, 49, 62, 8,198,249, 8,163, 83,138, 36, 35, 53, 38, 78,122,197,147,221,143,167,204, 83,150, 85, 3, 74,162, +130, 68, 42, 65,161, 12, 33,120,118,202, 41,147, 84, 50,155,151, 72, 41, 40,210,140,124,148, 50, 77, 21, 35,163,112,189, 67,186, +150,126, 93,209, 53, 91,164, 20,124,177,120,200, 7,247,143,105,123, 79,158, 40, 90, 47,152, 10,141, 16,129,174,139, 30,200,129, +134, 2,205,102,200,132, 7,178, 44,238,209,211,129,150, 39,134,142, 29, 49, 16,226, 6,168,140, 28,188,238,189,143, 7,131,191, +201,246,165,242,216,253,143,179,120,241,165,102, 40,174,122,200, 86,215,131, 95,125, 80,122,118,245,175,134,227,248,200, 5,120, + 48,116,232,151,141, 97, 19, 2,115, 21, 59,245, 38,196, 92,241,147, 65,184, 83, 9, 72,125, 96, 43,158,224, 94, 19,184,254, 18, + 47,191,249, 38,167, 42,135,147, 71,112,184,199,165,217,156,217,168,164, 15,208, 46,206,226,129,198,185,103,143,231, 43, 7, 16, +191, 92,216, 7, 85,253,151, 62,126,252,103, 63,226,187, 63,248, 62,147,162, 96, 83,215, 40, 4,245,166, 97,178,183,131, 86,130, +182,245, 4, 9,227, 60, 29,242,135, 21,137, 86, 76, 75,195,180, 72, 16, 42,210,232, 38,153, 33, 47, 12,121,166, 40,141,102,148, + 27,132, 20,180,189,101, 83,117,108, 58,203,102,221,178,218,182, 8, 5,171,243, 58, 90,221,240, 52,181, 37, 77, 12, 89,153,160, +130,228,202,181, 61,250,147,115,238,172,215, 40, 4,153, 74, 81,210,179,238, 28,151, 71, 19,118,210, 52,102,237,120,112, 89,128, +179, 97,194,177,147,194,238, 48,201,209,146,189,195, 49,227, 89,193,246,106, 66,213,195,190, 73,120,225,218, 5,102, 99, 67, 38, + 20,153, 20, 3, 82, 51, 12,111,228,104,163, 43,148, 33, 81, 10, 23, 60, 54,120,210,204,176, 62,107,216,214,142,157,111,223,224, +218,215,175,177,127,105, 14, 58,190, 39,166, 77,197,159,254,228, 22,159,255,213,207,249,248, 47,223,225,248,222,154,247, 22, 21, + 63,215,130,203,227,140, 68, 38,164,101, 74, 97, 36, 63, 50, 41,226,234, 62, 85,106, 56,111,123,194, 78,193, 52, 75,152, 20, 25, + 63,157,143,153, 94,222, 99,190, 59, 69, 63,127,129,249,124,204, 97,154,226, 38, 99, 38,133,225,218,115, 87,249, 87,255,253,191, +224,163,243, 5,159, 62,122,200, 71, 15,143, 17,244,124,243,213,215,249,237,239,191,206, 15,255,232, 79,248,131, 63,250,107,142, +178,148,111, 93,188,200, 56, 53,145, 98, 38, 66, 28, 15, 6, 65, 39, 5, 93,239, 48,196,244, 67,213,215, 60,239, 27, 86,199,143, + 88, 59,139, 67,241,105, 91,243,133,150,116,206, 82,216,158, 73,223,179, 63, 74,217, 25, 79,152, 76,118, 33,201, 41,243, 9,169, +201,152,236,237,144,142,199,120,149,112,189,200,185,161,224, 34,158, 68,104, 30,202, 4, 70, 41, 88, 75,240,142, 96, 99,148,101, + 72, 4,193,197,227, 58, 58,118,212, 96, 17, 30,236, 36,103,150, 39, 28, 22,134,215,198, 5,123,123, 23,201, 76, 70, 17,122,222, +127,112, 70,102, 52,123, 2, 62, 87,146,190, 48, 72,169, 17, 89,142, 50, 41,255,236,183,222, 64, 36, 25, 31,105, 8,199, 43,130, +239, 9, 82, 16,188,136, 30, 20,239,127, 33,214, 65,168, 4, 89,230,200,222, 51, 54,146,171, 69, 22,199,241,105, 74,225, 29, 59, + 62,112, 24, 2, 7, 65,114, 73, 66,230,224,170,150,132,222, 49, 21,158,199, 54,102,181,191,183,220,242,163,170,229,125, 7, 34, +213,177,128, 21, 58,138,202,172,125, 86,216, 77, 20,147,137, 16,190, 52,118, 39,142,179,135, 80, 25,225,191, 4,120, 29,238, 43, +193,199,199,238, 1,239, 29,143,183, 91,126,118,190, 38,177,142, 69,240, 44,130,227, 24,143, 51,134, 86,198,174,182,241, 30,153, + 36, 60, 82,154,218,195, 56, 77, 24,235, 40,236, 19,125, 75, 46, 21,173,107,185,144,100,228, 38,101,119,114,136, 81, 25,249,120, +151, 66,231, 28,148, 25,187, 90,115, 37,207,240, 90,241,104, 48,109,135, 39, 22,105, 41, 17,169,137, 99,119,173, 80, 90, 33,141, + 65,105, 25,247,241, 66, 60, 45,246, 79, 70,242,226,233, 4,114,104, 58,188, 37,104, 25,101, 65, 82, 18,178, 2,143,198,151, 37, + 46, 79,112, 69,129,157,230,244,169,166,147,146, 62, 77,232,148,164, 11,146, 54, 81,116, 73, 74,151, 37,244, 66,208, 43,197,104, +148,225,132, 97,103, 92, 48,202, 50, 94,152,140,248,157,189,107, 92,204,166,236,155,130,171,197, 52,122,219,149, 98,148, 72, 54, + 94, 96,211,140,198,187,120,157, 56, 23, 11,185,134, 50, 68, 66,120,231, 61,169,119,124,179, 72,121, 77, 43,130, 12, 40, 36,107, +235, 40,140, 70, 15, 89, 23,181, 15,116,222, 13, 98, 76,207,113,219, 35,145,156,216, 88,240, 37, 10, 41, 37, 90, 40,166,163,156, +255, 48, 79,249,222,222,152, 27,163, 17,211, 34,225,181,157,125,188,209,236, 23, 99,146,180, 32, 75, 50,114,165,127,195,162,254, +164, 0,121, 79,152, 22, 60,183,183, 23, 71, 73,104, 82,173,209, 74, 99,135, 19,164,150, 42, 50,243, 7, 4,236,186,174,216,218, +142,109, 31,103, 23,233,144,187, 29,132, 32,145, 2, 47, 3,123,163, 17,121,150,147,164, 9,229, 40, 65,248,192, 72, 75,186,243, + 6,183,173,161,105, 57, 95, 46,200, 36, 52, 77,195,166, 90,113,127,211, 48, 75, 19, 42,239, 81, 1,186, 68,211,122, 71,110,210, + 56, 49,239,186,161,168, 15, 88, 91,105,134,116,180, 33,192,123, 92, 60, 91, 11, 60, 41,240,114,128,210, 40, 13, 93, 59, 92, 68, +253, 51,165,250, 87,137, 0,133,135,180,128,100, 16,225,101,201, 64,205, 35, 38,190, 37,195,247,237,186, 56,154,183,225,233,126, +232, 87,242,218,137, 72, 88, 27, 28,115,109, 56,119,158,141, 16, 20, 64, 13,172, 0, 25, 2, 33, 4,214, 18,148,144,244, 2,216, + 63,228,191,254,251, 63,224,239,255,206, 55,248,222,107,111,240,231,103, 27, 66,219,242,226,229,171, 92,158, 95,160,245, 13,139, +135, 71, 67, 92,236,128,173,125,178,143,215, 67, 13,215, 95,174,229,254, 23, 59,117, 63, 28,236,190,244,241,246,241, 25,223,120, +233, 5,202,113,198,122, 93,211,213, 45,213,102,205,106,177, 6, 33,169,155,158,170,119, 88, 11,163,210,196,236,100,163, 49,198, + 32,181,198, 72,133, 8,106,176,133,121, 26,231, 88,183,150, 77,107,169,234,158,186,141, 2,146,174,181,209, 74,102, 61, 42,149, +184, 62, 16,108, 76, 24, 83, 82, 81,164, 9,227, 34, 97,148, 27, 94,122,245, 6,219,163, 13,125,223,113,107,121,142,237, 29,199, +203, 45, 15,183, 21, 82, 10, 30, 85, 13,253,186, 97,200,187, 4, 35, 72, 15,114,174, 29, 78,152, 21,138, 67,142, 0, 0, 32, 0, + 73, 68, 65, 84, 31,150,236, 79, 11,140,132,157, 60,231,165,157, 67,190,123,237, 37, 70,249,132, 44,215, 92,156, 23, 4,225, 81, + 33, 80,119,150,213,182,167,243, 30, 45, 96,150, 27, 46, 79, 51,118,139,132, 84,203, 33, 69, 44,161, 40, 19,150, 77,199,213,231, + 15, 57, 62,223,242,240,223,221,225,214,159,191,207, 31,254,240,207,249,231,255,247, 95,241, 71,255,211, 79,121,255,147, 47,248, +232,100, 65,187, 61,162, 93, 45,248,235, 31,255,140, 31,253,228, 61,118, 95,121,147, 99,165, 88,164,154,147, 91, 71,124,240,255, +252, 25,205,186,230,209,221, 71,144,100,236, 94,156,177,127, 80,240,199,143,106, 92, 22, 35, 84,123,239, 49,206,161,246,103,232, +193, 50,179, 62,171,249, 81,117,151,160, 20,173,209,124,251,210,132,215,111,188,194,119,222,250, 58,231,219, 13,255,195, 95,188, +141,223,223, 33,228, 57, 50, 40, 46, 22, 41,120, 71,237, 2, 5,130, 7,231,167,156,110, 27, 84,232,105,186, 22, 25, 28,216,150, + 18,205,101, 9,163,234,140,251,206,242,184,119,220, 10,146, 92,198,110,233, 85, 35,249,123, 7,151, 25,151, 51, 72,115,102,211, + 25,203,196,224,141,198,148, 35,188,210,140,178, 20,227, 35,192, 72, 43,208, 72,166, 74,115,150, 20,136,114,132,175, 55,241,144, +140, 32,108,155, 56,114, 14, 1,130,138, 17,201, 62,110,192, 93,112,228,211, 17,137, 18, 92, 20,129,185, 4,223,119,124,246,197, + 99,254,223,247, 79,152, 20, 10, 45, 5,255,237,215,223,224, 13, 2, 47,159, 31,113,124,112,133,255,238,197, 75,124,239,219, 47, +241, 82, 81,242,197,217,154, 59, 71,199,248,229, 54,202, 78,132,199,247,207,220, 33, 79,174,254, 39, 52, 55,105, 61,109,237, 57, +176,142, 73,170, 56, 72, 19, 46, 5,197,190,148,209,175, 46, 5,161,243, 92, 78, 13,157,130, 44, 77, 17,157,229,139, 44, 39,232, + 12, 89, 85,216,222, 34,108,204, 24, 16,105,130, 20, 32, 50,131,108,101,180,146, 89,144, 34,196,174,245, 73,183, 62, 20,115, 49, + 88, 85,159,250,188,127,137,215, 30,158, 82,255, 52, 46,254,111, 56, 9,159, 52,150,159,214, 53,183,132,228, 76, 72,154, 68, 18, +164,160,149,154, 38, 73,249,184,169, 57,114,158, 50, 77,201, 16,104,231, 49,193,227,250,150,190,175,208, 4,198, 58,229, 96,122, +137,164,152,147, 77, 14,209,217,132, 68, 23,104, 85, 48, 74, 83,114, 25,176,137, 36, 45, 18,250,178,164, 10, 10,100,202,116,154, +209,146, 96,138, 34, 90,152,103, 83, 52,154,201,206, 4, 47, 18,246,230, 99, 58,157,163, 70,211,136,253, 72,199, 8, 51, 4,129, + 25,160,200, 65,103,132, 44, 33,148, 35,194,116, 70,152,141, 9, 23, 15,152,204, 39,136, 34, 71,229, 41,110, 84,210,102, 57, 86, +107,250,124, 68, 95,148,116, 73, 66,159, 23,244, 73, 14, 38,101, 60,158, 49,205,243,120,200, 28,141, 24,229, 83,110,236,204,121, +181,220, 99, 87,103, 28,100, 5, 19,101,200, 84,130, 0,234, 16,187,231,181, 12,220,105,162,246, 34, 12,247, 98, 37, 5,116,150, + 61,169,227, 33,223,122,174, 26,216,241,158,107,153, 38, 21,160,137,133, 93, 6,168,137, 49,212, 50, 8, 30,247,150,142,168, 41, + 90,224,185,211,247,180, 94, 34,117, 64, 50,116,233,198,240, 15,166, 25,223,223, 25,147, 37,154, 75,101,198, 52,207, 9, 2, 70, +163, 29,116, 86, 98,178, 49, 82, 39,236, 77,102,191, 97, 81, 31,144,127,136, 4,150, 21,199,169,225,185,221, 61,188, 15,164, 73, +142, 36,112,190,222,146,153, 4, 31, 60, 18,168,187,134,109,215,224, 67, 96,209,212, 32, 60,174,247,244, 77, 71, 63,228,210, 86, + 3,102,212, 9,197,245,221, 41, 69,153,162,131,163,175, 26, 66,223, 96,143, 55,172,207,207, 89, 86, 43, 74, 36,167,182, 5,219, + 80, 87, 53,181, 13,212, 66,224,172, 69, 26,131, 71,160, 6, 81, 90,245, 36,146,117,181, 29, 80,170, 79,246,250, 14, 76, 10,179, +114,200,251, 13,177,224, 38,146,194, 24,250, 16, 67, 85,250,224,227,223, 75,224,100,245, 12, 55,251,203,133,216,251, 33,212, 37, +141,144,246,100,240,185,167,195,225,225,201, 76,150, 65, 60,183,173,227,191, 7,251,213, 48, 26, 33, 56, 7, 14,181, 98,229, 29, + 86, 4, 10,169, 88, 56, 79, 39, 5, 91,215,145, 41, 67, 67,192,136,136,120,172, 58, 5, 23,198,252,147,127,240, 59,140,178,130, +113,105, 56, 59,237, 41,199, 37,191,251,189,239,243,234, 75,135,140,165,226,157, 15, 62,136, 35,120,223, 15, 62,209, 65, 45,111, +109,124,156,246, 75,190, 20, 63, 16,246,212, 19,225,160,248, 21,199,169,187,255,152,227, 80,243,252,181,171,140,198, 25,213,182, +102,189, 58,199, 89,203,226,232,152,114, 50, 99,113,180,164,235, 3,143,207, 43,156, 84,209,154, 38,163,154,188,183,241,162,109, +122, 71,213, 89,186,222, 71,208,140,136,129, 42,125, 23,255, 44, 85, 28,223, 11, 41, 81, 66, 70, 76,112, 18,133,132,206,121,172, + 8,120, 27, 56, 59,175, 25, 21,154,114, 52,230,230,157,187,124,124,255, 12, 43, 61, 87,230, 19,206,207,106, 42,233,217, 43, 12, + 86, 43,156, 13,144,107,152,100, 76,203,148,121,106,216, 73,115, 70,105, 78,153,102,104, 17, 29, 24,227,209,140, 36, 41, 88,157, + 55,236, 29,230, 20,169,166,178,142,214, 5,214,141,197, 57, 75, 38, 4,243,194, 48,203, 52,153, 86,116,214,209,244, 30,169, 37, +222, 7,150,171,138,147,187,231, 60,120,255, 38, 15, 63,253,148,197,250, 12,156,229,235,175,191,194,254,171, 25,159,157, 44,162, +135, 54, 83, 60,191, 59, 6,224,222,201,150, 63,253,232, 35,178,215,191,142, 74, 21,221,182,225,237,255,237, 15,120,240,224, 14, + 15,190,184,199,163,163,199,236, 95,185,140, 29,101,248, 47,238,242,127,252,203, 31,178, 56,110,233,122,168,148, 98,161, 5,251, + 72,234,222, 33, 47, 77,248,247,127,240, 61,254,189,255,248,183,121,235,173,111,240,131,139, 87,185,171, 39, 28,125,248,115,254, +244,131,207, 57,214,138,214, 7,130, 82,212, 68,160,206,197, 44, 33, 39,176, 94,173, 88,172, 23,116,237, 26,108,135, 20, 80,109, +150,140,178, 17,179,201, 46, 23,139, 25, 55, 38,123, 60,167, 28,157, 80,156,214, 53,243,209,132, 81, 94,240, 79,118,247,121,225, +240, 2,153, 73,176,105,129, 79, 18, 86, 89, 70, 87,148, 88, 99, 40,115, 51, 76,112, 12, 99, 35, 41,133, 36, 81,158, 44, 81, 36, +102, 12,197,136,229,100, 10,213, 34, 30,146,141,132,109, 3, 73, 70,112,245,112,232,126, 6,198, 58,239, 90,238, 8,131, 21,146, +227,147, 37, 71, 39, 43,254,232,139, 5,127,178,108,216,109, 45, 59, 66,208, 28,157, 48,109,107, 46, 4,201,155,205,130,242,120, +193,230,243, 71,252,228,189,119,121,240,248, 46,155,198,178,233, 33,116,158,176,117,132, 85,207, 19,127,169,208,209,154, 37,123, +141, 68, 32,203,146,209,225, 14,106, 54, 98,111, 58, 34,241,129,203, 4,114, 23,200,165, 34, 13,158, 84, 27,122,239, 9, 82,146, + 88, 79,146, 38,140,172,231,174,245,200,209, 8, 89, 53,113, 52,223,244,168, 68, 33,147, 4, 25, 52, 50, 85,200, 36, 71,160,227, + 40, 90, 12,120, 16,231,159, 65, 93,134,110, 93,252,210, 61,233, 87,139,186,140,137,103, 90,225,180,196, 5,112,194,115,190,108, +248,162, 15, 28, 97,217,104,184,217, 87, 28,185,142, 19,109,232,156,165,212,134,194, 58,186,182,163,111, 43,182, 93,141,243,113, + 20,126,169,152, 80,230,115,178,201, 46, 58,203, 80, 38, 31,250, 18,133, 80, 26,215,111,163,115, 33, 85,204,138,148,157,210, 48, +205, 52,179, 34,101,119,158,179,208,134, 23,230, 37,123,153,226,187,251, 51, 94,204, 50,190,115, 56,231, 98, 89,240,214,165, 61, + 94,223, 41,121, 99,127,135, 11,147,168,103, 57,151, 9, 54,207, 98,198,249,116, 68, 24,151, 48, 41, 32, 47, 9,179, 17,255,249, +225, 62, 95, 27, 79,248,209,239,255, 27, 92,170,249,135, 47,191,202,231,206, 82, 37, 25, 78, 42,172, 49,184,124,140, 72,114,118, + 76,202, 44, 43,153,167, 25,227,180,160,212, 9,121,154,147,231,134,125,157,113, 61, 45,153, 61,109, 84, 29,141,119,148, 58, 69, + 73,201, 73, 87, 83, 7, 71, 23,224,220,197, 41, 93,112, 81, 37,176, 47, 5, 91,231,226,161,211,122,174,164,146,151,181,100,162, + 53, 77,231, 80, 18,180, 16,180,222, 51, 23,113, 81,124,106,123,142,156,167, 7,206,122,135,211,134, 5,129,166,143,150, 64, 53, + 76, 51,190, 63, 75,121, 37, 79,184,150,231,100, 90, 49, 75, 51,210,164, 32,207, 71,244, 82, 67, 26, 83, 67, 71,249,136,206,100, +191, 97, 81, 79, 74,200, 39, 48, 25, 67, 94,224,140,102,213,117,148, 73,194,209,118, 27,177,126, 74,209,217, 14, 27, 58, 92,112, + 4, 33, 88,247, 91,206,170,138, 85,223,209,109,122, 88, 14,163,231,222, 15, 10, 87, 79,221,118, 60,222, 86,164,210, 97,108,199, +227, 71,143, 25,245, 91,206,110,222,226,248,225, 61,170,237,134,164,107,233, 19, 77,127,126, 66,221,247,116, 85,135, 48,138,179, +222,211, 43,205,198, 7,186, 1,212,223, 9, 73,174,117, 4,104, 56,192,110, 33,203, 99,202, 28, 33,142,170,181,138,167,190, 52, +254,176,140, 16, 52, 46, 48, 49,154, 78, 4,114, 33, 99,252,251,166,141, 29, 93, 87, 71, 77,192,175, 43,236,195, 69, 77,145, 70, + 98, 93,211, 61,227,220, 19, 24,178, 4, 97, 84,192,114, 29, 59,245,175,234,252, 7,117,206,227, 16,168,165,100, 44, 20,139, 39, +240,194, 16,152,232,132, 51,107, 73,129,199,192,152,192,170, 11,160, 53,175,223,184,194,206,180,228,147, 91, 11,126,252,225,135, +124,253,133, 55,249,238,215, 46, 51,202, 51, 28, 29,127,246,215, 31,196,239,221, 91,144,238, 89,138,222,151, 11,186,181,177,160, +155, 47, 57, 29,158, 78, 50, 6,203,158, 29, 14, 76,244, 44, 62,189,203, 66, 90, 94,126,233,121,102,187, 99, 64, 99,109, 79,221, +108,184,119,255, 30, 88,135,109, 61,203,229,150,243, 85,195,233,121,195,218,122,172,141,190, 89,231,163,195,194,135,128,145,177, + 8, 10,169,201,180,196,203,216,157, 40, 35, 16, 66, 34,165, 36,205, 53,133,137,130,196,182,237,233,157,195, 59,135,240,129, 64, + 32, 47, 82,138, 60,165,171, 60,125,191, 98, 99, 61, 7, 69,201,238, 36, 99, 55,207,152,100, 5,175,236, 31,242,218,213, 43,188, +121,237, 26,175, 93,188,204, 97, 57, 66, 4, 79,166, 19, 38,217,148,131,209, 62,179,241, 30, 69, 54,102,182, 51, 39, 73, 36,105, +154,113,176, 59, 97,111,162, 88,111, 45, 39,171,150,186,235,169, 91, 75,221, 91,172,139, 0,139,101,221,115, 92,117, 3, 9,174, +103,185,109,208, 82,112,113, 86,240,209,199,183,233,250,142, 16, 4, 35,109,184,183, 60, 33, 79, 51, 14, 14, 71, 60,114, 29,155, + 91, 43, 62,187,189,224,161,119,120, 35,232,110,159,209,126,251,155, 92, 26,101,236, 28,140, 56,249,236, 19,148,239, 57,216, 27, + 65, 87,113,231,193, 49,207,141,103,188, 46, 60,147, 44,229, 95,253,243, 31,242,243,191,124,155,183, 63,250, 16,125, 86, 99,179, + 25,166,245,140,171,134, 31,254,233, 59,236, 23,134,145,150, 20,179, 17,238,227, 79,241, 67,222, 64,109, 3,199,206,226, 69, 64, +170, 56,169, 58,175, 26, 90, 91,113,220,108, 57,107, 43,130,119,232, 32,144,193, 33,138, 49,105,146,241,234,124,143,121, 81, 34, + 19, 67, 62,158,115, 56, 46,185, 50,157,242, 87, 31,188,199,215, 14, 46, 51, 25,229, 92, 48, 57,107,161,168, 68, 32, 76,198, 52, +243, 49,173, 16, 84, 38, 35,205, 13, 65, 41, 14,159, 16, 32, 59, 75,131, 64,107,195, 74, 40,242,217,156,231,167,187,124, 97, 74, +168,150,132, 60,137,211,182,103,180,249,248, 62,214,106, 0,154, 88,108, 23,184,237, 61, 39,157,227,167, 85,199, 23,210,115, 41, + 79,184,150,104,174,171,136,236,157, 27,141, 14,150,169,131,169,183,204, 17,220,208, 57, 47,107,133, 10,150,119,122, 31,133, 84, +101, 70,152,150,188,240,252, 14,103, 58,143,108,141, 81,142, 24,101,177, 32,239,207,201,247,118,184,182,127,153,217,236,128,249, +116,159, 92,107, 70,193,146,185,192, 54, 56,140,146, 36, 73, 74, 34, 6,199,128,128,233,222,140,217,188,228, 40,205, 81, 23,247, +163,202,185,239, 81,235, 10, 57, 88, 48,149, 78, 80,169, 70,149, 41, 50,201, 72, 38, 99,176, 49, 66, 86,120,135,124, 50,138, 15, + 1,225, 37,226, 75,147,181,240, 43,133, 93,226,181,138, 68,104,173,113, 42, 90,245,172,244,184,174,230,188,246,124,190,173,169, +145,156, 40, 88,245, 14,163, 18,232, 43,166, 72, 82,235, 88, 85, 11,100,176, 84,206,145, 4,199,133,108, 74, 49,222,197, 36, 57, +114,176, 31,203,201, 24,130, 36,244, 29, 65, 6, 26,122, 58,165,176, 18,210, 36,193, 72, 73,145, 37, 36, 70,147,103,134,151,139, +140,239,141, 74, 94,204, 83,158,159, 76, 25, 39, 57,175, 76,103, 76, 76,193,149,162,228, 32,205,153, 37, 9, 23, 70, 57, 23,114, + 77,154,105,202, 82, 51,202,114,108,150,209, 25, 67, 57, 46,248,135,243, 25,223,158, 28,242,252,104,135, 71,191,243, 22,255,205, +243, 47,243, 63,102, 19,190, 31,122,110, 11, 73,167, 13, 33,201, 73,116,202, 78,146, 48,214,154, 50, 81,200, 32, 73,132, 32, 49, + 5, 82, 72,118, 76,202,142, 50,236, 73,197, 60, 43,105,251, 14,109, 18, 76,136,218,171, 46, 56,106,239,121,228, 90,142,154,158, + 42, 68, 59, 93,240,158,113, 8,180, 34,218, 16, 19, 1, 29,130, 66, 6, 14, 6,235,116, 98, 20, 59, 34,174, 24, 82, 25, 27,151, +202, 7, 62,235, 45, 39,222,179,176,150, 45,130,181,119,116, 38,234,127,100, 26,119,252,215,199,138,151,115,205,243,121,138, 20, +130, 81,154,160,164, 38, 49, 41, 38, 77,192, 36,104, 19,139,122, 35, 98,224,213,223, 94,212,181,142,214,180,217,124, 16, 97, 9, + 16,138,106,213,112,127,185,166,182,209, 7,152, 36,154,117, 91,177,109,107,182,237,154,117,191,102,177,173, 56,174, 42,186,227, + 13,156,157,199, 98, 94, 85, 81,141, 93,213,136,237, 54,170, 89,235,134,187, 15, 79,120,239,227,219,124,120,255, 17,243,163, 99, +214,143,207,201, 60,200,161,227, 95, 29, 47,208,206, 81,183, 61, 8,168, 2, 60,106, 44, 91, 17,208, 8, 66,162,249, 79,190,241, + 61,238,159, 60,196,250,128,147,192,182,130,218, 66, 91, 71, 65,156, 28, 40,115, 58, 5, 99, 40,202,148,174,235,201,211, 20, 45, +161,114,118,160,155,129,237,226,206,132,109, 29, 11,221,223, 52,134, 71,193,116, 52,236,238,135, 81,126,154, 12,150, 64, 61, 20, + 66, 11, 65, 32,148, 66, 84, 27, 68,111, 17, 95, 65, 92,122, 34,116,235,172, 98,173, 2, 90, 68, 14,242,121, 8,232, 16, 34,164, + 14, 34, 54, 83, 39,116,218,209,183, 29,231,139, 19,126,244,233, 61,254,221,237,207,185,125,255, 24,161, 36,207,221,184,206,106, +185,225,230,199, 15,120,239,131, 79,160,170, 65,182,241,249,200, 47, 89,225,244, 19, 33,202, 64,201, 99,176,121,241, 37, 74,223, +147, 36, 58, 63,168, 86, 92,124,218, 39,159,220, 65,151, 25,207,189,248, 28, 89,145, 34,101, 66, 94,142, 25,143,198, 24,173, 57, + 95,157,147,153,148,221,249, 4, 43, 3,182,237, 89,174, 42, 64,144,164, 26, 57,236,168,227,168, 73,160,181,192, 40, 73,145,106, + 18, 19,137,116,153, 49, 24, 19,109,113, 10,129, 35,142, 44,181,150, 24, 36,163,113, 74,150, 27,250,214,211,244,129,157,249,156, + 36, 24,246, 77,201, 40,201,216, 29,237,112,101,231, 50,251,179, 3, 82, 41,201,211,130,188, 40,200,211, 17,163, 98, 66,130, 97, + 50,218,225,240,224, 34, 87,175, 95,226,107,111,220,224,107, 47, 95,225,205, 23, 15,249,250, 75, 23,153,239, 77, 16,202, 48,201, + 60, 77,107, 99,247, 69,244,172, 55, 85, 79,135,199, 9, 65,229, 28,221, 32,124,169,186,136,225, 61,152, 22,188,114,121,206,195, +227, 45,119, 31, 61,102,103,186, 67, 49, 26,209,185,142,207,142,143,104,123,203, 56, 55,164,179,148,116, 47, 35,201, 36,223,184, +178,207,115,215,230,220,122,251,109,158,251,238,183, 40,115, 77, 62,158,115,247,157,247,200,140, 36,207, 82,150,103, 43,116, 83, +225,102,187, 92,254,254,107,140,115,205,135,239,223,102,188,109, 41, 55,231,188,240,234,235, 28, 26,193, 97,154,240,205,221, 61, +206, 22, 13,237,195,115,206,190,120, 72, 21, 28,202, 5,250,222, 18, 46, 93,229, 19, 39, 8,213,150,107, 73,202, 89,189, 65,119, + 53,139,106,195,162,238, 57,204, 52,243,124,196, 56, 47,240,166,160,204, 10,174,150, 35,174,152,148, 34,207, 88,151, 41, 91,239, + 41,138, 18, 35, 53, 95,191,246, 28, 82,193,121, 8,164,147, 9, 15,157,195,141, 74,150,169,230,204,104,164,150, 56,161,232,144, +236, 22, 6,225, 97, 44, 5, 53, 49,102,119,225, 61,169, 76,121,253, 96,204,127,121,117,204,126, 49,229,199,157, 64,108, 22,113, +181,149,165,241,194,211, 89,196, 52, 59, 16,122, 0, 48,185, 14,183,109, 57, 9,158,115,225,153, 11,201,141, 76,113, 45, 53, 28, + 26, 69,153,106,180, 81,140,147, 4, 58,203,193,100,196,100,186, 79,158, 23,228, 74,147, 25,205, 50,133, 59,121,130, 43, 82, 94, +187, 52, 38,207, 12,201,200,176,108, 3,210,129,148, 9, 98, 90,240,143, 47,206,248,230,206, 46, 59,211,125, 70,229,136,185, 78, + 64,101,236,248,232,165,158,100, 25,173,139, 97, 71, 94, 66,162, 20,179, 23, 94, 35,187,244, 18,187, 47,190,201,213,107, 55,184, +180,179,207,165,253, 67,100,230,216, 10,129, 92,108, 80,117,143,202, 13, 42, 77, 81,227,130, 23, 15,246,249,123, 55, 46,243,234, +193,152,135, 94, 96,183,219,193,227, 29, 6,133,248, 87, 11, 93,159, 29,125,124,100, 60, 40,249,180,160, 63,241,222, 59, 15,206, +117,184,117,199,106,189,230,180,182, 28, 47,215,156,250,154,188,173,144,109, 5, 93,133,113, 29,171,170,198,225, 24, 11,201,229, +209, 46, 70, 36, 36, 73,142, 42, 75, 40,226, 90,209, 91, 75,111, 59, 58,223, 83, 7,203, 90,120,250, 97,122, 58,206, 18,114,163, +104,133,228,235,101,201, 85,165,249,198,120,202, 72, 38, 76,147,132,189,108, 66, 80,154,195,108, 76,105, 10, 70,218,112, 49, 31, + 35,131,103, 47, 43, 41, 18,205,200, 24,178, 84, 51, 79,227, 8,250,141,188,224,149,209, 14, 55,202, 57, 66, 74,190, 99,226,234, +243, 37,223,225, 85,164,105, 30,251,152,126, 55, 1, 74,157, 70,235,157,212, 24,161,208, 42, 1, 17,200,211, 20, 27,122, 46,153, + 52,254, 28,131,167, 24,210, 73, 91,231, 72,141,102,221,183, 44,250,150, 19, 34, 6,246, 92,128,117, 14,233, 3,162,181,140,156, +163, 31, 68,205,137, 8,172, 16,236, 9,207,133, 68,115,160, 20,189,119, 44,109, 28,213,111, 61, 28,133,192,167,189,163, 3, 90, + 1, 94, 10, 86, 74,178,237, 37,157,209, 8,165,216, 77, 52,215,114,195,235,121, 74,130,192, 11,193, 78,154,129,214,148, 89, 74, +167, 12,163,108, 66, 67,192, 10, 65,171, 20, 45,242,111, 43,234, 26,242, 18,230,243, 65,232, 37, 98, 39,234,135, 96, 22,231,105, +125,207,178,179,100, 26,186,224,144, 74,177,172, 42,142,235,154,199,143,150,184,199, 3,198,117,187,133,122, 27, 59,102,219,197, + 95,251, 54, 50,144,235, 77, 76,105,170, 54,132,186,102,234, 36, 47, 29,236,176,236, 59,164,209,116, 3, 19,183,147, 18,229, 60, +107, 33,216, 75, 18,238,160, 56,173,106,132,144, 96, 61,159, 31, 61,196, 5, 31,187,246,174,141, 20, 55,250, 72,192, 99,232, 66, +251,161,163, 30,231,244,141,101, 84,150,108,218, 22, 51,248, 64,219,206, 34,108,244, 75,211,181,195,213,223,199,199,236,134,240, +151, 95, 46,236,154,232,209, 87,102,240,245, 63, 17,176, 13,100, 62, 37,163, 16,166,107,227,191,119, 62, 42,235,127, 73, 21,250, +180,168,135, 0,210, 83,106, 77, 39, 33, 23, 34, 54, 51, 65, 48,214,154, 62,120, 52,130, 99,239,216, 19,134, 76, 56, 30, 45, 55, + 60,120,184,102,217, 68, 15,250,241,221,251,124,186, 88,114,235,254, 57, 63,124,231,231,112,239,193,240,216,186, 65,252, 38,191, + 4,191,249, 50,227,241, 75, 93,250,147,130,254, 36,208,135,129, 91,224, 35, 24,230, 73, 0,243,237,143, 62, 37, 45,115, 94,126, +237, 69,164, 22, 84, 85,220,177, 23,163, 17,222,247, 52, 93, 77, 62,158, 34,125,236,198, 43,219,209,214, 61, 89, 97,168, 90,135, +181,129,118,128, 5,101, 70, 12,137,107,146,204, 68,174,123,162,163,167, 61, 75, 35, 36,168, 72, 12,137,145, 20,153, 97, 50, 74, +217,153,229,236,143,114,116,102, 72, 83,205,238,180,100, 50,157,144,148, 99,164, 77, 41,179, 73, 60,104,204, 38,104,149, 82,148, + 37,229,100,130,239, 28,163, 73,201,165, 43,151,120,225,185,171,188,244,194, 33,175, 94,155,113,125,191,228,112,148,178,172, 60, + 39,149, 37, 83,129,159,124,252, 41, 31,125,122,139, 11,135,115,186, 16,109, 74, 1,232,156,197, 89,199,170,238, 56, 91,214, 44, + 87, 53,155,117,195,114, 81,177,218, 52,224, 3, 51,173, 57, 93,183,172,214, 13,203,245, 25,206, 58,164,210,104, 17,184,119,182, +161,183,158,113,110,112,206,243,112,213,209,245, 45,207, 31, 92,224,130,134,254,249,151, 40,210,132,189, 11,115,254,206,223,125, +139,127,253, 71,127,129,198,146,164,138, 59,103, 43,108, 82, 50,187, 48,231,229,215,111,144, 9,207,189,229,130, 43,187, 5,147, +170,230,181, 23,110,160,100,244,212,103, 70,113, 84,181,244,125,141,245,129,102,179,193,246, 45,119, 31, 63,224,139,119, 63, 34, +236,205,249,189,107, 47,242,163,197, 9,250,236, 20,223, 91,174,204,199,204,243, 49,187,229, 4,159, 21,140,138,146, 81,146,112, +209, 7, 14,147,132, 10,207, 23, 65, 18,140,166,114, 1,202,156, 44, 79,163,151,118, 50, 97, 45, 5, 39,227,156, 83,239, 57,107, + 29,105,158,208, 33,216,108, 58, 92, 31,181, 19,107,101,184,231, 2, 43,157,176,242,154, 66, 27,124,219,241,143, 47,141,184,190, + 63,166,212,112,115,107,216, 14,221,210, 75,218,177, 40, 75, 84, 97, 8,153,161, 40,115,108, 63,192,150,140,140,141, 67,223, 16, +218,134,149,183, 8, 23,152, 75, 73, 39, 60, 34, 79, 40,166, 41,218, 24, 18,173, 24, 21, 69,212,120, 36, 57,141,117, 44,148,100, +101, 18,198, 38,176, 78, 52, 70, 74,178, 84,115, 94, 91, 54,181, 5, 37,249, 71, 23, 10,254,233,197, 57,191, 59,223,225,107,229, +156,153,210,156,166, 57,157, 16, 92, 8,129, 52,120,114,111, 89,119, 29,101,145,177,117,142,253,162,160, 30,205,209, 7,215,217, +185,124,133,253,113,206, 94, 86, 32,146,168, 50,223,223,217,231,242,100,204,168,148, 44, 87, 21,186,181,232, 50,198,170,254,222, +245, 23,248,173,253, 75, 76,138, 57,171,212,113,212, 6,100,211, 33, 91, 79,220,172, 63, 41,236, 79, 70,111,191,104,193,123, 86, +216, 45,222,232,167,183, 51,175, 98,172,177, 87, 34,170,253,113,132,243, 53,225,248,132,118,181,229,222,189, 5,247,206,150,152, +174, 70, 88,139,235, 58,148,247,140,145, 28,152,132, 60, 31,163,179, 18, 97, 36, 66, 39,248,182, 39,216, 46,194,110,250, 45, 15, +251, 13, 27,192, 72, 65, 47, 20,185,140,174,158, 23,178, 28, 21, 60, 95,203, 70, 84,222,179,151,143,208, 58,197,152,132, 84,103, + 72, 19, 15,241,133,206,232,125,199, 44, 25, 97, 67, 20,252,153, 36,165, 39,144,106, 69, 34, 4, 87,139, 9,215,210, 18, 7, 8, +101,112,193,161,148, 96,150,166, 44,173,101, 65,207,137,139,148,186,204, 40,100,240,104,169,209, 33,234, 94, 52, 2,149,168, 56, +169, 19, 10,239, 45,123, 58, 37,115, 49,181, 45,174, 81, 4,125,223,113,220,213, 60,234, 59,142,125,207,178,110,169,188,163,222, + 84,120,231, 72,136,233,141,115, 37, 41, 8, 44, 3, 36, 14,238,123,193,124,144,250, 87, 66, 48, 29,178, 46,238, 5,207,207, 26, +203,137,136,119,227,141,128, 70, 8, 86, 8,182, 14,102, 25, 36, 8,156,150,124,215, 40,114, 21, 72,165, 34,151, 10, 37, 97,100, + 12, 94,106, 50,157, 18,148,198, 73,195, 86, 42, 92, 16,212,206,253,109, 69,221, 67, 49,137,197, 41, 75,145,105, 74,158,153,184, +115,126,194,126,223,214,224, 61,139,147, 21,167,189,231,164,173, 88,220, 63,166, 62, 90,195,253,251, 49,106,175,105,127, 45,113, + 78,124,197, 8,122,108, 20, 78, 25,198,121,202,102,216, 73, 97, 20,161,237,177, 70, 83, 40,205,143,219, 22, 41, 29,141, 84, 52, +125, 28,127, 58, 31,227, 63,159,250,192, 87,213,160, 54, 31, 32, 51,142, 24,161,234, 93, 76, 72,155, 79,232,186, 14,169, 4, 14, +137, 36,224,196,192, 77,223,110, 99,145, 14,196, 68,165, 39,187,102,220,175, 22,117, 33,162, 32, 47, 49, 81, 5,255, 36,110,240, + 75, 4,168,104,155, 27,168,119, 74, 12,135, 26,251,171,150,143,167,248,215,104,191, 16, 66,209,136, 64, 75,160, 28,138,236,142, +138,202, 78,124,160, 35, 48, 21, 9,210, 58, 54,161, 39,172,182,209,166,101, 27, 86,189,229,168, 90,194,249, 42, 30,168,156, 69, + 72,251,139,223,199,126,169,176,243,165, 46,253, 73, 97, 87, 67, 65,127, 26, 43,203, 51, 55,192, 19,201,128,132,207,222,255,152, +253, 75, 23,185,252,220, 37,130,144,241,166, 93,109, 98,206,177,119,156, 30, 69,246,248,225,165,125,210,196, 32,165, 98,127,146, +179,173, 45,219,206, 98, 18, 29,173, 98,131,242, 88,105, 25,119,234,131, 30, 40, 51, 10, 41,100, 28, 83,132, 24, 96, 49, 42, 82, +178, 52, 33,211,138,162,212,164, 3,163,160, 72, 37, 89, 98, 40,138, 4,167, 3,206, 90,140, 82,228,217,152,209,180, 36,201, 12, + 74,105,188,179,204,103, 35, 46, 94,153,114,105,167,224,202, 44, 35, 79, 52,141,245,124,113,222,242,120,189,225,232,248, 17,111, +191,251, 14,159,223,249,152,119,111,221,230,133, 27,215,153,143, 51,188,139, 81,172, 77,211, 83, 55, 29, 77,213,179, 89, 54, 52, +155,134,237,186,162,173,163,117,241,112, 82,208,184,192, 23,199,231,204,247,247, 64, 26,206, 54, 75,214,237,134, 68, 27,146, 52, +208, 59,143, 11, 1,105, 36,153,150,172, 58,203,221,229, 25,214, 89,142, 63,187,197,139,223,120,157, 43, 70, 49,145,138,249,213, + 43,172, 62,191,137,147, 49, 69,110,181, 56,229,185,195,203,204,118, 70, 92,127,245, 6,133, 72,120,251,147,155, 76, 83,193,119, + 94,123, 61,142, 97,133,224,104,211,114,210,247,156,110, 54,252,235,144,113,195, 85, 60, 88,157,241,227,179, 83,154, 71,167,240, +224, 1,223,159,103,124,162, 10, 30, 39,154,229,135, 15,120,245,234, 30, 89, 94,146,103, 5,118,160, 96,181, 82,145, 9, 65,112, +158, 62,201,184,217,244,164,211,130,109, 27,185, 1, 73,162,152,206, 74,156, 13, 44,156,228,124,219,114,182,110,232,170,138,243, +243, 45,235, 85, 67,150, 72,232, 58, 10, 9,171,198, 67,154,210, 39, 26, 53,206, 89, 39,134,165,147,172,130,229, 18,240,251,103, +150, 59,125, 20,118,190,216,175,113,218,112, 65, 9,190, 57,155, 96,140,231,226,184,164, 44, 37,139,173, 7, 23, 16,125,253,165, +123,137,227,204,118,124,216, 86,188, 93,247,172,164, 67,105, 67,105, 34,223, 94, 5, 71,240, 61,155,174,230,147,174,226,166,132, +165,237, 81, 54,130,100,214,189,163,233,123,238,156,117, 32, 5,151, 71,134,223, 27,165,252,214,108,198, 56,203, 81,206,210,120, +203,231,213,134,190,222,162,155,138,108, 16,147,101, 66,198, 12, 4,163,217, 72, 77,153,164,152,233, 1, 7,187, 51,198, 69,206, +220, 40, 10, 41,240,214, 49, 73, 82,102,243,125,158,219,191,198,155,151, 46,243,202,254, 28,187, 62,231, 82,154,243,189,157,125, + 46,236,204,240,198,112,167, 17, 60, 76, 4, 74, 39,200, 52, 65, 56, 27,239,109,222, 35,126, 81, 20,243, 11, 35,248,167,157,123, +128,160, 36, 94, 69,175,187,215, 50, 22,125, 69,140,254,236,135,228,189,182, 3, 2, 77,215,113,123,221,177,170,107,142,234,138, + 16, 4,133, 22, 28, 74,193, 40, 27, 35,149,142, 94,116,231, 8, 93, 71,223, 84, 84,245,146,181,171, 88,248,158,115, 28, 54, 8, + 74,165,216,120,199,133, 36,103,233, 29,175,166, 37, 78,192, 78,154,227, 66,160, 76, 75,156,148, 36, 67,167, 29,144, 32, 60, 18, + 69,235, 45,141,239, 81, 82,196,164, 70,165,240, 56,180, 48, 28,100, 25, 59,186,196, 17,133,144,133,214, 52, 46,242, 12,206,187, +134, 47,250,154, 51, 27, 83, 21,147,224, 49, 62,166, 45,106, 17, 48, 2,204,144,224,102,131,167, 11,158,214,121, 18,219, 49,147, +138, 4, 73,211, 54, 88,107,121,216,108,185,217,172, 57, 13,150,133,235, 88,247,142,123,103, 43,124,219,195,166,162,109, 59,138, + 32,201,148,103, 97,195, 83,109,208, 38, 4, 30,181,158,187,210, 83,247,158,255,175,237,249,172,182, 44, 67,224,175,154,104,239, +189,221,131, 87,129,147, 14, 86, 34, 82, 64,141, 86,100, 18,180, 8,212, 34,112, 73, 73, 10, 33, 41,132, 64, 43,129, 64,146,104, +131, 73, 50,122,101, 56, 69, 80, 17,232,130,199,255, 70,234,119,229, 33,207,193, 36,140,203,156, 30, 71,110, 98,238,186,171,251, + 88,176, 23,143,225,232, 4, 78,142, 8, 15,143, 34,175,184,218,254,198,108,147, 95, 46,236,167,206,243,242,100,140,205, 20, 90, + 64, 19, 4, 88,135, 50,154,166,107, 56, 87,138, 76, 9, 30,183,158, 83, 47,162, 2, 52,132, 33, 28, 96, 80,118,111, 99,188, 94, +204, 74,183,207,226, 98,245,144, 25, 63, 60, 7,180, 38,248, 64,112, 46, 30, 8,194,128,114, 53, 67,215,237,109,204,154,175,171, +248, 90, 72,241,235, 19,215,166,243,152, 57,175, 99, 44,171,176,195,215,139, 33,226,181,233,227, 24,223,251,248,152, 93,247,213, +232,245, 39, 2, 60,192, 89, 69,103, 5, 19, 3, 99, 33, 81, 74, 81, 57,135,247,158, 14, 24, 11,112,196, 19,232,105,227,152,164, +208, 58, 23,247,248,121, 49,188,163, 29,244, 53,162,111,159,165,185, 61,117, 53,248, 97,189, 96,159,141,229,191,124, 59, 8,225, + 41,244, 98,240,202, 12,135, 27,255,139,157, 62,240,222,143,127,198,181, 23, 95,226,226,181,125,148,138,227,240,190,173, 9,193, + 19,164,167,235, 90,206, 78, 79, 89,158,173, 57, 61, 57,229,248,180,102,211, 52, 44,207, 42,130,145,212,173, 99, 85,117,228,169, +137, 36, 37, 25,187,118, 33, 32, 49,146,220, 72, 50, 99, 40, 51,131, 82,138, 44,215,228,137, 65,232,103,137,123,189, 13,120,160, +106,226,227,156,142, 50, 46, 95,156, 82, 76, 50,246,246, 51,202,169, 97,190, 83,176,183, 87, 50,219, 31,243,198,245,125, 14,167, + 25, 69,170, 56, 95, 53,188,247,197, 17,127,241,238,199,124,246,217,103, 60,184,247, 57,239,126,248, 1,239,220,185,203, 7, 71, +103,220, 91,214,204,172,231,245, 87,111,144,104,133,146,130,214, 58,234,186,139, 74,233,100, 80,231, 35, 48,153,224,187, 59, 99, +174,239, 78, 88, 54, 29,247,207,150, 28,238,205,152,204, 10,148,202, 73,188,225,209,250,148, 68, 42,186,224,176, 33, 48,207, 51, +202, 84,115, 56, 29,147,106,137, 87,130,169,239,121,225,198, 75,104, 41,105,140,164,219,159,179,253,226,140,176, 61,167,200, 34, +147,253,179,207,110,114,249,197, 23, 80,121,202,141,235,135, 76, 68,198,163,197,130, 63,249,252, 30,223,184,122, 13, 39,224, 94, +219,241,227,247,255,138,127,249,254, 71,156,187, 45,159,156, 63,230,246,241,130,243, 91,199,132,205,146,208,215,252,248,206, 61, +170,197,121,212,126, 92, 61,224,179,207,239,241,181, 43, 87,232, 16,104,147, 32,165, 70, 73, 67, 45, 37,231,193,115,146, 40,130, + 49,180, 77, 71,235, 4,181,243,148,133,142, 14,141,174,103,187, 56,161, 91,109,120,184, 94,163,172,165,173, 43, 18, 44, 73, 83, + 83, 12,139,148,121,145,144, 24, 9,121, 78, 39, 36,231,121,202,120,148,241, 96, 27,248,201, 73,205,209, 98,203, 73,103,121,113, +123,206,166,111,185,150, 25,178, 44, 99,229,122,174,103, 5,149,235,249,121, 19,248,214,229, 41, 15,151, 77,212,183, 40,255, 21, +250, 23,199,163,186,225,167,235,154, 73,237,168,154,158,181, 11,220,238, 90,254,109, 93,243,158,235,120,108, 27,250,182,165, 58, + 89,178, 17, 48, 71, 82,213, 45,137,132,177,145,228, 26,126,123,146,179, 39, 32,241,176,174,215,252,116,121,198, 95,110,215,248, +110,131,169, 43,164,237, 72, 17,204,180,194,202,152,123,208,218,158,198,164,204, 38,187,204,178,130, 50, 79, 81,157,195,244,142, +177, 73, 24, 39, 49,222,118,119, 50, 66, 39, 57,187,187,251,188,178,127,141,203, 50, 33, 23,208, 55, 29,119,234,138, 7,189,227, + 76, 72,212, 56, 71,230, 10,145,151,136, 52, 71, 8, 29, 27,135,158, 47, 37,221,127,133,120,206,251,104, 15,244,224,181,124, 6, +219, 81,224,219,246, 89,135,159, 38,241,158, 85, 78,162,226,123,119,206,114,235,216,236,206, 41, 85,180, 90,153,106, 73, 46, 20, +216, 30,231, 2,206,246,212,245,146,141,173,120,208,174,121,224,123,194,112, 24,239,173,101,100, 82, 30,246, 45, 87,179,156,218, +121,118,147, 12, 33, 4,101, 54,198,227, 24, 23, 99, 54,189,197, 38, 6,223,119, 36, 73,130,247,129, 62, 6,145,178,234, 59,156, + 20,108,156,165, 37,250,243,149, 80,132, 0, 83,157, 80, 26,141,247,144,105,195,178,169,185, 93,175,184,213,212,172,172,165,119, + 22, 33,160,243, 29,184, 30,231,122,164, 23,212,125, 77,215,182,113,109,208,117,212,237, 10,217, 55, 44,251,142,166,171, 57,233, + 27,150, 93,197,173,102,197, 99,103,121,212,110, 57,247,150,202, 5, 78,215, 91,194,106, 75,240,241, 48,153, 36,134, 32, 4,153, + 20, 20, 74,176,112, 30,235, 97, 27, 96,225, 5,183,122,207,194, 11, 30,118, 61,183, 58, 71,135,228,220, 7,122, 33,216,122, 73, + 31, 2, 4, 65, 72, 37,170,243,148, 6,218, 32, 81, 42,176, 35,227,253,246,192,104,206, 58,143,146,195, 24, 31,193, 93, 4,149, +214,108,173,195, 42,205,169,237,126,131,162, 46,135,113,241,124,142, 49, 18, 53,156, 66,170,174, 31, 84,225, 50,166,183, 53,221, + 47,118,124, 38, 25,198,209, 67,241,252, 13, 18,221,158, 22,119,163,185, 27, 20,151,138, 4,239,162,154, 93, 40,205,178,169,241, + 58, 3,231,248,211,109, 75,162, 52,219,174,123, 54,178,126, 18, 74, 51, 96, 72, 89,159, 15,227,227,225, 77, 46,205,112,189, 91, +240, 38, 78, 32, 82, 3,189, 67, 9,143, 25,242,208,131,148, 76,132,164,109, 26,216, 14, 65, 44, 97, 16,136,245, 3, 0,225, 87, +242,209,135, 56,131, 44,133, 34, 69,108,187, 24, 30,131,143,175,159, 34,230, 78, 53, 45, 34,196,132, 34,209,118,113, 63,246, 85, +175,131,247,113,220,175, 61, 16,149,171,137,144,180,222,145, 72,193, 8,141, 23,209,226,118,223, 91, 82, 33,120,209, 72,250,224, + 89, 63, 61,180, 71,127,232,244, 96,143, 23,222,120, 13,117,225, 2,219,109, 15,161,128, 55,223,226,183,127,231, 63,227,158,115, +136,211,123, 3,246, 54,137,107,132,108, 54,144,244,220,211, 20,165, 39, 12,249,120, 24,248,245,232,220,119,254,242,199,188,241, +157,111,177,115, 56,197, 24,141, 48, 17, 4,227,173,199,139, 16,223, 68,244,180,182, 37,132,192, 98,177,160, 40, 74, 50,147,210, +182, 22,147, 74,242, 68, 83,166, 6, 59, 88,251,139, 68, 33,130, 36, 77, 34, 38,209, 7,143,210, 2, 51,172, 16,210, 65, 89, 47, +164, 32,213,160,165, 36, 85,138,249, 40,225,218,126,201,238,184, 32,203, 19,202,145, 65, 75,197,254, 52, 99, 50, 74,160,235, 89, +215, 27, 30,174, 54,252,252,243, 35,126,244,206,187,124,252,241,251,252,240,131,119,249,232,209,125,126,254,248, 49, 31,221, 62, +230,252,108, 75, 95, 59, 72, 21,143,215, 75, 94,191,126,131, 75,187, 99, 18, 45,233, 7, 63,233,141,189, 17,111, 28, 76, 48,101, +138,212,146,231, 74,195,235,243, 49, 58, 4, 62,126,184,224,180,110,184,118, 48,101, 90,102, 60, 56, 62,231,202,254, 30,105, 82, + 98,148,224,218,197, 43,236,230, 35,178, 52, 33, 77, 36,243, 52, 99,150,151, 92,221,221,103, 50, 26,241,232,206,125,194,206, 5, +238,120,135,208,146, 27,223,122,137,229,199,247, 16,182,166, 76, 19,188,119,124,254,241, 45,246, 47, 94, 98,220,116,220,184,178, +199,121, 29,200,131,229,224,149,235,180,121,224,255,250,131,255,147,211,236,144,147,106,133,255,236, 1, 77,223, 81,183, 45,225, +100, 67,168,150,208,219,168,228,237, 35, 62,149,182,131, 43, 23,185,174, 52, 90, 27,180, 82,244, 2,130,183, 56, 9, 78,104,214, + 29,100,153,161,239,123, 84,179, 5, 27,120,116,182, 65,216,142,237,249, 18, 87,173,113,237, 22,221,181,156,184,158, 77, 8, 20, +125,203, 78,128,185,235, 25, 19,152,107,195,104,148,162,149, 98, 17,162, 80,236,226,200,112, 48, 47,208, 38, 69,105,201,158,131, +102,189,228,249,105,206,231,235, 45, 85, 83, 51, 78, 19, 54, 78, 18,148,224,181, 81,202,191, 93,118, 4, 45,226,248,157, 4,136, +150, 72,190,228, 51,143,133,205,242,254,166,229,253,206,178,178, 45, 15,131,231, 78,221,179,168, 58,110,159,158,243,201,249,154, + 99, 47, 73, 15,167, 28,142,115,122,231, 56,119,150, 92, 10, 50,161, 48,157,101,209, 54,252,236,228,140, 63,124,112,202, 63,123, +188,226, 81,235,223,218,122,142, 0, 0, 32, 0, 73, 68, 65, 84, 40,250,154,210, 58,250,224, 56, 52,112,142, 98, 36, 35,244,164, + 82,154,115,192,168, 17,187,147, 9,174,233,145,137,162,237, 44,157,237,153,142, 50,242, 84,147, 35,152,101, 9,210, 72,228, 40, +103, 60,223,197, 8,131,237,122,100,215,161,113,164, 66,178, 22, 10,161, 21, 34, 53,200, 81, 10,227, 2,161, 82,152,140, 96, 60, + 66,204,102, 48, 29, 62, 85, 2, 98,136, 58, 30, 92, 65,193, 71,239, 63,206,199,146,233, 6, 63,126,154, 12, 22,194, 36,162,116, + 83,141,184,122, 41, 94, 15, 55,174,210,212, 91,252,120,143,170, 93, 34,203, 9,105,187,161, 35, 32, 92,207,233,246,148,135,253, +154,155,205, 57,183,250,134, 58, 4,114,165, 56,235,123, 10,163,169, 67, 96, 71,106,110, 91,203, 11,105, 70,231, 45,123, 3, 86, + 91, 11,201,253,182, 65,100, 25,155,182, 67,165, 41,174,235,105, 67, 36,190, 45, 92, 75,175, 36, 39, 93,131, 11,130, 30, 75,227, + 44,214,119, 20, 90, 51, 18,138, 92,106,130,117,212,182,227,110,189,230,131,237,130,135,117,197,195,166, 34,177, 29,139,205, 6, +219,119,136,182, 66,186,150,163,213,130,174, 94,115, 94,109,184,249,248,152,227,205, 25,155,243, 21,141,175,121, 92,109,184,181, + 93,241,160,221,242, 97,181,226,182,183, 28,185,150,165,117,108,123, 79,223,121,172,137, 19,226, 32,227,244,163, 19,224, 19,133, +245,112,226, 35,222,213,138,161,190,200,232, 12, 32, 12, 26,181,109, 19, 67,139, 92,120,182, 10, 85, 17, 40,132,133, 30, 1, 22, +198, 38,208,183, 16, 8,236,132,168, 35, 19,193,211, 58,203, 61,239,168, 93,207,210,104, 78,125,160, 22,112,218,247, 52,184,223, +160,168, 59, 23,109, 77,121, 17,115,109,125,244, 20, 71, 16,118, 23,137,105,155,234, 23,153,230,105, 18, 85,230, 98,160,237, 60, + 21,173,254,134, 81,173,206, 17, 18,201, 35,239,201, 18, 77,145,106,238,172, 27,110, 20, 57,143,154,154,207,164, 71,120,197,137, +227, 89, 7,110,135,168, 83,231,159,112, 19,227,239,187, 38,118,221,246, 73, 94,252, 80,241,236, 96, 61,211, 42,142,124,134,238, + 2, 37, 25, 11,201,170,237, 73,122, 27,215,198, 77, 19,199,248, 16,159,167,245, 95,253, 58, 57, 96, 92,198, 40, 65, 99,158, 61, +134, 68, 33,150,213,179, 9, 65,219,198,215,198, 61, 27,193,127,101, 97,103,232,216, 77, 44, 84, 78,122,118,134, 28,225, 6,203, + 4, 73, 47, 34,125,110, 46, 37, 39,206, 81, 15, 63,124,242, 98,112, 43,104,190,121,245, 57, 94,190,112,157,111,191,246, 53, 66, + 6, 15,215,129,255,234,119,255, 35,254,139,255,224, 5,222,250,230,215,121, 72,224,248,163,219,209, 37,144, 20, 17,154, 19, 52, + 40, 59,164,222,133,103,241,181,246,215, 20,244, 98, 20, 41,117,192, 95,255,155,191,224,205,183,190,199,222,254,152, 36, 75,201, +199, 17, 29, 60,158,206, 41,166, 35,242,162,164, 44,198,164, 69,134, 78, 52,245,118,201, 98,177,224,236,108,129, 16,154,245,214, + 97,117, 20,157, 44,219, 62, 2, 54,132,136,161, 6, 66, 80,217,104,119, 19, 16,177,172, 79, 70,139, 2, 50, 25,119,241,137,138, +113,168,121, 98, 8, 90, 83, 26, 67,145,166,236, 76,114,114,105,216, 52,150, 85, 93,211,214,150,109,219,113,126,178,230,241,163, + 71,124,248,240, 17,119,238,158, 83,173, 27, 90, 27, 96,107, 33, 85, 20,251, 25, 47,237, 77,152, 22, 6,187,172,217, 59,220, 35, + 85,154,210, 36, 92,158,229,188,185, 63,229,202,238,136,157, 44,193,139,192,170,141,252,231, 63,187,121,159,159,222,250, 28,215, + 89, 46, 30,238,177,169, 90, 30,159, 46, 33, 75,217,187,176,135, 16, 9,194,121, 52, 10,135,136,202,230,196, 48,206, 11,102,211, + 29,116, 94, 98,130,103,251,197,103,220,201,118, 41, 52, 72,173,217,236,236,113,252,232, 4,217, 86,100, 74,147, 39,154,234,241, +130, 23,111, 92,198,143, 75, 70,215, 15,185, 56,155,243,220,133, 9,255,243,255,250,191,243,216,106,110, 62,188,135,127,239,179, +216, 97,244, 3, 40, 41,209, 48,140, 94,201,146,120,205,118, 33,178,240, 23, 43, 62, 29,101,252,252,236,148,185,140,176,155,182, + 9, 72, 36,219,222,227,189,163, 58, 95, 83,120,135,105, 26, 54,213,130,166,233,121,176, 92,243,117,111,249,142,250,255,185,123, +179, 88, 79,211,252,190,235,243,108,239,246,223,207, 82,167,214,174,234,165,122,186,123,118,207, 52,198,177,227, 69, 38,118, 98, + 71,193,114, 34, 43, 66, 17, 4, 9, 41, 8, 36,110,184,135, 11, 64,202, 69, 16, 8, 16, 8, 4,145,130,130,132, 4,138, 9,177, + 49,182,135,140,199,158,173,103,198, 61, 61,189,119, 85, 87, 87, 87,215,114,234,236,255,253,221,158,133,139,231, 61,117,170,151, +217,130,114, 97,254,210, 95, 71,213,234,243,255,191,231,125,158,247,249,109,223,197,176,221,172,249, 95, 95,125,135,105,162,152, +183, 53,173, 15,156,107, 23,236, 8,120, 6,216,202,114,130,137,243,113,169, 20,189,194,240, 92, 63,163,144, 48,201, 20,152,132, + 69,229, 24, 38, 57,199,171,154, 13, 45, 24, 38, 18,231, 26,188, 8,224, 21, 90, 75, 46,171,192, 93, 27, 58,133,200, 64,168, 98, +135, 41, 88,255,177,118,116,144,158,202,183,220,169, 43,110,156, 44,120,255, 96,197,157,195, 25, 15,103, 51, 78, 86, 11, 14,147, +148,187,189, 28,231, 5,223,159,215, 44,124,212, 42,210, 26, 94, 94, 52,124,103, 85,243,207,239, 30,243,206, 73, 13, 58, 26,207, + 12, 7, 25, 57,130, 84, 43,246,130,194, 39, 9, 7,193, 51,147,154, 67,169,144, 82, 83,122,199, 80, 37, 4, 99,152,151, 53,199, +182,197,118, 92,231, 84, 70,153,217, 44,209,228,157,219,159,151,130,180,200,217,233, 13,120, 34, 31,115, 25, 67, 17, 2, 9,146, +125,239, 58, 49,154, 72, 17, 37,213, 29, 86,168,207,197,115, 19,126,229,210, 57,126,245,137,203, 60,113,174,207, 29,169,105,181, + 1, 17, 25, 7, 4, 79,176, 54, 86,153,222, 71,113,152,212,196,162,103,178, 1, 27, 35,206,237,108,178,218,222,138,103,231, 96, +192, 24,139,239,111,208,184, 10,219,223,224,126, 61,227,158, 73,121,111,190,207, 93,225,184, 85,206,120,208,214,188,189, 94, 16, +108,205, 72, 41,246,109,205,213, 52,227,196, 58, 82, 33,216,199,243,108, 90,240, 70, 83,115, 53,201, 57,112, 22, 33, 4,239,218, +150,190, 73,249, 65, 85, 34,180,228,164,169,104,164,162,242, 45, 75,160, 68,112,220,148, 44,189,167,148,138,149,107,105, 90,203, +220,182,164, 66,162,130,227,214,226,132, 58,180,220, 94,207,184,177,156,242,160,109, 56,110, 43,234,170,225,100,182,162, 89,174, + 88,175, 74,102,211, 5,135,211, 25,139,195, 37, 71,251,199,204,142,166, 52,135, 7,212,251, 83, 22, 71, 83,118,247,167,220,245, +154, 70,171, 24, 36,149,102,213,182,148, 77, 32, 72, 73, 89, 91, 86,222,178,180,254,145, 57,149,232,101,120, 33,105, 90, 79,109, + 36,161,245, 56, 29,133,130, 30,157,155, 42,137,138,108, 74, 64, 17,129,154,103, 50,129,157, 69,169,232, 92,234,188,165, 9,158, + 66,195,134,130, 99,231,232, 35,152,150, 13, 43,111,249,147, 69,133,177,142, 3, 36,139,208,130,144,204,125, 4,138,214,136,159, +144,210,230, 92,156,201,230, 5, 33,216, 24, 60,155, 58,182, 60,151,107, 88, 47, 62, 28,176, 83,211, 9,183,116,182, 61,167, 22, +166, 63,133,255,122, 0,146, 34,103, 90, 55,184, 32, 73,240,124,253,112, 69, 98, 4,109,235,216,175,125, 87, 61,119,124,115,173, + 98,183, 32, 87,176,174, 35, 31,220,159,122,134,119,215,108, 84,231, 59,222,137,195,184, 22, 76,246,200, 65, 45,116, 66,179,141, +173, 9,222,227, 84,128,217,178,163,165,117, 98, 54,237,143, 80,151, 75,101,228,242,107, 29,221,136,124,180,116, 21, 77,211,113, +216, 29,212, 54,154,222,167, 18, 33, 76, 76, 58, 78,173,246,126,152,240, 79,231,143,254,172, 78, 89,227,200,145, 44,136,129, 77, + 7, 40,164,228,158,181, 92,209,154, 61,101,104,179, 33,161, 95,116, 9,129,224,194,198,132,107,151,159,140,200,209,124,192, 43, +187, 31,240,111,252,234,231,249,212,149, 9,227, 66,179,191, 47,120,253,165,239,117,237,247, 78,156,199,119,162, 61,117,123,214, +129,249,104, 64, 47,178,120,255,174, 63, 15,131, 49,108, 92,128,227, 35,192,243,237,175,252, 41,159,251, 75, 63,203,120, 84,224, +136,244,143,114,189, 98,117, 60,195,121, 71,219, 52, 81,224,195, 89,234,186,162, 63, 26,146,164, 9,179,147, 25, 7, 7,187,104, +211, 35, 0, 59,147, 30,163, 92,227, 36,156,148, 13,166,211, 87, 87, 2,124,136, 92,119, 33, 5,153,142, 85,158,150, 26, 41, 85, +244,146, 14, 2,143, 68, 40, 25, 15,203, 68, 70,189,248,202,177,110,106,172,107, 81, 26,166,139,134,245,170,230,251,183,222,224, +157,189,121,228,154, 42, 21,147,209, 76, 49,218,200,184,216, 47,216,232,103,108,247,251,212,190,197,137, 12, 47,213, 35,145,190, + 69, 21,165,108,119, 79, 86,188,124,251, 33,239,221,127,200,205, 7,123,220,216,123,128,117,142, 98, 48,100,114,126,147,219,247, +246, 89,206, 23,148,229, 42,186,212,245, 50,174, 93,187,196,249,139, 27,244,123, 3,180,202,176,173, 37,237, 15, 41,155, 53,182, +110, 16, 90,145, 21, 5,217,221, 91,204, 70, 91,140,100,224,122, 63,227,249,103,159,102,125, 82, 17,234, 57,121, 86,144, 38, 25, +199,211, 22,181,179,201, 94,213,240,236,229, 77,254,163,255,244,191,224,181,111,191,193,244,189,251,132,249, 52, 74, 89,166,130, +176,170, 9, 78, 17,146,132,225,102,143,122,101, 65,248,200,248,176,113, 92,116,249,242, 54,139, 96, 97,235, 9,126, 69, 84, 4, +149, 50,111, 26,172, 11,220, 43, 75,214,117, 77,174, 53,214,181, 80,206,168,235,154,253,197,140,145,146,252,198,120,194, 53,101, +216, 80,134,230,226,121,158,154,108,112,239,248,136, 70, 6,174,226,185, 28, 2, 67,109, 24,248, 22,147,100,184, 16,152,154,132, + 11,189,132,169,139,136,248, 74, 8,122, 50,176,118, 62,170, 34,162,104, 76,142,105, 3, 43, 27,169,167,155,169,225,104,221,146, +230, 41, 3, 41,217,119, 46,210,223,180, 36, 52, 14,178,156, 80,175, 63,196,221,126, 92, 51,221, 75,112,218,199,119, 7,100,242, +117,133,175, 3, 7,203,150, 48, 91,196,115, 57, 81, 44,140,161,173, 28,117, 89, 35,234,238,124,201, 2, 33,207, 88,104,195,168, +208,232,188, 0, 99,168,165,198,106,197, 2,193, 80, 18, 21,191, 58,252,236,222,122,201,126,219,112,100, 75,214, 30, 22,109, 75, + 79, 42,114, 21,249,236,198,131,177,142,108,144,115,113,107,200,214,120,192,168, 87, 48, 50, 25, 67,175,201,165,198, 90,203,145, + 16,177,163, 18, 58,157,116, 35,121,170, 63,224,111, 95,186,194, 95,185,116,149,141,172, 71, 45, 13, 7,161,229, 80,201,248,188, +230, 69, 84,214, 44, 6, 49,208,164, 5,194,228,209, 69,115, 99, 19,206,141, 33,203,248,204,230, 6,207,231,154,139,249,144,237, + 36,231,124,127,204,115, 9,156,235, 15,112, 85,197, 42, 29,178, 91,214,232, 65,159, 89, 83, 82, 74,201,253,122,197, 40, 53,145, + 2, 38,224,185,164,224,157,182,225, 66,154, 49,199,115,197,100,188,222,212, 60,159,245,121,205, 86,140, 84,194, 59, 33,112,222, + 24, 94,105, 74, 46, 36, 57,175,181, 13,107, 9, 55,154,146,131,110,170,182, 86,154,123,214,226,140, 33, 56,139, 82, 6,149, 36, +236,151,107,148,183,188, 52,159,241,126,189,226,219,199, 71,124,251,232,152, 91, 85,195,237,163, 41,179,217,138,102,177, 34, 44, + 86,132,178, 34, 44,231,177, 72,105, 60,193,183,113, 39,172,235, 24, 87, 37, 4,105,163, 86,100, 11,195, 73, 63, 22, 94, 33, 48, +115, 1,235, 60, 7,109, 75, 42, 37,211,224,112,182,165,105, 44, 20, 73, 28, 47,122, 98,140, 8, 34,198, 1,219,129,141,148,124, +100, 28, 38,186, 14,103, 32,196,160,190, 88,158, 41,159, 74, 16,170, 51,175, 9,145,194,188,106, 29,139,210, 97,240,220,154,213, +220, 44, 27,222, 94,214, 76,107,203,205,117,203,173,170,137,250,154, 34,142, 95, 87,193, 82,150,229, 79, 24,212, 79, 3,187,239, +244,209,203,170,227,155,183, 17,185, 94, 86, 31, 49, 0,209,143, 80,223,248, 83,190,120,243,211,153,136, 56, 71,211,180, 88, 89, +112, 56, 95,115,216, 74, 84, 2,211,101,195,244, 84,183,187,141,178,149,168,238,100,149, 34, 2,243,210, 46, 19,242, 46,210,217, + 48,157,154,154,143,227, 0, 97,227, 99,157,100,241,161, 72, 35,208, 44, 40,213,101,176, 93,101,186,174,187,207,233,192, 99,117, +243,163, 19,147,214, 66,154, 68,105,195, 83,254,109,219, 62,194,151,161, 4,233, 86,159,191,247, 11,159,229, 11, 87,118,248,204, +213, 29, 94, 93,183,112,112,244,113,214, 1,143,181,229, 93,180, 35, 60, 20,130, 73,128,105,240, 92, 82, 9, 46, 4, 86,206, 50, + 84, 26, 21, 60,203,126, 31,113,105, 27,159, 22, 52,242,148,150,230, 89, 53, 53,231,243,130,224, 28,251, 71,247,121,111,239, 24, +213, 66, 49,232,243,238,238,154,255,253,155,223,164,124,247, 78, 76,118,172,237,208,254,246, 49, 79,121,251,225, 57,122,218,135, +254, 8,174, 94,227,201,167,159,230,231,158,249, 12, 69,158,146, 37,154,217,178,130,114, 1,192,183,254,248, 79,121,254,103,191, +204,100,220, 39, 16, 40,215,117,228,165, 59,135, 76, 20, 70, 39,164,131,156, 36,205,241,221,131, 34, 59, 94,120, 86,228,156,204, +150,236,159, 44, 57, 92,181, 44, 86, 45,182,182,148,141, 35, 75, 21,206,197,249, 32, 34,138, 58, 32, 4,214, 5,210,196,144, 24, + 29,133, 48,132,140, 10,111, 50,138,110, 4, 31, 56, 94, 53, 28,206,151, 20, 41,236,238,175,184,253,193, 33,135,135, 83,254,219, +191,255, 31,227, 46, 92,227, 92, 95, 50,109,227,104,233,234, 86,193,115,231,199, 20, 90,113,105, 50, 98,107, 48,164,245,142, 69, + 89,177, 94,206,217, 24,111, 16,132,228,120,177,230,131,227, 21,183,246,230,188,125,255,144,233,225, 49, 77,213, 48,155,207, 59, +228,173, 33, 47,250,180,173,224,222,221,219, 4,239, 41,203,117, 20, 94, 42, 75,164,201,184,184, 51, 97, 60,204,121,225, 83,151, +216,220,220, 96,190, 88,211, 44, 43,150,235, 21,149, 83,172,231,199, 40, 37, 88,220,120,141,139, 91,151,201,140,166, 21,160,159, +216,193,222,185,207,108,185,100,144,247,153,156, 59,207,231,175,159,231,229,247,118,249, 63,191,251, 22,239, 52, 21,161,108,160, + 46, 9, 36, 81, 45,205,219,168,206,102, 27,152,244,249,119,159,218,226,217,243, 3, 94,185,127, 4, 78, 71,237,123,173,153,159, + 44,249,210,246,152, 23, 38, 59,252, 7, 63,247, 34,127,248,242, 55, 24, 20, 57,223,152, 30,243,160, 46,185, 55, 59,160,169,150, +188, 59, 59, 1, 15,235,122,201, 27, 15,247,248, 66,166,121,177, 63, 98,152, 20,204,109,203, 74, 90,254,195,127,243,175,178,145, +143,249,254,189,125, 46, 40,203, 57,161,216, 9,209,145,175,157, 47, 56,177,160, 18, 73,139,166,159, 39,212,225,140, 62,234, 91, +199,210,118,192,174, 34,163,241,129, 75,105, 1, 38, 37,209,134,161, 49, 84, 74,113, 80, 86, 76,101,231, 56,153,103,132,113, 63, + 58,251,109,108, 16,122, 61,130, 73, 9, 38,199,215,229,163,201,243,227,239, 83,170,151,247,158,176, 90, 18,230, 75,130,111, 32, +207, 17, 91, 99,138,126,143,214, 68,165,200, 32, 69,215, 1,108, 97,111,142,149,146,157,157, 9, 99,109, 40,117, 26,177,176, 66, +208, 55, 41,147,108,128, 70,144, 40, 73,161, 36,211,118, 69,226, 29, 85, 93,113, 82, 87,180, 90, 49,183,150, 60, 64,129, 66, 87, + 13,253, 34,101,251,194,128,254,184, 71,111, 82, 32, 19, 67,162, 13,133, 52,168,186,198, 21, 9, 53, 41,115,147, 34,104, 17,203, + 5, 56,207,207,108, 20,252,252,214, 54,227,162,143,150,134,239, 47,102,188, 84, 89, 90, 37,161, 40, 96, 56,130,241, 48,186, 88, + 22,177,117,207,176,135, 56, 55, 70,108, 12, 32,201,248,237,115, 19,180, 8,244, 85, 66, 47, 81,124,106,178,205, 88, 64,149,228, +248,182,100,115, 48,162,106, 27, 54,122, 41,179,218, 49, 40, 18,230, 66, 48, 74, 50, 22, 66, 49, 82,154,167,139,130, 91,222,241, +116,214,231, 1,158,109,147,114,211,181,124,161, 24,242,186,109,120,190, 24,114,219, 53,236,104,195, 77, 41,121,218,100,220,241, + 45, 27, 42,225, 43,171,134, 59,109, 64, 43,205,161, 72, 57,242, 45,100,195, 40, 17,157,230,216,166,230,192, 5, 46, 24, 67,233, + 90,116,213,240,157,131, 53,251,123, 83,202,227, 5,213,222, 67,194,172, 36, 44,203,184,215,215, 77,236,216, 56, 8,173, 3, 17, +249,254, 17, 48,221,126, 8,135, 16, 26, 75, 16,146,121,101, 41, 6, 25,139,224,153,173, 43,130,209,140,148, 98, 29, 2, 25,112, +210, 90,130,245,143, 5,244,199,156, 47,101,167,147, 46, 59, 90,176, 52,241, 12, 61, 29, 19, 11,209,197, 6, 23,207,202,166,138, +197,166, 13, 81,115,193,118, 64,229,198, 97,181,100,181,172,104,239, 28,224,119,134,132,170,138, 14,134,117,133, 93, 91,246,102, + 37, 33, 85,236,207, 23,204,235,146,121, 85,253, 20, 65,189, 3,155,196, 25,115, 29, 51,145,229, 52, 86,199, 31, 13,116,237,169, + 63,123,167, 47, 30,236, 79, 85,165,127,168, 13, 47, 34,194, 51, 40,112,243, 21, 78, 71,167, 40,116, 71,191,242, 93, 27,163,233, + 28,218,132,136, 45, 68, 41, 98,219,220, 73,240, 21,164,105,188, 86, 69,156,167,159,250,144,247, 11, 88, 85,177, 45,213,118,237, +230, 32,186, 68,197,199,224, 92,182,177,218,255,104,242,242,137,192,128, 40, 8,129, 84,143,104, 99,143,108, 20,123,138,223,249, +220,115,124,249,179,215,185,118,229, 18,189, 65,159,137, 49,188,121,119, 63,222,207,254, 4,182,182, 97,251,114,119, 96,116, 98, + 57,105, 52,124, 9, 65,177,173, 4,233,233,193, 35, 37, 70, 37, 84, 69,193,232,218,147, 20,151,174, 32,242, 1, 66,122, 18, 37, +177, 68, 81,150,160,160, 45,167, 52,229,138,187, 7,251, 28, 77,103,220,218, 61,226,251,119,142,185,189,123,132, 78, 3, 83,217, +121,200,231,166,115,228,235, 16, 53,217,169, 61,173,120, 36,246,241, 59,127,251,111,240,155,191,249,235,252,214, 95,126,145,207, + 92,127,138, 34, 45,104,203,150,131,114,198,108,185,140, 93,157, 14, 33,255,210, 87,254,140, 39,174, 63,205,165,203,231,208,137, +193, 5,129,107, 91,108,211,210, 84,209,187, 90, 73,133,210, 18, 39, 2,109, 93, 33,141,196,186,104, 35,136,128,217,241, 34, 58, +142,245, 83,238, 60, 56, 97, 94,182,172, 43,199,176,103, 88, 55,142,117, 29,157,151,124,128, 52, 49, 56, 33, 98,192,116, 33,250, +186,187,208,209,118, 2,193, 70, 69,191,187, 15, 23,124,251,123,111,178, 94,174, 81, 65,112,225,153,231,217, 24,110,176, 44, 79, + 48, 6,206, 13, 50,182,122, 57,105,146,160, 4,244,211, 12,165, 52,173,109, 73,181,138, 66, 55,227, 62,155,163,130,224, 3,109, +221,224,156,163, 90,173,177,190,198,214, 45, 38, 55, 12,134,131,232,159, 83,215, 28, 30,239,177,174, 74,172,143,146,201, 50, 64, + 99, 91,214,203, 5,249,160,207,221,123,135,236,223, 59,100,213, 88,202,178,138,244, 32,231,168,133,102,160, 2,101,179, 66, 6, +193, 63,127,243, 13,174, 94,185,198, 50, 81,120, 41, 96, 99, 27,125,120, 72, 80,146,171,159,190,198,238,225, 9,255,253,127,253, +143,216, 31, 13, 8, 65,112,117,123,196,201,209,156, 96,163,189,103,112,154, 32, 45, 1,201, 95,237, 23,252,141,171,151,152, 76, +206,113,151,150,189,131, 69, 92,107,219,194,186,102,119, 81,177,215,204,233,111, 95,226,205,226, 2,127,114,251, 6,203, 15,222, +167,109,214,184,195, 35, 78,238, 60, 96,189,156,243, 96,247, 33,187,199,115, 88,172,121,113,152,112,217,244,104,129, 91,205,146, + 69,211,240,153,139, 23,248,218, 94,197,157, 96,120, 38, 84, 12,133,230,138,201,240, 77,205,180, 92, 49,173, 86, 52,141,101,152, +165, 72, 35, 17, 70,162,188,160, 42, 91,142,234,200,201, 14,137,162,240,129,103,198, 3,182,123, 57, 79,142, 70,108, 21, 3, 84, +218,167,245, 18, 31, 2,203,186,100, 59, 49,156,207,115,174, 12, 70, 12, 55, 71,108,109, 78, 56,119,110,135,213, 32,167,214, 2, + 95, 12, 9,182,194,183,246, 19,131,251,153,147, 88,108, 83,227, 26, 66, 0,159,104,124,104, 34,142, 72, 40,254,206,149, 17,127, +237,137, 77,254,108, 81, 19,170, 53, 15,156, 68, 20, 61, 6, 89, 2, 58,165, 16,138,173, 52,163,113,158,139,105,193, 42, 56,150, +109, 77,102, 18,178,224,105,218,146,204, 40, 78,234, 53, 85, 8,184, 0,125, 2, 61,169, 40, 50, 67,186,221, 39,233,231, 72,173, +162,131,105, 16, 80,182,164,206,147, 56,135,207, 53, 83,217,167,202,250, 48, 62, 15, 82, 48,240, 13,147, 96, 81, 54,240,205,147, + 35,190, 58, 91,112,212,214,144,102,244,139, 1, 73,154,146, 38, 9, 77,154,128, 17,136, 44, 69,228, 25, 36, 25,191, 56, 28,242, + 75,219,155,140,211, 30,107, 33, 80, 4, 54,250, 27,188,190, 92,115, 97,115,147,188, 90, 49,200, 71, 28,172,231, 12,123, 99,180, +107,240, 73, 74, 45, 65,163, 88,184,134,158,148,172, 67, 96, 22, 60, 79,154,140, 93, 1,219, 66,242,126,176, 92, 55, 5, 63,104, +215,124,177,152,240, 70, 91,243,132, 73, 57, 20,146, 39,133,230,221,224,184,164, 12, 95,171, 45, 90,167, 44,146, 52, 42,215, 25, +137,206,114,110, 47, 42,134,195, 49,109, 93, 82,166, 57, 89,154,145,138, 20, 35, 2,137, 12,172, 68,224,120, 81, 19,234, 10,188, + 32, 40, 27,215, 47,184,104,186,162, 32,184, 78, 73,179,237, 4, 58,234,211,130,165,195, 93, 88, 23,139, 25, 35, 8, 73,193,220, +123, 86, 62,158, 79,198,195,202,121,188,245, 76,109,131,111, 61, 94,118,138,114,174,251,189, 54,196,100,207,187, 88,220,213,174, + 43,238,162, 48, 26, 82,119, 44,168, 83, 68, 98, 32, 74, 24,218, 88, 48,182, 1,154, 53, 66,201,200,220, 10,237, 35,239,145,254, +207, 61,207,175,255,194,175, 49,185,180,197,221, 31,188,129,119, 14,239, 26,124, 91,115,184, 42,217, 95, 58, 30,204, 75,118,231, +229, 79, 25,212, 93,231, 7, 94, 55, 17, 13,222,254,136, 96, 29,186,249, 51,246,147,103,208, 63, 77, 31, 94,133, 88,233,135, 78, + 60,166,237, 2,185, 15,103,148,171, 83, 32,151,144,241, 64,106, 59,212,182,179,157, 14,123,135, 80,119, 26,124, 19, 51, 85,219, +145,141,243, 36,182,153,173,139,111,245, 88, 85, 90, 69,126, 42,101,219,181,236,221,143,189, 94,225,186, 44,190,181,145, 67,239, + 99, 71,225,252,185, 17,191,246,165, 79, 51, 30,111, 32,181,102, 60, 28,160,148,231,107, 15, 14,163,144,198,198, 38,191,252,133, + 95,226,153, 43,207,176,177,189,195, 60, 87, 48,153,224, 70,227, 56,235, 46,250, 28,139,140,162,200, 88,110,142,217,186,122, 29, +189,185, 65,178,189,205,197, 11,207,176,179,245, 36,147, 98,136,210,158, 84, 9,164, 10, 24,169, 56,159,165,104, 4,139,186,229, +225,186,164, 57, 46, 17,212, 76, 46,110,243, 59,191,254, 34,127,235,231, 63,197,214,104,204,203,111,220,141,155, 92,117, 18,177, + 38,116,179,158,110, 22, 36, 5,140,174,240,203,191,240, 34,189,188,160,223, 75,105,218,192,114, 94, 81, 54, 53,175,127,112,159, +102,247,118,151, 4,157, 9,202,127,255, 27,223, 35,233,245,185,122,253, 10,195, 65, 15,235, 2, 38,141,148, 12,173, 20,202,168, +168, 42,151, 38, 36, 89, 66,154, 36, 72,109, 88,173,102,148,229,138,197,244,144,245,170,100,186, 40, 73,179, 4,148,160,117,142, + 59,247,142,185,125,231,144, 50,120,234,198,243, 96,186,164, 14,158,163, 69,116, 73,187,249, 96,193,113,217,128, 8,172,234,154, + 89, 85,241,222,238,140,155,119, 30,242,242,159,191,129,111, 45,121, 97,184,117,231, 22,139,234,132,175,255,254,239,243,220, 11, + 79, 51, 74, 13,189,196,144, 38,138,126,154,161,181,194, 57,139, 15,158,225,176,207,100, 99,194,120,115,131,119,111,220, 96,126, +176,224,137, 39, 47,178, 49,206, 17, 82,178,152,174,168,203, 10,169,162,184,133,119,129,249, 98,198,162, 90,226,188, 39, 81,154, +166, 45, 49, 90, 99,148, 65, 25,133,208,154, 64,194,241,241, 58, 2,247,238,221,225,206,238, 7, 28, 29, 31,147, 25,197,131,221, +219, 72, 13,133,201, 17, 82,144,184,138,111,191,250, 58,227,107, 79, 51,159,215, 28, 79,215, 12, 81,188,240,229,231,120,240,193, + 3,254,203,127,240, 15, 9,195,148, 48, 24,240,244,248, 28,191,120,225, 28,149,104, 56,120,176, 23,207, 18,121, 10, 30,243,188, +187,172,216,222, 26,240,170,215, 84,131, 77,238, 29, 79, 35,144, 7, 27,159,183,186,198, 46,106,190,253,224, 30,187,227,109, 66, + 2,236,237,194,195, 67,196,193, 20,148, 68, 78,143,162,234,240,122,137, 90,172,121,114,144,226,104,120,216,214, 60, 16,130,243, +166, 64, 60, 56,160, 76,115,110,212,150,220,193,139, 89,206,121,147, 48, 65, 82, 84, 75, 74, 23, 56,241, 22,231, 37, 18,133, 22, + 18, 71, 96,191,116, 76, 27,139,112,142, 92, 4,174,244, 82,174,231, 42, 42,197, 77,250,244,179, 20,157,103, 52, 33, 97,238,115, + 18,225,144, 50,112,165, 95, 80,164, 25, 74,103,236, 12, 7,132,160,184,212, 27,161,243,148,117, 97,104,130, 38,120, 73, 80, 1, +223,218, 15,181,230, 63,106,125, 26, 90, 11,179, 57,254,112, 30,193,191, 43,203,223,188, 52,226,239, 60,117,133, 79, 77, 54,184, +220, 19,124,237,193, 49, 65, 40,218,113, 76,242, 76, 98,216,214,138, 84, 37,108, 36, 25, 51,215,208,215, 41,235, 16, 53,192, 69, +176, 40, 33, 72,157,195, 72,197, 10, 88, 52, 53,206,181, 76, 80,244, 70, 41,201,184,128,160, 16, 50, 82, 8,221,178, 69, 84, 45, + 38,120,250, 66,145, 74, 56,108, 61, 85, 62, 68,141, 54,217, 26,110, 51, 73, 39,124, 80, 46,120,105,127,159,239,150, 21,123,101, +133, 73,114, 70, 4,206, 43,195, 68, 74, 90,223,178, 45, 37, 94, 26,172, 78, 65, 8,118,122, 3,254,253,171, 87,248,197,237, 29, +206,101, 57, 15,154,134,117, 62, 68, 9,193, 23,183,182,120,176,174,216, 25,142, 56,168,106,174, 15, 71,172,155, 53, 62,201, 88, + 59,139, 5, 26, 44,153,146, 44, 90,203,200, 24,148,139,238,107,153,179,204,149,230,162, 54,188,211, 86,124, 62, 27,240,157,122, +197,245, 36,229,182,141,149,249, 45, 44, 79,201,148,119,189,101,152,102,188,237, 96,101, 50, 46, 25,143,201,115,156, 15, 92,204, + 19,172,131,116, 48, 64, 91, 71, 26, 2,187,182,166,144,134,165, 15,188,125, 60,231, 92,207, 48, 21, 50, 26,255,216,216,109, 12, +105, 10,182,237,176, 21,177, 94,139,129,221, 34,130,239, 84, 52,187,192,124, 26,220, 91, 75, 8,109,231,194,150, 98,157, 71,106, + 88,181, 45,214,123,188,148, 88,231, 8,136, 51,183,207, 68, 19, 84,199,241,149, 42,250,180,166,230,209,104, 87,136, 83,254,175, + 56,227, 1, 55, 54, 22,147, 77, 21,199,181,162, 99, 69,181,109,108,213,251, 14,184,218, 90,154, 59,187,188, 83,205,185,251,250, + 77,194,122,253,161,189,234, 91, 27, 29,235,234, 10, 87,173,127,218, 74,253,167,120,121,255, 73,236,138,127,177,207,105, 79,181, +210,125,148, 88,149, 62, 86,224,170, 67, 20,186, 16, 3,206, 41, 24,175,125,140,142, 69,135, 90,119,246, 76,196, 89, 6,176, 50, + 90,234, 40,115, 6, 6, 75, 77, 92,144, 14, 48, 39,137, 45,219, 71,215,240, 73, 28,117, 62,130,248, 79, 82, 68,136,170,123,104, +137,208, 34, 82,236,180, 36, 29, 13,184, 48,218,226,250,213, 29,154,214,209, 88,199,235,239,238,243,131, 91,183, 65,107,190,244, +244,179, 92,217,188,202,160, 72, 24,229, 35,206, 15,183, 57, 63,222, 98,107,180,201,212,173,105,165,128, 84,225,243, 62, 95,120, +234,103,184,124,233, 83, 12, 70,219, 76,134, 19,118,118, 46, 99,250, 57, 70,235, 40, 52,225,106,188,111, 59,224,152,102,208,203, +169, 90,207,193,170,194,175, 23,144, 14,248,173, 95,252, 57,126,249,179,151,216,238,103, 44,170,154,175,254,249,219,221, 24,163, + 75,152,156, 7,225, 62, 60,236, 15,129,231,158,190, 70,154,231,184, 32, 56, 62, 94, 48,157,157,240,242,187,239,242,240,213,215, + 59,179,154, 56,210,160, 55,140,182,180, 73,143,155,175,190,198,205,163, 41, 79, 94,185,194,246,206,152, 52,141, 21,181, 78, 77, + 4,136, 72,133,210,209, 96,231,248,225, 62,243,163, 99,210,126,129, 64,160,140, 34,235,229,113,148,176, 90,178,119,255, 30, 94, +106,170,178,194,121,199,201,193,148,123,119,247,152, 30, 45,168, 90,207,189,221, 67,110,221,188,207,108, 58, 99,212, 79, 25,102, +134,183,223,185,195,155,175,191, 79,185, 42,217,189,247, 16, 66,137, 39,208, 54, 21,155, 91, 27,100,169,230,179, 95,124, 1, 33, + 4,214,183,164, 90,147,152,132,212, 36, 88,231,200,146,132,201,104,192,100,123,139,197,108,198,239,189,244,231,188,250,123, 95, +225, 7, 39, 71,108,167,125, 62,253,169,171, 76, 6, 57,135, 39, 37,101, 85, 19,112, 88, 91, 81,173, 75,130,112, 88,219, 18, 66, +160,106,107,218,198, 33,181, 36, 77, 83,146, 52, 37,207, 11,180,201,249, 31,254,243,191,207, 42, 83, 60,117,241, 9,132,128, 59, +251,123, 20, 90,115,251,120, 22, 27, 37, 70,144, 37, 5,105,146,146,135,192,242,214, 77,222,247, 9,243,147, 19,152,157,176,213, +235,241,250, 31,253, 1,183,111,223,137,235,176,189,197, 47, 93,188,202,100, 52,162,110, 4,239, 29, 29, 65,181,254, 16, 26, 28, +103,249,238,221, 19, 30, 76, 6,140, 19,197,238,180, 11,234, 70, 69, 77,233,102, 21,159,175,117,137,112, 51, 56,119, 25, 33, 3, +226,120, 14,179, 35, 68, 98,162,116,169,144,200,202,161,122, 57,247,102,107, 66,112,172,141, 98, 96, 82,174,165, 61,206,103,125, +174,175,150, 60,151, 40,254, 68,229,252,229, 80,179,163, 37,217,186,164,239, 32,149,129, 99, 33, 57,106, 61,203,101,197,209,178, +101,247,168, 97,225, 37, 77, 93, 99, 36, 76,180,228,185, 73,194,118,145, 48,233,165,104,169,200,178, 4,175, 12,199, 46,224, 85, +198,170,105,217, 73, 2, 7,141,165, 17, 9,219,253, 2, 23, 20,105,170, 73,242, 30, 82,229, 36,198, 96, 83,205,218, 72, 66,211, + 65,115,196,153, 35, 91,248, 33,193, 29, 31,131,123,200, 11,206,111,244,120,114, 48,160,111, 18, 94,218, 63,226,229,105, 11,174, +161,116,129,173,201,132, 45, 90,198,105,143, 43, 89,129, 11,176,242,142, 6,207, 68, 25,102,109,133, 21, 34,138,137, 0,199,245, + 18, 97, 29, 7,203, 21, 53,129,208, 54, 12, 91, 73, 49,200, 65, 10, 92,101,169, 22, 22, 97, 29,218,122, 84,136,179,247,148,128, +203, 53,165, 73,201,123, 9, 23, 6, 5, 27, 89,198,181,241,152, 75, 58,229, 25, 9, 6,199, 6,146,157, 44,193,132,134,129,146, +164, 85, 67, 38, 37,137,138, 74,124,107,161,121, 82, 75,254,202,214, 38,147,201,132,188,223, 99,225, 37, 43,161,216,234, 13,184, +217, 74,158,204, 13,135,222, 51, 50,146,135,192,192, 7, 14, 2, 72,111,169,131,194,224, 56,113,129,158,130,135,214,114, 73, 42, +156,244, 56,165, 24, 11,193, 45, 91,113, 61,201,121,185,173,249, 76,154,241,102, 83,115, 53,201,184,237, 45, 87,149,226, 29,107, +177, 42, 97,215, 9,118,209,236,136,192,118,191,135,118, 81,193,209, 41,205, 74,196,209, 93,240,240,190, 83, 60,155, 36,212,194, +179,169, 52,123,205,154,210,186, 40,190,213, 70,231, 52, 76,151,144, 17,147, 34,244, 41,144,218,253, 72,208,111,232, 66, 71,176, +167,192, 74, 69,211, 52, 56, 43,176,194,163, 36, 88, 58, 16,156, 20, 12,211,132, 70, 10, 6,137,129,196,224,106,219,137,121,117, +133,208,227, 1,221,118,223,127,170, 54,106, 58,155,111,219, 60,242,149,127,132, 63,235, 18,141, 71,201,198,193, 17,172, 63,252, +252,250,199,233,138,222,227,189,255,151, 24,212,255,101, 37, 10,208,129, 15,136, 70, 42,190,243, 66,183, 93,171,188,113, 17,224, +100,187, 96,244, 72,100,229, 84,212,197,199,223,179, 33, 46,114,211,130, 54,177, 90,135,216,162,207, 12, 10,129, 95,119,116, 57, +239, 98,144,230, 19,140, 88, 30,151,211, 85, 41,164, 10,145,165, 93,101, 27,187, 6, 66, 68, 43,203,114, 94,147,100, 61,122,253, + 62,203,202,113,111,127,197,183,222,188,193, 73,217,242,212,120, 27, 39, 44, 23, 55, 47, 61, 98,200, 25, 97, 24, 15, 55, 25,101, + 99, 92,104, 89, 87,115, 18, 45,249,244,149, 43, 60,247,220,103,185,250,244, 5, 46, 92,220, 1, 82,164,146,228,121,156,179,183, +245, 26,215, 68, 87, 45, 37, 2,163, 94,129,247,176, 40, 43,142,167, 43, 56, 62,128, 36,197,228, 9,231, 46, 92, 32,184,134, 63, +250,179, 55,185,121,231, 78,119,223,186,150,145,107, 63,158,149,249,134, 87,239, 31,242,173, 27,183,249,214, 27, 55,248,230, 59, +183,120,253,253,251, 28, 61, 60,224,111,254,230,207,242,175,255,173,223,224,185,207, 63,207,203,223,191, 1, 62,233,124,234, 13, + 56,199,124,255,128,111,253,193, 87,113, 50,176,181,115,129,243, 59, 99, 76,146,224,173,167,109, 90,218,117, 77, 83,215,209,110, + 80, 43, 66,112,172,150, 11,130,117,184,182, 97, 62,157,226,108,131, 76, 20, 77, 85,178, 90,158, 48,159,159,176, 88,156,208, 31, + 12,192, 4,214,235,146,123,119,222, 35, 79, 11,206, 95,218, 34,205, 13,111,188,123,151,178,110,184,246,204, 37,108,240,172,171, +138,197,106, 78,101, 43,130,176, 44,203, 37,141,179, 52,117, 69,235,124,244,118,150, 18, 33, 4,121,146,209,239,231,108,109, 71, + 3,163, 55,110,220,224, 15,255,155,239,176, 62,120, 43,222,143,147, 25, 63,216,219,227,206,222, 30,215,174, 61, 65,154, 25, 80, + 10, 87,133,152, 16, 18, 8, 33,154, 25, 37,137,193,249, 22, 79, 32, 87,134,254,104, 68,150,230,236,236,236,208, 75, 21, 63,243, +175,188,200,231,158,122,134,157,157, 45,116,146,163,154,166, 91, 67,143, 82, 10,111, 3, 66, 9,180, 74, 56, 55, 57,199,214,198, +132,203, 82,115,174,153,243,185,237, 45, 66,219, 66, 47,227, 7,245,154,240,240, 8, 76,194,221,188, 32,144,242,181,218,130,110, +225,193, 49,225,180,203,214,218,174,117,216, 80,175, 42,246,122,134, 80, 90, 88, 77,227,115, 83,251,216, 37,203,123, 80, 86,136, +178,134,190, 66, 12,207, 65,181, 64,212,209, 79, 65, 74,133,208, 6,217, 58,148,116,136,166,197,214,142,107, 90,114,181,223, 99, + 39,205, 25,233,148,145,206,185,188, 94,241,215,151,199,252, 39,235,138, 47, 52, 11, 70,206, 33,165, 34, 73,251, 28,201, 56,190, +154, 53, 13,213,226, 4,218,134,178,182,228, 89, 74, 42,225,252, 36,229,217, 97, 78,145, 36,160,100,172,140, 58,190,117,107, 20, +171,218,163, 80,204,219, 64, 46, 4,195, 52,195, 98, 64, 40,140,202, 16, 68, 1,163, 86, 42, 42, 28,115, 33, 9, 90,197,106, 73, +234,232,223,254, 35,186,113,225, 49,110,202,237, 34,163,202, 4,119,154,134,127, 60, 93, 99,219,238,240, 93, 55, 28, 41,193,179, +147, 17, 27, 74,163,129,149,181,108,165, 5,214, 7,214,193,161,165, 66, 11,205,210,183,100,202,144,134,192, 73,185, 68,249, 22, +223, 86,148,193,211, 11, 18, 83, 69,189,137,122,218, 80,213, 45,198,122,180,146, 36,202, 32, 90,135,106, 29, 74, 5, 22, 90,211, + 47, 82,122, 74, 48,208,146,139,253,132,177, 74, 9,214,177,157,100,104,225,193,214, 76,122, 19,114, 37, 17, 89, 74,223,104,132, +151,108,102, 3,130, 82,140,148,226,114, 63, 39,213,145,138,252, 45, 27,184,172, 19,238, 5,120, 58, 81,220,108, 3,151, 18,195, +210,123,122, 77,131,211, 10,211,214, 28, 6,131,161, 97,209, 74,250,162,101,209, 90, 54,149,228, 36, 56, 76,128, 77, 41,121, 24, + 2,215, 84,194,187, 33,240, 41,173,121,197,181, 60,111, 50,110, 56,203, 19, 58,229,166,247,140,211,130,251,174,225,102, 48,188, +208,211, 36, 58, 71, 10,203,162, 12, 20,169,161,213,134,147,101, 75,146, 72,150, 65,115, 61,145,236,121,199,180, 93,147, 4,216, + 78, 18,246,171, 53,101,128,182,170, 8,210, 61,162, 5, 7,225,227,200,164,163,239,253, 72, 22,207,135, 0,202, 93, 85,223,205, +183, 49, 50, 2,168,219,216, 78,151, 74,211, 79, 18,192,179,105, 52, 13,146,129, 84, 8,163,162, 56,152,235,132,198, 78, 65, 85, + 46,116,214,222, 34,198, 31, 73,236, 42,107, 5,165,251, 16,131, 76,252,136,198,117,248, 33, 58,255,167,239,191, 88, 65,253,113, + 78,184,150,145,122,147,152, 51, 21, 52, 31,226,251,212, 63, 61,116,173,144, 83,218,155,140,170,177, 52,117,156, 29,219, 54,242, + 90,179, 52,182, 57,172,143,193,189,113, 4, 37,232,208, 85,103,105,155,236, 16,253,159,228,175,110,116,164,149, 36,105, 68, 49, +158, 42,238, 5, 16, 34,116,238,108,142, 7,193, 50, 16,125, 30, 30, 44,216,221,223,231,246,225, 30, 95,188,242, 2,227,193, 6, +155,197, 38,139,106,129,109, 26,202,186, 68,139,132, 44, 43,176, 77, 77,107,107,198,185,102,104, 18, 46, 76,182,184,254,236, 85, + 54,198, 3,164, 12,180, 45, 84,117, 77,189,110, 88, 87, 75,108,168, 70, 44,229, 0, 0, 32, 0, 73, 68, 65, 84,211,224,124, 29, +141,226, 84,244, 97, 89,217,154,233,170,101,117, 52,139,135,246,106,201,131,217, 9, 95,123,247, 3,222,190,117,204, 55, 95,127, + 7,246,119,187,204,209, 70,240,134,111,207,118,202,227,187,108, 57,135,197, 18,151, 12,248,242,245, 39,249,194,181,107, 60,115, +241, 60,207,191,112,157, 81,209, 71,169,148,175,127,247,205,174,131,210,117, 83,100,167,244,167,224,253,183,239,243,205,255,231, +107,156,148, 21,195, 98,192,230,206,136,209,100, 64,146, 39,164,121, 78,214,239,145,247, 50, 6,163, 33,195,141, 17, 74,106,156, +183,136, 16, 98,117, 93, 53,180,174,197,152,132, 36, 51, 12, 55, 38,164, 69, 65, 83, 47, 41,215, 75,180,145, 12, 55, 71,120,233, +152, 46,102,180,117, 69,214,207, 56, 56,154,114,251,238, 17, 34, 52, 8, 44, 74,197,245, 52,105, 66,158, 39,244,123, 61,146, 68, + 97,140, 33,207, 18, 54,198, 99, 6,227, 1,105,150,241,230, 59,239,240,251,255,244,101,238,189,241, 10,164,211, 15,175,253,124, +193,131, 27,239,241,135,239,222, 34, 43,107, 46, 93,185, 72,175, 95,160,141,129, 16, 80, 42, 33, 49, 41,173,111,144,104,134,195, + 49, 59,151,174,112,241,226, 69,206,109,109,112,113,103,192,114, 85,147, 26,205,249,205, 30,147, 81,159, 81,207, 80, 53, 48, 95, +205, 40, 76,202,185,201, 22, 91,147, 29,156,141, 7,202,100,115,147,235,215,159,194, 58,203,104, 49, 37,221, 28,211, 38, 41, 15, +130,228,253,208,226,238, 61,132,121, 69, 35, 90,238, 38, 41, 33, 73,226, 66,150, 43,152,205, 62, 30,168,108, 32, 16,221,208,132, + 3,234, 16, 1,115, 73, 47, 82,112,124,196,169,136, 85, 5, 59,231, 35, 23,122,122,130,104, 90, 68, 93, 33,147, 20,233,107,100, + 43,209, 73, 74,235,107, 22,222,242,249, 34,101, 59, 45,216,208, 25,133, 50,100,214,163, 29,252,122,179, 96,190, 94, 96,189,199, +244, 71,180, 38,101, 97, 18,202, 0,181, 20,228,109, 69,175,173, 8,120, 26,153, 96,242,148, 79,111,246, 40,164,196,104,141, 86, + 18,167, 4,109, 0,169, 4,135,141,231,225,172, 98,229, 3,206, 59,180,107,112,193,163, 4,104,165,168,136,174, 87,190, 3,231, +173,189,165,150,130, 6, 31,253,219,125,244,143,136, 29,192,240, 67,169,166,167, 2, 76,161, 12,220,202, 50,222,113,129, 42,209, +145,239, 93,198, 10, 44,132, 64, 37, 96,167,151,115, 78,105,140, 78,153,186, 6, 45,162, 22,115,233, 45, 54, 56, 10,169,152,219, + 6,139,164,118, 22,237, 26,158, 85,154, 52, 4, 86,222, 49,146, 10,150, 77, 44,238, 26,139,145,138, 20,137,116, 93,178, 88, 53, +120,223, 18,250,154,202,193, 48,209, 60,181,153, 98,172, 39, 33,112,161, 63, 96,189, 42,217, 30, 12,152,203,132, 32, 36, 42,201, + 25,103, 5,235,160, 25,231,125, 86,222,177,221,159,112,185,159,113,212,120, 68,154,243,245, 69,201, 19, 70,115, 79,105,174,104, +201,237, 10,158, 72, 5, 15,188,167,215,212,180, 74,144, 32,152,121, 24, 11,207, 34, 56,156,171, 88,121, 79, 79,192,212, 89, 70, + 34,208, 4,112, 66,241,164, 50,188,227,107, 46, 33,121, 75,192,139, 73,206, 93,147,112, 81, 27,222, 15,158, 45,224,166,183,220, +106, 2, 99,165, 17, 34,197,168, 22,169, 12, 46, 40,242, 68,115, 48, 91,115,105,212,227,214,178,225,124, 10,123,117, 60,114,135, + 66,179,198,211, 84, 75,250, 58, 2,217,166,173,135,218,117,113,188, 27, 39,186,174, 98,167,253,208, 56, 88,252,200,192,222, 81, +183, 37,177,170, 86, 93, 7, 51,209, 32, 4,218, 40,180, 8, 8,161,169, 3,228, 38, 42,190, 89,239,185,152, 37,216, 16, 72,164, +166, 57,125,202,132,239,204,204, 58, 1,142,214,198,207, 13, 81, 34, 59,130,202,221, 79,116,109, 31,235, 34,125,200,137,228, 47, + 98, 80, 63,173,216, 53,177,202, 62, 69, 25, 6, 1,153, 62,203,138, 66,151, 37, 9,206,130, 54, 33,234,214,159, 86, 41, 74,198, +118,189,236,104, 76,167,115,118,219, 5,241,211,155,172, 58,142,187, 13,159, 44,190, 34, 85,220,101, 74, 67, 34, 17,182,107,142, +216, 40,136, 33,124,183, 20,147,130,205, 68, 17,218,138,182, 89, 51,204,198, 12,178, 13,198,189, 13, 82,147,179, 63, 59,226, 79, +223,121,133, 7,211,123,164,166, 3,240,219, 21,219,147, 30, 87,182,119,184,176,125, 30, 33, 2, 89,175,143,144,146,229,186, 97, +255,254, 17,171,249, 17, 77,211, 80,214, 75, 42, 91, 67, 80,100, 73, 15, 17, 2,141,107, 89,149,150,195,101, 69,187,255,160, 75, + 74, 4,172,150,132,189,125, 14,110,223,128,249, 97,108, 1, 53,117,100, 12,156,142,196, 69,231, 25,239, 31, 31, 9, 5, 24,158, +227, 75,159,251, 28,159,123,234, 51,108, 76, 70, 12, 71, 3,114,147, 80,149,150,147,147, 57,127,254,199,223,141,247,227, 20, 40, +226, 60,143,124, 44, 67, 60, 56, 31,188,123,135,239,125,227, 21,190,250,251, 95,161,244, 45,118, 81,146,100, 25,218,104, 76,146, +208,235,167,100,121, 70, 49, 72,201,250, 61,138,241, 16, 41,226,140,209,152,200,107, 46,215,107,132,247,180,109,137, 50,134,209, +214, 38,147,173, 9, 38,139,114,146,171,229,154,182, 46, 89,204,230,252, 79, 95,251, 42,111, 63,188,195,107,239,191,207,139, 47, + 60,207,104, 60, 32, 43,114,242, 34,167, 63, 28, 48,220,218,160, 55, 26, 50, 26, 14,201, 7, 3, 30, 62,120,200, 31,252,224, 13, +190,245,199,175,113,247,198, 13, 16, 77,236,100,124,146,254, 63,192,193, 49, 55, 30, 30,241,167,175,252,128,151,222,191,197, 83, +227, 17, 27, 23,207,113,241,218, 14,147,157, 13,174, 61,125,149,171, 79, 62,193,151,191,240, 44,151, 47,109,199,138,190,245, 28, + 28, 46, 81, 70,112,245,226,152, 11,219, 35,138,110, 22,183,118, 2, 91,195,120,188,193,245,207, 62,199,198,249, 77,124, 11,227, +141, 45,130, 80,124,243,187,127,198,255,245,181, 63,229,202,192, 80, 37, 61,110, 91,199,251,117,195,131,147, 99, 56, 41, 35,178, +118,177,142, 98,210, 42, 33,168, 4, 50, 96,247,232,227,123,216,119,192,161, 68,209,223,238,211, 76,151, 49, 57,221,158, 64, 47, +141,221,155,147, 21,162,138, 54,172,226,210, 21, 68,166, 16,203, 88,177, 11,219,198,194, 38, 81, 40, 91,161,147, 60, 66,112,234, +146,103, 82,195,185,172, 79,142, 32, 73, 82,180, 80,104,161, 72,109,203, 94,112,212, 89,206, 74, 42,132, 80,220, 77, 52, 67, 23, +216,193,177,227, 42,138,245,138,123,190,161,213, 3, 14,215,150, 39, 38, 57,163,212, 32,133, 32, 81, 10, 39, 4,247, 74,203,254, +210, 50,135,200,176,168, 75, 42, 91,209, 75, 4, 58,207, 8, 40,180, 50, 88,235,168,157,163, 9,158,181,247,248, 16,240,161,229, +178, 4,167, 12, 91,169, 97,126,122,216, 58,247, 49, 91,211,179,152,238, 99, 23,235,104, 69, 91, 36,209, 69,177, 13, 4,215, 85, + 96,222, 49, 79, 36,207, 22, 41,149,212, 36,161, 69,201, 8,228, 83, 34, 96, 2,148,221, 17,229,130,224,196,214, 76,189,229, 98, +154,115, 94, 37, 12,148, 38, 13,142,224,160, 39, 37,210,123, 86,214, 82,152, 4, 35, 64,218, 0,101,139,181, 21,181,183, 52, 82, + 97, 10, 77,150,105, 18, 96,160, 84,244, 95,106, 28,231, 70, 3,150,141, 71, 42, 67,158,101, 88,239,104,164,166,151,167, 88, 7, + 73, 62,164,144,154, 36, 27,112, 97,208,227, 36, 8,206, 21, 9,135, 30, 46, 42,120,109,110,121,118,100,248,160,134,205,208,224, +211, 20,215, 97,154, 6, 1, 30, 54, 37, 85, 8, 88,160, 23, 2, 11, 60, 61,107, 89, 3, 19, 20, 66, 4,142,133,231,146, 52,220, +146,130,103,149, 38,223,220,224,103,175, 92, 36,152, 20,225, 60, 47, 55, 53, 54,104, 22, 68,109, 9, 25, 4,189, 84,177,108, 53, + 89, 18, 88,148,158,113, 79,115,111,222,240,244, 64,115,119,225,216, 52,150,131, 42, 32, 69,139,243, 1,109, 12,218, 59, 14,215, + 37,165,117,113, 2,107,195, 35,230, 85, 76,216, 92, 60,159,127,196, 8,245, 99,129,212,116, 69,161, 74, 8, 65,117,198, 86,177, +104, 75,141,138,251, 16,129, 59, 5,187, 91,216,233, 71,225,172,177,209, 72, 31, 53,250,131, 20, 81,243,228, 84, 81,203,117,212, +234,166,142,231,106, 85,198,239,249,132, 78,176,248, 73,175,245, 49,238,212, 95,204, 87,219,137,200,152,238,103,167,151, 30, 45, +206,220,199, 43,251,212, 68,138, 26,254,140, 27,104,187, 22,100,234, 33,164,103,201, 66, 47,129,117,211, 45,126,135,254,246, 54, + 34,209,101,120,172,221, 46, 59, 49,154,142,163,104,146,168, 0, 87,241, 88,235,223, 67, 11, 65, 91,196,218,195,170, 33,139, 34, +244,244,211, 30,203,218, 71,197,174, 36, 97, 54,155,115,178,154,226,214, 37,203,101,205, 75,205, 91, 20,201,123,188,112,110,139, + 39, 46,126,145,241, 96,128, 80,154,221,221,154,219, 55,223, 66,233, 12,223, 10, 2,142,218,181, 84,109, 69,109, 27, 18,157, 50, +200,198,228, 38, 99,152,111,128,183,124,160,119,185,113,123, 55,106,206, 7,255,216,142,240,103, 6, 52,167, 6, 46,167,255,221, +119, 40, 81,249, 17,125,120, 37,217,122,230, 50,207, 61,113,157,162,151,162,141,232, 4, 9, 28, 89,174, 89, 61, 88,193, 56,242, +245,169,237, 25,135,191, 37, 2, 21, 79,191, 47, 77,163,164,112,145,241,205,127,242,149, 15, 45,217,214,207,127,153, 47, 95,186, +200,206,165, 11,108, 94,218,161,215, 75,163,145,195,206, 24, 24, 83,151, 13,109, 99,217, 60,191,137, 78, 53,193, 6,180, 86, 24, +163,113, 56,218, 54, 32, 26, 24,140, 11,240, 5,179,121, 11, 14,146,196,208,224,216,186,184, 77,145, 75,108,235,104, 92,180, 80, +172,214, 53, 15,239,220,229,229, 59,247, 25,228,155,188,250,202, 59,176, 60,129, 81, 15, 84, 63, 38, 61,131, 1, 84,139, 31,190, + 47,143, 14,224, 8,170, 15,238,241,143,254,252, 53,184,124, 9,113,239, 62,124,246, 57,254,237, 95,252,121,242,254,152,147,217, +144,117,217, 32,189,192,100,154,141, 73,193,197,113,143,205,126, 30,111,181, 10,100, 89,194,120, 99,128,200,158,138, 57,102,112, +188,247,250,219,220,188,123,139,239,220, 63,198,189,113,227, 81,166,254, 63, 31,205,225,115, 21,253,237, 77,150,149,139,251,124, + 18, 45, 90, 89,151,240,246,109,120, 14, 24,111,198, 53,185,176, 5, 15, 30,126,188, 5, 41, 91,168, 44, 75, 27, 80,231,183,113, +211,101, 68, 72,123, 31,147,103, 5,193, 27,196,209, 9,197,106,202,246, 96,192,223,253, 75,159,227, 63,251,230,171,132,195, 99, + 66,154,198, 25,117,154,226,109,131,175,107,222, 12, 3,158,184,251,128, 43, 89,143,190, 15,120, 17, 53, 4,164, 25, 82,104,195, +197,197, 62,223,174,215,164,185,102, 46, 20,231,164,166, 48, 30,237, 13,198,123, 60, 45, 27,135,119,121,133, 30,215,253, 14,193, + 7,166,139,146, 36, 75, 9, 9, 28, 90,199,173, 38,112, 79, 8,166, 70,179, 30, 22,132,249, 17,185, 84,152, 40,102, 64,227, 37, + 38, 13,132, 32, 49, 65,179,196,113, 65, 11, 46, 6,197, 40,233,113,210,180, 60,145,215, 44, 74,197,177,179,172, 67,244, 68, 8, +118,246,232,240,252, 88, 85,100, 45,193, 46, 16,183, 90, 56,191,217,177,124,116, 44, 42,172,195,150,150,223,187,191,207,111,157, +111,217, 28,109, 49, 17,130,147, 54,130,214,234,206,123,161, 1,234, 16, 56,180, 45,151,101,108,221,150, 50, 97, 32, 37, 35,149, +160,133, 96,214,182,232, 16, 24,231, 5, 39, 39,199,168,209, 8,103, 59, 54,135,130, 22, 73,161,163,131,161,243,158,214, 41,234, + 16,216,206, 82,150, 30, 92,221, 48, 25, 20, 20, 54,227,110,213, 48, 23, 1,211, 56, 74,171, 49,198, 80,118, 93,233,220, 68,225, +156, 76, 75,222, 95, 58,174,247, 13,239, 86,158, 79, 15, 52,239, 54,130,103,211,192, 7, 54,101, 80, 47, 8, 70,227,202, 37, 78, + 39, 20, 74, 49, 7, 66,221,114,220,180,108, 72,207,158,135, 75, 34,112,151,154,167,125, 70, 89,150,188,102, 44, 82,106,222, 49, + 9,127,189, 55, 96,175,178,232, 36, 97, 79, 73, 74, 11,135,180,188,238, 20, 47, 72, 79,161, 60, 8,195, 80,181,204, 42, 77,145, + 6,110,207, 27,158, 26, 24, 94,155,183,252,204,200,240,234,220,243,124, 22,120,173, 42,184,172, 22,212, 94,162, 4, 60, 53,200, +185,177,104, 33, 84,157, 86,129,136,133, 73,211,169,141,214,205,143,197,101,127,232, 85, 55,145,223,111,125,180,172,182, 10, 82, + 79, 63, 79, 41,157,199, 8, 73, 21, 44,163,212, 80,119,137,151,109, 3,131, 84, 81, 57,135, 38,160,235,192, 80, 72,142, 17,157, +125,136, 63,147,232,126, 4,198, 78,160,250,209, 99, 31,241,227,174,245, 47,124, 80,167,163,202, 85, 26,122,157,145,129,239, 76, + 83, 76,215,102,207,116,231,212,214, 41,250,168, 54,222,208,143, 46,108,221,196, 0, 45, 0,147,241,185, 47,127,150, 87, 31,238, +194,205,135, 93,251,221, 71, 58,130,247,144, 41,240, 89,180, 27,236,247,224,104, 5,182, 59,228,155, 42, 6,255,196,196,162,182, +249, 48, 27, 48, 72, 16,101,205,178, 90, 51,206,199, 72,157,147,138,136,164,124,112,248,128,101,185,226,198,253, 93, 88,175,226, +130, 85,115,214,153,102, 53, 54,120, 91, 1,125,172,107,113,206, 81, 55, 45,213,122, 65,221,214, 56, 31, 40,215,109,172,208, 85, +198,165,173, 1,193, 11, 60,138, 65, 49,192, 57,207,249,144,194,242, 43, 49,249,208, 81, 69, 12,253,120,251,149, 78,146,246, 49, +141,247, 46,167,161,149, 17, 80,120,122,240, 95,186,198,139, 87,158,227,220,165, 49, 74, 72,166, 39, 43,154,229, 17, 23,175,108, +210, 88,199,249, 11,219,252, 91,127,247,183,185,191,191,199, 87,126,247, 27,113,151,213, 31,161, 3, 42, 25,233, 26, 69, 63,126, +143,214, 31, 10, 50,135,223,248, 30,255,247, 71,150,251,249, 95,255, 5,206, 15,134, 92,190,112, 1,157,166,209, 44,102,144, 19, +214,241,175, 80, 38,193,152,216,154, 13, 68, 31,227,100,144,196,153,109,223,242,239,252,198,111,242, 63,254,238,255, 1,137,100, + 53,157,242, 15,254,241, 31,241,215, 62,245, 52, 47, 63,120,200,222, 91,135,224,231, 29, 87, 31, 24, 63,140,215,109, 4,156,204, + 64,218,104,247, 57,159, 71,225,142, 79,218, 71,159,240,208,137,123,247, 9, 90,195,107,111,243, 15, 95,123, 27,145, 38,241,225, +172, 27, 68, 54, 64, 84, 11, 68, 22, 19, 5, 9, 92,251,249,207,147, 11, 73,166, 5,115,235,184,249,221,183, 8, 42, 33, 96, 9, +235,234,147,219,110,243, 5,124,247,109,150, 23, 54,249,149,107,231,216, 40, 18,244, 83, 59,124, 35, 9,220,123,247, 30,172,102, + 48,155,119,163, 42, 96,115, 12, 71, 11,176,179, 15,127,206,218, 66, 1,159, 27,245,248,181,141, 33,127,248,193, 46,175, 77,203, +199, 18,229,206,180,104, 81,178,126,235, 29,254,189, 95,250, 87,249,213, 43, 87,248,222,157, 15,248,202,201,148,160, 51, 66, 57, +195,215, 41,193,181,248, 34,199,219,134,175,238, 62, 96, 35,215,252,246, 19,134, 68,106,196,112,130, 84, 26,153,123, 6,118,200, +206,234,128,239,155, 6,163, 13,185,148, 72, 31, 72,147,148, 53,240,245,241,121,158, 20,130,155,111,127,139,244,250,151,249,218, +219,142, 43,155, 99,206,111, 11,110, 79, 29,119,173,228,102,235,152, 9, 73, 83, 36, 32, 5,230,220, 5,204,238, 29,150,171, 5, + 65, 74, 6,169, 97,186,136,159,185, 12,150, 11,202,145, 72,131,146, 22,227, 51,114,235, 88,147,177, 47, 2,131, 60,103,221, 2, +227,110,141,171,197,135,166, 79,143,227,151, 5, 16,170, 10,238, 31, 64,158, 66, 54,140,103,142, 74,161,113, 44,108,224,165,116, + 65, 38, 52, 39,105,198,197, 98,192,180,142,200,229,212,228,148,182,225,184,169, 24,104, 67, 38, 4,243, 0,219, 38, 97,209, 21, +152,133, 78, 24,229, 25, 78,104,230, 74,209, 26,201,251,174, 97,220, 88, 18, 99,168,188,163, 41, 82, 90,162,100,114,161, 21,171, +214,147,107,137, 13, 34,226, 48,128,158,138, 9, 89, 91,150,108, 37, 5,119,155,146, 60, 49,148, 1,242, 16, 71,135,109, 16, 28, + 5,200, 43,203,103, 6, 41,223,157,213, 92,235,105,238,183,146, 23, 18,199,205, 82,178, 65,203,145, 74, 56,215,214,172, 76, 66, +181, 94,113, 36, 36,206,149, 52,222,146, 8,203,145,109,217, 86,130,131,170,102,146, 24, 94, 46,167,108, 38,154, 89,235,201,141, +160, 89, 46,120,115, 62,101,167, 24,208, 42,197,126,213,114, 76,224,165,202,145,104,199,107, 94,177,145,192,162,180,228, 89,142, +162, 97,182,242, 92, 30, 38,124,176,104,248,153,190,228,141,185,229,201, 68,240,176, 85, 60,171, 27, 94,159,195,115,121,194, 92, +165,220,106, 43, 66, 47,237, 76,196,154, 56, 58,170,218, 24,234,214,213, 99, 54,211, 63,197,107, 93,129,182,192, 8,180,131, 84, +179, 44,163, 5,184, 74, 52, 70, 73, 78,170,134,171,147, 28,103, 29,202, 67,229,186,159,165,143,221,251,224,200, 92, 96,237, 79, +129,112,174, 19, 71,235,108,185, 87,117, 84,240,252, 88,116, 62, 59, 23,195, 79,120,185,127,177,131,186,237,204, 90,172,232,120, +241,167, 64,183,110, 6,184,110,206,156,196,188, 61, 19,161,249, 97,175, 58,222,145, 87,191,246,221, 24,196, 79,171,124,255, 24, +131, 85,105,200, 61, 12,134,144, 36,176, 9,220, 95,156, 93, 79, 49,138,115, 75,162, 17,156, 56, 21,199,137,189,108, 66,101, 89, + 85, 48, 26,166, 36,186, 79,101, 75,102,229,130,195,213, 49, 55,238,220,135,227, 67,130,179,103,127, 15,176, 55,171,216,189,127, +135,114, 62, 71, 38,154,227,195, 99,102,213,138,101,185,102,209, 54,204,203,134, 89,105, 9, 8,158,191, 50, 68, 7, 69,150,229, + 60,249,204, 14,219,163, 62, 71,179,134,219, 47,223, 60, 83,195,179,182,227,101,126,244,126, 62, 6,250,163,235, 62,160,161,144, +103,120, 57,145,130,244, 92,184,124, 1,219, 88,218, 16,216, 59,184, 79, 18, 26, 54,199,151,209, 74, 98, 93,206,106, 85,113,113, +107, 11, 46,244,225,224, 48,118, 56,156,238,172, 95, 57, 83, 91,114,116,155, 89,254,216,135,237,173, 63,252, 58,111,253,184, 61, +145, 13, 98,226, 49,216,140, 24,135,209, 32,234, 18, 68, 21,147,136,230,247, 9,255,221,255,246,207, 64,106,254,224,149, 55, 35, +182,162, 7, 52, 58, 6,240,193,168, 67,166, 42,200, 4, 60, 60,140,166, 70,117, 27,215, 28,162, 62,182,254, 49,160, 27,173, 9, +137,142,163, 23,173, 99, 98, 87, 87, 80,100,136, 52, 33,132, 78, 40, 41,212,241,223, 74,114,251,123,111,197,251,178,174, 8,105, +210, 5,241,179,128,254, 67,179,116, 95,145,174, 87, 60,169, 36, 89,175,143,149,112,237,252, 6,247,238, 29, 16, 86, 37,236, 29, +193,176,224,133,193, 6, 23, 47,247,184,163, 20,239,190,249,206, 25,112,168,110,226, 22, 77, 13,255,218,198,144,207, 14, 55,153, +143, 23,188,246,238,126, 12, 96, 33,196,102, 12,113,189,194,114,205,195,245,140,111, 60, 52,188,221, 27, 17,178, 30,161,138,230, + 61, 62,149,184,218,224,106,143, 5, 92,240,252,222,238,140, 47,101,247,120,214, 24, 84,145,161,210,113,167,253,225,216, 94, 44, +113, 70, 99,116,194,148, 64, 38, 21,149,119,100, 73,198,103,183, 71,220, 45, 87,136,237,243,188,250,218,119,120,227,254,132, 47, + 61,241,105, 38,147, 45,230,105,202,221, 0,239,229, 25, 33, 55,204, 67,202, 36, 79, 25,140, 28, 75,127,145,254,209, 62,231,219, +146, 89, 89,145,100, 57,203,166,226, 82,174,187,238, 86, 4, 58, 89,111, 59,134,131,229, 66, 47,101,160, 28, 39,141,165,246, 41, + 34, 73,192,234,179,231,229,163, 1,189,139, 16,162,245, 4,106, 4, 93,155,183,167, 64, 37, 60,159,107,246,214, 45,239,172,151, + 60,157, 24,254,232,240, 62,207,245, 71, 28,122,199, 86, 8,212,214,178, 36,208,247,150, 82,106,158,205, 10,142,156,101,164, 52, + 74,105,166,206, 17,156, 71, 38,130, 96, 18, 10,163, 88, 24,201,155,194, 80, 87, 53,163,126,206,229, 65, 78,138,164, 10, 1,221, + 56, 92, 8,132, 54,138,103, 89,231,232,167, 9, 77,235, 49,222,115,177,215,227,157,213,138, 65,166,153, 89,143,129,200, 51,111, + 27,210,212, 80, 54,146,144, 41,246,125,224,185,161,230,161, 15, 92, 48,112,215,195,166,180,148, 66,176,221,192,162, 13, 72,219, +112,136, 32,109, 74, 30, 46,215,100, 58,174,181,108, 26,246,218,134,212,104, 30, 54, 21, 3, 20, 95, 63, 92,241,194, 48,227,235, +243, 53,151,250, 67,254,217,221, 7, 60, 61, 26,242, 96, 89, 17, 18,197,141,202, 50, 16,130,169, 85, 24, 42,110,161, 24,209,112, +137, 64,158, 27, 84, 82,208,184,134, 29,227,185, 97,115, 54,243,146,147, 50, 10, 88, 89, 18, 46, 23, 37,149,119, 44,116,202, 42, + 73,226, 94, 30,100, 81, 99, 99,255, 48, 62,255,161,254,240, 25,247, 47, 18,107,234, 5, 52,105, 92,252, 60,129, 36, 97,229, 61, +153,247, 76,180,161,170, 45,185,136, 0,105,237, 61,179,178,165,200, 21, 7,179,166, 59, 14,196,217,216,183,237, 68,205,232,152, + 89,202,158, 61,139,143,206, 96, 27,223, 31, 9,238, 63,238,245, 23,115,166,254,161,150, 97,135,130, 23,221, 35, 39,100,188, 97, +153,236,110, 26,143, 85,219, 33, 6,182, 79, 2,186,157, 26,190,200, 83,213,185, 83,222,123, 56, 67,131, 75, 25,219,215, 60, 70, +163, 91, 46,207, 42, 54,173,163, 12,163,245,103, 7,190,235, 84,130, 20,160, 21,201,213, 43,124,241,201,231,185,184,125,149,162, + 55,194,136,140, 15, 78,238,115,239,232,152,102,239,222, 25,245, 66,200, 88, 37,154,132,205, 34, 65, 72, 71, 93,149, 44,214, 11, + 86,117, 77, 93,151,236, 46, 87,220, 63, 92, 80,238, 45,163, 40,144,146,108,111, 79, 24,154, 30,253,162,207,103, 94,184, 64,145, + 37,152, 68,241,237, 55,239,114,240,230, 75, 63, 5, 29,209,159,221, 96,147,116, 42, 72,221, 61, 50,138, 81,209,163,151,245,152, + 77, 79, 56,153, 31,113,126,107,131,205,241, 4,147,104,150,101,131, 13,129,166,105,120,229, 27, 95,239,184,154,221, 40, 66,158, + 81, 65,162,140,176, 63, 83, 5,108,237,255,247,253,160, 58, 42, 9, 73, 76, 74,178, 36,182, 73, 90, 11,182,142,127,203,186,142, +120, 11,213,141, 23,144, 48, 93,194, 98, 17,245, 0,132,138, 26,226,167, 56,139, 85, 25,255,127,103,227, 79,223,173,175,215,103, + 0,202, 79, 50,249, 49, 49,145,139,162, 19, 62, 50, 91, 30,243, 28, 66,117, 10, 83,117, 67,208,170, 19, 76,234, 16, 64, 82,158, + 85,229,178, 99, 82,104, 69,112, 46,238,179, 83,199, 65,211,237, 85, 37,177, 2,158,221, 28,162,250, 61,230,222,243, 86,217,112, +178, 92,198, 68,183,106, 97,210,231,122,127, 72,145,231,204,157,229,160,108, 16,101, 21, 19,139, 52,237,186, 53,134, 89,154, 16, +180,224,119, 79, 42,214,181,131,118, 9,210,159,209,109, 68,138,168, 26,190,125, 60,227,196,192,161, 54,172,235, 18,177, 88, 32, +122, 3,100, 83,162,130, 66,202, 22,105,114,164, 3,233, 74, 70, 46,240,252,230, 24,147,230, 49,217,173,203,104,250,226,214,188, +237, 45,109,154,210, 51,105,180,120, 37,112,208, 68, 97,141,255,101,252, 4,193,199,110,133,189,191,203,157,195,247,121,107,239, + 54,183,246,239,178,191, 94, 81,175, 42,234, 32,232,121, 79,147, 37,212, 89,130, 79, 12,106, 48,132,164,207,192, 11,180,111,241, + 66,176, 21, 44,153,209,244, 67,192, 8, 65, 8, 1,139,196,116,254, 6, 83,219, 50,212,134,195,170,134,117, 27, 61, 31,252, 39, + 3,171, 68,151,233, 10,186,202, 11, 27, 37, 87,211,140,223,121,114,135,191,119,237, 58,231, 50,197, 43,213,138, 87, 79,214,120, +169,152,226,145, 74,243, 65, 83,210, 42,197, 68, 40,174, 38, 25, 67,161,162,229,179, 0,100,188,255,167, 14,146,214,100, 88, 5, +137,214,172, 2, 44, 19,197, 58, 49, 12, 51,195,112, 16, 21,246,122,169,230,216, 90, 18, 4, 1, 56, 92,173,217, 74, 52, 7,101, +205, 36, 79, 41, 91,135,181, 22, 27,160, 85,154,224, 26,218, 32,177,109,139, 48, 9,179, 54, 48,236, 41,170, 74, 32,132,197, 5, + 65, 30, 2,107, 4, 67,235, 88,120, 71,210,182,172, 93,203,134,173, 57,176,150,121, 91,242, 94,109,209,173,229,184, 92,211,148, +107, 22,174,197, 16, 56, 90,213,140, 19,195, 91,243, 21,147, 94,198,219,139, 53,151,132,228,173,249,156, 3, 91,243,157,195, 3, + 50, 35,248,206,241, 17, 79,106,193,157, 0, 33, 56,146, 32, 25, 59,139,209, 73, 52,195, 14,142, 32, 28, 19,173,121,183, 12, 92, +144, 21,199,107,207,197,141, 30,247, 79,214, 36,210,211, 87,154,227,186,164, 72,163,127,125,169, 19, 26,225,226,115,155,117, 12, + 41,107,127,226,160,248,195, 7,238,157,152,140, 54,241,140, 70,225,188,143,213,186,144,132,214,210, 75, 13,107,219,208, 4,135, +212,112, 82, 58,140, 11, 44,154, 54,186,129, 6, 65,104, 58,108, 78, 91, 66,217, 57,136,226,227,179,255, 40,174,157,130,154, 78, +103,159,246,172, 91,252,255,251,160,238, 59, 41, 49,173, 58,222,122, 23,200,219,112,134, 42,116,237, 89,228,246,174,171,214, 62, + 9, 81,223, 1,226,132,234,130,184,138,191,211,214, 93,203,186, 58,227, 28, 54, 54,122,174, 55,143, 41,234, 25, 29,171, 65,249, + 24,176, 76,158,185,155,137,172,207,139,207,127,134,103,158,188, 78,175,215, 67, 27,197,186,170,184,115,112,159,189,123,119,227, +225,123,154, 28, 36, 26,146,132,173, 81,206,118,191,160,159,245,144, 82, 82,217,134, 85, 83,115, 82,150,236,174, 74, 88, 86, 81, +251, 57, 72,212,164,224,252,104, 64, 47, 53, 12,139, 49,219, 59, 27,228,137,102,182,106,248,214,107,119, 89,188,255,131,159,184, +133,243,216, 13,238, 70, 19,157,236,109,136,148,183,247,235, 21, 7,199,187, 60, 56,216,101, 93, 55, 92,217, 58, 71,222,207, 81, +194,243,224,225, 17,255,213,239,254, 19, 94,249,202, 55,187,160,103,226,125, 82,242,236,104,124,132, 57,232, 16, 38,173,143,149, +241,143, 19,247,249, 81,175, 34, 59, 11,138,139, 89,180,225,108,218,174,187,146, 69, 31,128,208,237, 1,239, 98,144,174, 42, 88, +150,221,247,106,232,231,241,193,245, 62,226, 0,230,221, 92,218,119,202, 21,233,169,211,223,169,196, 36,143, 37, 42,143, 5,118, +173,227,126, 60, 77, 42,165, 6,235, 59,139,204,186, 75,244,116,164,133,101, 25, 66, 9,196,186,138, 18,188,213, 58, 6,112, 37, +161,170, 9,173, 37, 56, 23, 3, 58, 68, 3, 14,217,129,118, 78,177, 16,222,131,245,188,225, 53,111,103, 9,175, 84, 53, 83,231, + 97,181,132,121, 25,247,112, 19,120, 48,204,153, 33,120,191,177,113,252, 81, 85, 81,191,191, 41, 17,131, 17,120,203,129,144,188, + 44, 4,107,147,196,189,188, 92, 67, 43, 17,202,116,186, 15, 18,241,255,114,247,102, 63,150, 93,217,153,223,111, 79,103,184,231, + 14, 49,228, 72, 50, 73, 22,139,172, 42, 85, 21, 85, 82, 73,130,160, 22, 36, 75,141, 22, 44,248,193, 3,208, 86, 3,110,219, 13, + 63,250, 47, 51,252,110,192,112,195,176,209, 70,171, 37, 75,213,146,154,170, 42,138, 51, 43,147, 57, 69,198,116,167, 51,238,193, + 15,123,159,184, 55,147, 76, 50,201,178, 90,178, 3, 72, 68, 70,144, 25,113,239,153,214, 90,223,250, 6,101, 17, 91,203,131,237, + 6,117,253,128, 91,215,142, 88, 61,190, 68,216, 30, 57, 88,164,208,136,160,144,214, 34, 11,133,104, 59, 62,233, 45,127,120, 56, +167, 16, 18, 3,208,111,177,219, 11, 86,245,138, 15,186,154, 48, 61, 64, 8,205,144,101,108,134,129, 19,239,185, 16,130,143,100, + 6,147,138,160, 13, 97,146, 19,154, 13,190,174, 9,247, 31,224,127,241, 49,254,242, 49, 65, 14,180,213, 49, 93,153,211, 41, 29, + 11,102,105,248,238,209,156, 27, 55,142,177, 46,199,132,150, 73,240,116,214,161,133,194,251, 1,129, 32, 87,138, 44, 4,154, 16, + 48, 90,243,160, 27, 88, 90, 7,117, 29,143,219,115,178, 25,196,179,150,206,206, 33,144,176,168,248, 31,223,120,131,239,221,186, +205, 76,104, 62, 89, 95,242,206,147, 53, 89,174, 25, 2, 44,219,158, 89,158,227,128, 91, 42, 99, 46, 37,133, 54, 76,132, 68, 74, +131, 37,112,233, 3, 7,202,208, 20, 57, 34, 56,188,212,244, 90,115,233, 61, 5, 10,147,233,216, 95,186, 64,149, 27,150,214, 83, +132,120, 29,158,110, 27,110,205, 38, 60,222,116,204,139,140,139,186,231, 64, 11,140,212,252,221,122,205,224, 28,173,215,224, 3, + 65, 25,148, 86, 88, 31,184,223,195,161, 10,100, 33, 80,134, 64, 7,204,173,227, 52,128,104,182,212, 33, 48,107, 26, 62, 28,122, +238,110,182,124,214, 13,172, 55, 43, 30,247, 61,194,245, 92,214, 45,198, 57,206,182, 61,173, 11, 60,104,122,230, 38,227,147, 77, + 67,107, 61, 79,250, 30, 19,160,189,216, 50,207, 52,247, 30, 60, 97,154, 27,126,113,118, 73, 46, 3, 86,101,244, 93,143, 45, 10, +142,157,231,220,118,220,153, 77, 57, 80,154,191, 89,117,188,148, 5,150,131,228,102,230,121,111,235,248, 97, 41,113, 34, 62,223, +107,175,152,232,192,113, 53,227,141, 50,231,129,135, 46, 35, 89,125,187,100, 6,243, 75, 14, 14, 42, 37,143, 10, 15, 62,145,220, +164, 96,232, 61, 91,235,153,103,154,203,186,167,202, 36,221,224, 9,214,147,201,192, 89, 29, 83, 62,109,231,147,227, 93,226,189, +140,164,107,229,147, 29,249,222,179,227,115, 30,135,105,192, 26,107,203,255,175,139, 58, 36, 55, 57,157, 38,193, 36,228, 31, 69, +255, 67, 27, 59, 43,111,227, 3, 94,136,184,220, 54, 42, 49,214,213, 78,228,159, 38,164,200,118,212, 49, 69, 13, 17,255,110,251, +221,109,109, 19, 75,209, 39,120,100, 60,200,185,217,113,207,228, 51, 12,135,174,135,170,226,230,173,107, 28,207,142, 41,202,146, + 97,240,212,219,154,119,238,126, 64,119,113, 17,139,158, 78, 19,122,145,113, 84, 25,110,204, 42, 14,167,115,166,217, 4,135,167, + 29, 90,182, 93,199,233,166,163, 91,117,208,244, 8,149,145, 95,159,114,115,154,113,109, 54, 99,106, 42, 94,122,229, 21,138, 73, +206,106, 99,121,255,239, 30,242,167,239,254, 5, 60,185,255,212,195, 73,188, 48,244,148, 26, 22, 49,190,151,152, 12, 84,167,164, +180, 89,150, 83,233,130,224, 53,171,117,199,207, 62,120,143, 79,127,242,211, 4,171, 39,169,134, 81, 79, 63, 13,251,244,189,126, +116,176, 19,187, 44,251, 95,138, 60,153, 94,107,121, 24, 39,115,145,108,111, 93, 42,230,117, 3,243, 73, 50, 28, 18,177,160,139, +244,121, 68, 11,132,136,141,223,166,139,231, 98,148, 73,218,100, 35,108,187, 24,220, 99,147,132, 82,132,167, 11,187,148, 73,190, + 39, 99, 34,133, 76,215,140, 34, 5, 12, 69, 27,201,200, 41, 40,162,253,240, 96, 83, 83, 82,199,194, 61,106, 91,115, 19,139,122, +158, 69,219,100, 72,175, 47,201, 56,199,235, 87,200,200,202,239, 97, 56,152,197,107,219, 7,184,220,198,162, 44,163,214, 54, 52, + 61,219,202,196,127,155, 73, 88, 54,241,218, 94,204,162, 68,173,168,224, 98, 5,229, 20,170,114, 23,236,115,177,130,114,130,240, + 3,120, 27, 19,168, 68, 76,108,234,231, 37, 75,107, 17,141, 69,172, 26,132, 10, 96, 20, 34, 12, 49, 98,120,112,144, 73,130,115, + 28, 59,193,145,239,200,109,141,104,123,134,102,205,178,235,249,105,211,211,151, 57, 42,159,224,165, 38,120,135, 84, 18,215,183, + 60,193,208,154, 2,170, 5,193, 76, 8, 66, 68,144,164,200,162, 25,201,242, 18,127,177, 36,232, 64,152,222, 32, 8,193, 80, 42, +254,235,131,146,255,252,118,201,119, 15,115, 84, 85,240,241,137, 37,147, 29,202, 58, 38, 90, 19,136,249,215,222,123,186, 16,112, + 82,240,164,111, 89, 15,158,229,120, 29,174,187,200,246,127,166,152,239,238, 33,153, 38,246, 84,220,101, 0, 83, 82, 77, 37,133, +208,252,117, 83,243,191,156,159,211,213, 61,235,186, 69,107, 73,161, 53, 10,137, 81,129, 45, 80, 72,197, 53,101,112,233,180, 22, +218,160,164,162, 23,146,198, 57,230,101, 21,139,117,240,244, 82,114, 14,180, 1, 38,133,161,146,146,243,206,226,189,139, 91, 72, + 4, 85,174,121,180,108,184, 49,201,185, 88, 55, 40, 41, 17, 82,112,222,245,200, 32,184,112, 61,125,231,241, 90,131,214, 52, 67, + 67,231, 28,219,190,199,135, 64,150, 41,206,235,142,128,231,253,203, 45,249,176,101,233, 99,254,251,169,183,216,102,205,224,225, +100,117,193,103,174,167,217,108, 88,110,214, 88,224,100, 89,179, 50,146,117,107,169, 7,203,121,221,225, 16,201,179,193,227, 86, + 91,130, 54,180,203, 21,193, 7,218, 39, 43,130, 81,216,186, 35, 12, 29, 97,186,160,169,183,172,116,198,111,205, 42,150,155,134, +206, 75, 94,158,228, 52, 93, 75,129,133,188,224,142,239, 57,241,138,174, 95, 97,109,207, 16, 96,145, 23,228, 66,210,218,232,210, +247, 32,136,200,125,154,100,241,126, 24,161,239,111, 98, 89, 62, 42,173,178,184, 90,193, 13, 9,185,181, 87, 40,192,122, 24,168, +123,139,181, 2,111, 3,195,224,217, 52, 14, 33, 2,182, 79,161, 96, 93, 31,159,159, 46, 14, 99,144,146, 78,247, 93, 87,125, 26, + 2,174,166,244,196,102,180,254,133,204,220,254,241, 20,117, 83,196,244, 32,228,151,230,117, 63,119, 90,207,246, 32, 80,165,227, +129,242, 67,100,172,219, 62,234,110, 69, 58, 34, 33, 77,135, 90,236, 96,244,164, 41, 39, 36,104,101,132,232,165,220,155,244,211, +212,101,197, 14, 94,127, 54,181,205,167,137,223, 37, 41,152,243,145,176,225, 1, 97, 56,203, 37, 47, 47,230,244,221, 64,176,150, +187, 79, 62,229,131,123,159,236,180,144, 58, 78,131,147,210,112, 56,201, 89, 76, 43,102,249, 28, 41, 37,214, 14, 44,251,142, 77, +215,243,164,238, 99, 30,187,206,224, 96,194,157, 69,201, 97, 89, 82,230, 37,243,114,206, 91,223,123,157,235,179,146,204, 8, 62, +120,239, 99,222,251,228, 35,184, 60,249,166,112,200,158,110, 51, 69,241, 86,115,178,178,228,160,200,200,181,161, 13,129,143, 30, + 62,224, 79, 63,124,143,247,254,230,239,192,109,246,150,144, 38, 22, 43, 41,227,212,238, 82, 65,175,219, 20,247,153,154, 38,163, +190,121, 39, 93, 20,177,136, 78,167,176,217,166, 41, 57,192,164,138,231,181, 79,222,246, 82, 70,103,166,182,191,178,239,197,199, +104,225,120,142, 18, 44,159, 21,241,245, 5, 82, 1,110,227, 62, 61,249,223,211, 52,113,119,175,216,161, 67,251, 81,139, 87,225, + 13,114,215,224,133, 61,214,171,115,177, 48,236,191,223,253,191,123, 31, 39,243,100, 97,138,115,145,112, 39,211,100,158,114, 5, +174, 86, 25,125, 63,218, 95,193, 43,183, 80,229,140, 27,101,197, 54, 23,240,228, 50,233,204,211,185, 92,204, 35, 18, 20,194,206, +132,102,181,142, 73,123,155, 26,174,207, 33, 4,196,172,136,175,121,219,166,102,110, 27,139,121, 82,153, 8,231,163,157,229,249, + 26,113, 48, 71,228, 38, 30,183, 77,141, 24,250, 24, 13,170,210, 74,164,183, 64,224,167, 93,207, 27,198, 80, 17, 80,125, 75,211, + 90, 62,169, 91,126, 58, 56, 62,177,142,235,243, 25,223, 41, 42,222, 94, 28,161,134,158,181,247, 28,116,151,124,234, 76,108,172, +102, 7,145, 56,184,184,193,143,143,143,185,223,172,240,189, 35,212, 91,194,253,207, 8,153,137,124, 10, 39,248,147,155, 37,223, + 59, 46, 89,228, 26,147, 73,126,182,246,232,213, 41,165,209,116,125, 71, 78,160,151, 38,150, 99,109,120,210,109, 25,132,196, 14, +150,190,239,232,214, 49,255, 65, 52,245, 83,197, 92, 60, 85,216, 61, 2,141,192, 94, 77,235,216,142,159, 7,195,159,122,199,159, + 55, 61, 53,169, 73, 20,130,237,186,129,204, 96,113,136, 32,201,149,226,186,210, 12, 4, 94,214, 5,185,206, 89,135,128, 70, 97, +181,230,176,172,216,122,199,160, 13,235, 32,112, 82,176,246,129, 13, 49,161,113,150, 25, 42,163,232, 7,199, 48,120,172,128,102, +176, 17, 58,111, 7, 14, 50, 21,141,180,172, 67,245, 22,213,119, 8, 33, 57,181,158, 94, 72, 6, 17, 73,215,117,223,114,233, 3, + 23, 46,176,217, 54, 76, 76,198,197,166, 97,161, 28, 15, 90, 75,233, 58, 30,110,107, 28, 61,219,110,203,159, 45, 47,184,168,155, +216,144, 54, 17, 70,118,231,171,248, 60,220,180,208,247, 49,201,174, 31, 98,200, 86,211, 17, 86,171,120, 15,157, 44, 99,145, 93, + 94,198, 21,195,233, 50, 26,187, 12, 1,108, 67,168,230,116,237, 26,134,158,133, 12,156, 15, 3,133, 17, 4, 27,157, 11, 55,205, +138, 90,192,147,166,230,208, 24,206, 91, 75,158, 5,166,166,192, 5, 16, 90,179,181,150,123, 99,152,202,164,136,190, 36,215, 15, +163, 75,162, 76, 68,225,175, 83,103, 76,182,139, 20, 31,221, 73,247,239, 65,239,163,117,122,223,209, 53,142, 70, 6,154,186, 71, + 40, 69,223,244, 73,174,214,196,223,235, 54,169, 64, 63,199,117, 85,243,140,220, 40,125,253,130,205,200, 63,142,162,174, 83, 22, +176,142,214,170, 95,197, 42,126, 62,213,120,239, 97,218,165,192,150,171,253,185,221,177, 92, 66, 58,112,195, 62, 20,236,158,110, + 14,180,121,122, 90,191,154,184, 83, 66, 92,231,118, 80,238, 62,132, 47,216,193,162, 33,193,180, 99, 23,166, 4, 46, 24,234,208, + 48,241, 61,203,205, 35, 46, 54, 39,108,124,199,224,119,150,130, 89,169,185, 86, 77, 56,172, 74,166,217,132, 66, 90, 78,169,235, + 0, 0, 32, 0, 73, 68, 65, 84, 27,108, 8,108,135,150,139,237,134,179, 77,135,219,246, 48,128,152,228, 92,159, 23, 92,171, 10, +102, 69, 69,174, 50, 6, 2,175,189,122,135,249, 52,227, 98,213,177,222,212,188,243,209,123,176,190,124,174,246,246,171,235,186, +219,243, 3,144, 48, 95, 80,205, 74, 14,178,156,160, 20,171,186,229,201,102,203,242,228, 18, 46, 79, 83,243,147, 46, 88, 61,162, + 32,169,248,140,133,193, 36, 66,158,237,119,251,229, 47,156,212, 83,215, 58,194,226,232,167,239, 4,157,104,252,102, 22,245,158, + 70,198, 27, 80, 22,224,154,157, 54,116, 83, 67,189,141,231, 56, 58, 73,128,206, 83, 99,230,226,121, 51, 58, 54, 8, 46,194,226, +148, 42,122,217,207,170,116, 46,109,146, 47, 57,162, 56,117,111,133, 16,194,211,133,221,166, 66,218,251,221,154,232,107, 48,117, + 62, 71,140, 51, 58, 54,164, 99, 65,246,196,227,233, 92,226, 61, 4,152, 47,120,235, 91,175,243,107, 71,183,184,153,151, 76,253, +192,227,211,232,206,118,149,147,144,151,187,166,202,218,200, 11,209, 38, 73, 63,199,172,231,128,152,228,177, 72,103, 10, 46, 46, +163,217, 19, 62,146,230,172, 67, 12, 3, 98,176, 8, 23, 82,118,193,140,127,254,250,109, 66, 54,112,250,217,229,238,149, 91,119, +245, 30,124,215,241,231,141,197, 13,142,198, 8, 30,122,203,251, 18, 62, 81,240,104, 99,185,121, 48,225,119,111,188,196,245,188, +224, 85,105,152,175, 47,168,221,128,217, 62,230,209,166,129,182, 39, 28, 28,240, 47, 95,191,206, 31,189,121, 27,161, 22,188,223, + 46, 99, 70,188, 84,132,135,247,225,248, 26, 28, 29,241,122, 85,240,237, 69, 78, 43, 4,103, 29,220,247,240,248,211,135,152,224, + 49, 4,214, 82,130, 16, 56,161,120,104,123, 10, 33,144, 42,103,232, 7,142, 50,104,236, 64,183,105, 16, 67,159,244,198,241,116, +238,127, 22,105,167,254, 84,177, 31, 44, 98,219,211, 78, 13, 78,166, 66, 47,227,196, 37,130,163,217, 52, 52,198, 80, 72, 34, 63, + 70, 75,230, 62, 80,101, 6,235, 44, 83,105,152, 72,197,214,123,122,233, 17,186,164,182, 61, 94, 74, 30, 9,197,178, 23,172, 26, + 75, 94, 26,182,110, 64, 75,193, 76,105,188,243,180,221,128,246, 30, 63,120,242, 16,240, 8,164, 8,176,237,152,181, 29,165,179, +168,224,104,115,197, 73,239,216,184, 64,235, 28, 27, 33,232,156,231,126,183,102,144, 25,149, 86,200,190,225,222,106,195,249,208, +178,238,123, 54,182,163,235,123, 62, 91,175, 57,107, 45, 92, 46,227,245,119,177,142,241,219,193, 71,181, 81, 63,196,123,202, 54, +241, 26,243, 67, 84,141,228, 57,156,158,199,251,111,181,138,215,196,118, 27,135,159,109, 3, 34,198, 37, 35,162,251,231, 89,223, + 51, 15,240, 51,231, 89,116, 29,235, 32, 88,214, 91, 30, 4,133,182,142, 39,214,161,188,231,174,179,252,197,118,203,107, 50, 96, +101, 96, 51, 12,252,101,111,227,229,138,143,107,184, 60, 71,234,156,151,143, 15,152, 29, 77,168, 15,231, 4, 39,211,250,244, 5, +208, 65,231, 34, 73, 88,184,221,189, 2, 41, 95,100, 72,171,222, 16, 27, 24,198,148, 75,129,235,250,248, 59,172,141, 5, 93,217, +157,204,247,203,102,168,209, 9,117,159,168,247,194,180,162,127, 12, 69,221,251,180,175,216, 17,135,190,209,207, 64,198, 93,135, + 27,226,131,168, 75,218, 16,199,110, 23,225, 34, 9,126,127, 0,189,130,136, 71,237,185, 76,208,188, 16,241,117,165,155, 63, 66, +156,163, 55,124, 58,137, 98,183, 51,143, 77,129,137,147,169,244,201,160,127,120,250,196, 76,102,148,243, 9, 85,169,200, 53, 20, + 38,222,232,151,214, 19, 92,180, 14,172,202,130,235,179, 41,243,162,162,204, 39, 41,173,171,231,124,187,230,164,110,217,110, 59, +132,245, 80,104,110, 45, 10,110, 86, 21, 85, 81, 98,164, 70, 74,205,209,225,171,160, 74,250, 32,120,248,112,201,195,199, 15,249, +232,254, 61, 88,158,127, 51,232,105, 31,133,240,196,155,114,126, 72, 85,149,232,148, 91,126,210, 52,108,158, 92,194,217,131, 20, +180,147, 90, 80, 97,210,234, 34,117,184, 89, 34,132,141,176,187, 75,123,238, 97,120, 62,244,174,229,174,113, 29, 93,253, 70, 72, +106, 50,141, 95,151,243,184,227,118, 46, 74,139,236,144, 32,172, 33,157,244,104,231, 24,247,224, 1, 84,145, 76,135,210,117, 83, +153, 56, 69, 84,217,142, 91, 81,165,102,161, 72,174, 79,222,197,255,103, 36, 77,202,196,187, 24,228, 30, 9,208,196,189,155, 52, +169,121,200, 32, 31,149, 4,207, 63,246,226,170, 81,121,186, 97, 9,251,141,141, 72, 1, 70, 46, 17,170,204, 12,249,171,111, 17, +206, 47, 82, 53, 17, 80,206,184,249,202,109,102, 69, 69,166, 10,140,132, 79, 79,206, 97,187,142,175,105, 76, 78, 20,130, 76, 9, +110,107, 88, 53,251,107, 43,153,204,151, 28, 28,205,160,152,197, 9,220,135, 68, 24, 84,136, 20,205, 43,246, 27, 62, 60,255,213, +219,111,241, 47,222,252, 46,191,119,253, 38,239,172, 78, 56,191,216, 92, 53, 56, 87, 54,150,222,227,109,207, 7, 97,224,207, 6, +193,217, 52,231, 1,158,115, 47, 24,108, 64,230,134,223,153, 46,184, 38, 13,197,224, 41,183, 23, 56, 4,210, 7, 84,127,201,163, +229, 25,223, 95, 28,243,251,223,190,193,155,215,231,156,108,122,126,210, 65,200, 6,194,201, 25,225,244, 81,116,194,155,223, 98, + 57, 59,224,179, 65,240,216,193, 71,173,231,211, 85,207,185,133,220,121, 90,219, 70,110,177, 52,180, 2,132, 16, 32, 13, 50, 56, + 22,153, 33,247, 3,202,246,132, 48,208, 46, 55, 8,239,159, 2, 67,197, 51,224,168,124, 22,150,183, 61,172, 54, 8,159,208, 64, +149, 26, 49, 36, 88,135,235, 58,214, 66,144,107, 67, 55, 12, 44,140,230,178,239,120, 75,231, 4, 99,120, 40, 36, 85, 97, 48, 86, + 80, 7,207,133, 54, 60,118,158,199, 27,203,214,123, 90,226, 37,238,149, 36,243, 30, 23, 60,218, 58, 46,235,142,185,148,184,222, +178,181, 3,155,245,134,126,219, 48,107, 7,140, 31,208,222, 81,132,232, 65, 95, 86, 57,119,166, 25,111,148,134,219, 69, 70,222, +247,172, 61,156,247, 13,239, 53, 91, 62,108,107, 30, 13, 29, 39,182,231,241, 96,121,220,108,121,112,121,198,210, 9,196,201,147, +216, 36, 95, 92,198,235,146,189,208,173,164,144,136, 60, 20, 23,229,155,163,194, 98, 31,145,218,123,110, 6,239,146,135,134,132, + 34, 35, 92,108, 8,133,230,161,247,220, 14,158, 71,213,156,118,123,201,251, 58,167,116, 29, 91,107,217, 10,197,165,119, 56,215, +115, 17, 2, 15,187, 30, 53,120, 78,219,154,251,193, 63,197,139, 58,194,243,118, 49,225,119,230, 19,126,237,224,136,223, 60,152, +163,103, 57,247,114,149, 86, 98, 47,176,250, 19,196,250, 50, 42,147, 70, 95,143,113,101,107,251,184, 82, 27, 18,147,221, 15, 73, +230,236, 18,212,158, 2,195, 94,244, 25, 60, 62,155,198,191, 75,253,197,132,220,127,180,240,251,213, 68,243,180, 85, 30, 90, 39, + 6,115, 98, 11,127, 25, 81, 64,138, 52,125,141, 33, 42,201,222, 85,133, 29,204,106, 68,124,206,143, 63,195,164,234, 46, 19,236, +234,146, 99, 80,158,195, 75, 7,112, 52,133,101,189,243, 65, 23, 50, 77, 30,209, 87, 56,154,180,236, 17, 28, 38,101, 44,236, 38, + 75,221,149,125,250,245,154,146, 27,119,110,240,202,252, 16,109,178,184,214,237, 91, 78,183, 93, 42,234,146,235,147,130,107,213, +140,210, 24, 36,138,206, 15,172,251,154,243, 77,205,197,101, 13,189, 69, 40,197, 43,243,130,151,143, 38, 28, 84, 37, 70,104, 50, +157, 83, 84, 83,254,211,223,255, 1, 63,126,243, 8,169, 21,127,241,211, 19,254,242,227,191,163, 89, 95, 68,189,242, 47,179,179, + 30,177,162,234, 16,142, 14, 40,141, 70, 9,120,188,174,105, 87, 27,184,184,136,197,121,212, 91, 74,145,136,114,121,220, 29,233, +189, 34,110,212,142,245, 62,118,194,207, 67,113,236,142, 0,138,220, 63,119, 58,222, 48, 38,139, 55,154,117,145, 16, 87,111, 64, +151, 17,249, 9, 42, 90,127, 14,109, 44,106, 33, 62,188, 17,169,185,168,242,216,104, 76,146, 4, 70,171,248, 59, 42, 19, 31,198, + 70, 38,182,121,216,153, 16,217, 68,192, 20,106, 15,194,243, 81, 58, 35, 68, 68,114,148, 1,153,237, 94,255,115, 61,197,147,235, +222,216, 84,122,187,199,122,245, 79, 55, 54,227, 49, 29, 43,199,181,235,252,240,205,215, 57,249,224,227,248,125,231, 33,203, 56, + 61, 92, 80, 86, 11, 46, 3,188,223,118,116,143, 31, 68, 38,183, 17,144,149,208,110,184,118, 60,231,247,143, 42,110,101,154, 66, + 5, 78, 46,215,241,191, 13, 77,132, 24, 69, 72,146,205, 99,254,217,241,171, 28, 79, 12, 15,158,156, 70, 67, 27, 19,163, 64, 73, +211,171, 48, 26,208, 44, 22,134, 63,254,193,143,248,219, 39,103,220,117, 61, 15, 30,159,198,200,224,177, 65, 73,210,176, 49, 89, + 42,120,201,153,201,240, 72,110, 2, 63,170, 50,110, 20,130,169,148,188,220, 7,228,208, 32, 49, 52,190,229, 0, 9, 89,206,203, +194,177, 25, 28,157,207,216,132,192,191, 62,233,120,210,119, 4, 83,194,172,140,199,110,189, 37, 72,135,206,143,248, 48, 72, 46, + 7,248,100,176,172,183, 17,181,105,234, 26,134,192, 36, 19,116, 78, 32,114, 77, 70, 12,136,154,168, 12,165, 20, 42,192,205, 16, + 19,178, 30, 53, 61,170,115, 72,118,133, 93,125, 65, 65,127,182,176, 51, 88,196,182,129, 46,217,127, 75, 5,185,185, 74,236, 10, +181, 99,179,220,178, 21,176, 10,158,185, 17, 8, 93,176,178, 61,103,182,229,124,112, 88,109,120,191,239, 80, 66,240, 68, 9,206, +154,150,117,240,216, 44, 99, 93,183,100, 97,192,123,168,155, 14,183,109,168,140,138, 54,202,131,229,100,179,230,108, 91,211, 52, + 13, 19,107,163,211,156,181, 4, 15,153, 49,220,152, 78,184, 49,155,112,108, 12,151,131,199,202,128,168, 27,222,111, 55,132,161, + 33,244, 45,222, 89,232, 26, 66,189,134,243, 83,196, 96,225,228, 28,218, 22,177,169, 17,146, 8,179,135,164, 6,217, 47,232, 95, +151,113, 46, 71,211, 31, 15,133,137,207, 82,239, 88, 26,131,234,182, 60, 54, 25,175, 14, 53,181,201,185, 59,180,204,148, 96,105, +123, 78,156, 67,234,156,239,248,150, 75,239,249,168,109, 8, 30,222,146,146,133,144, 92,122,199,155, 38,227, 87, 38,134, 91, 38, +199,168,128, 17,154, 75,223,115, 87,104,156,208, 17,189, 82, 89, 42,206,246,249,104,165, 73,211,186, 50, 96,219,196, 93, 73, 12, +246,253, 24,242,167, 2, 89, 82, 16,216,215,217,231,107,253, 12, 4, 47,159, 46,246,254,255, 11, 69,221,185, 47, 46,232, 87, 15, +197, 4,139, 7,249,197,112,201,213, 30, 34, 60,221, 5,238,235,112, 71, 25,149, 25, 63,167,255,238,252,110,210,145,137, 72, 39, + 45,211, 87,111, 49, 45, 50,154, 39,235,100,237,103,119, 48,116,231,119, 18,170,241, 53, 23,147, 4,131,202, 29, 84,237,159,121, +152,231, 19,236,108,198,237,131, 35,148, 16, 56, 31,184,216,108, 56,171, 59,148, 86,148, 74,113, 52,201, 40, 77,134, 86, 10,239, + 28,219, 97,203,197,182,230,193,170, 78,177,166,176, 88, 20,188,116, 88, 50, 47, 74,140,201, 98,230, 60,130, 27, 7, 51,126,251, + 87,191,197, 98, 58, 99,106, 20,239,222,219,240,206, 47, 62,196,214,107, 56, 59,121, 46,188,251, 66, 59,165,249, 20,200,120,237, +199, 63,224,215, 95,126,157, 91,179, 5, 65, 58, 90,215,209,124,250, 16,252, 38,237,206,139, 84,204,211,241,108,235, 72, 34, 28, +139,184, 20, 17,150,203,205,206, 11,249,139, 46,246,241,220,143,146, 77,253, 12,194,226, 71,123, 95, 19,111, 68,157, 39,107,224, +144, 98, 99,137,134, 67, 38,143, 77,217,200, 7, 48, 69,108, 20,117, 98,144, 79, 77,146,170, 40,200, 21,114,146, 35,180, 66, 26, + 69, 24,207, 33, 41, 48,104,176,241,223,140,112,154, 78, 48,254, 32,163, 49, 81,110,146,244,164,139, 23,135, 78,202,129,231,133, + 1,233, 81,159,191, 87,216, 71,207,234,103, 31,120, 34, 77,235,227,199,118,205,201,199,159,238, 96,127, 66,108, 88,143,103, 60, +201, 43, 78,135, 45,157,181,208,109, 34, 84, 58,254,204,131, 67, 94, 91,104, 50,163, 9, 1, 62, 89,246,108,181,129,213, 5, 76, +230,208,213,241, 61, 8,193, 31,190,254, 38, 63,124,227, 85, 74,239,184,215,173,232, 78, 19, 92,218,237,145,199,140, 70,100,154, +251, 23, 45, 31, 46, 31,241,192, 76,184, 11, 44, 55, 13, 97,179,141, 58,111, 41, 63,159,130,102,123, 66,208, 28, 21,240,134,210, +188, 81,149,188, 49,159,210,121,203, 13, 37, 81, 46, 66,157,153,146, 76,117,134,240,150, 30,144,125,205, 79,159,156,240,111,206, + 59, 30,116, 77,132,221,117, 70, 16, 6, 42, 77, 48, 18, 46, 47,217,108, 46,121,141,130,207,182, 3,125,221,208,116, 3, 85,219, +192,118,197,145,148, 8,153, 81, 77, 12, 90, 72,188,130, 3, 64,104, 69,142, 96,130,128,161, 37,195, 33,133,224,162,173, 81,131, +101,164, 8,236,255,217, 47,242,159,219,185,251,184, 99, 23, 46,128,214,136,210,196,128, 35, 37, 16,237, 16, 55, 78,118,224,210, + 57, 30,116, 3,109, 24, 56, 13,142, 51,111, 49, 66,240, 81,223, 48, 17,130,143,189,227,209,170,166, 53, 37, 79, 54, 75,250, 16, +168,125,207,196, 69, 87, 75, 97, 29,167, 67,199,114,187,165,173, 59, 62, 93,157, 51,244, 29, 67,112,172,251, 45,166,219,112, 83, + 40,108,146,241,137, 44,103,114, 48,141, 54, 17, 82,112,152, 25, 30,174, 87, 56,215,243,176, 27,168,235,109,188,103,150,231,132, +203, 11, 56, 95, 34,150,107, 56,189, 68,132, 14,209, 70,164, 70,132, 30,132, 65, 40, 31,101,138, 62,161,114,163, 84,245,235, 32, +131,222,167,240,149, 68, 0,237,134,132,140,246,116,194,131, 13, 92,106,197,118,179,129, 32, 89, 91, 71, 23, 28,232,156, 31,251, +134, 11,149,241, 27,153, 96,134,226,183, 84,148,159, 86, 67,205, 45,161,208,120,126,101, 58, 97,145,130,210,182, 67,199, 84, 74, +126,178,105, 8,133,142,210,183, 34,135,249, 60,145, 92,247, 82, 63,159,154,214, 83,243,210,182,113, 88, 24,119,227,157, 77,255, +205,255,191, 52,228,202, 47,159,128,191,228,247,252,195,155,207, 24,189,199, 90,126,166, 83, 82, 50, 86, 94,147,168,255, 50, 61, +221,195, 23, 9,241,247,222,138,251,130,130, 62,194,223,201, 4, 4,201,206, 46,118,172,112, 87, 38, 49, 22, 6,205,230,231,119, +227, 3,121,219, 38,210, 83,218,151, 42,187, 11,132, 65,238,153,181,216,120, 97,132, 4,155,116,225,105, 67, 1,128, 97,205,198, + 89, 92, 80,180, 22,214,173,227,164, 30,144, 8,202, 76,113, 80,228, 20, 38, 50, 97, 91,107, 9, 56,214,109,199, 69,215, 19,172, + 67, 40, 13,165,138,164,184,162,136,161, 33, 16, 67, 36, 92,203,195,179, 53, 39,203,142, 42,239,120,184, 28,176,206, 38,162,158, +251, 6,114,182,221,199,244, 55,190,195,183,230, 11, 38,170, 98, 54, 59,226,120,113, 72, 46, 13,215,219, 25, 85, 46,248,243,247, + 62,130,173,141, 59, 89,246,229,107, 73,106,214, 63,109,168,195, 36, 17,209,244,151,152, 42,140,231,107, 60,189,227,215, 58,157, +171,174, 7, 61,219, 17, 42,100,202, 35, 38,201, 25,221, 22,156,137,133, 93,164,140,248, 60,201,178, 72,205, 93,110,226,142, 44, +207,200,178,216,100, 41,160,144, 26,171, 28,181, 21,228,165,166, 27, 18,146, 52,155, 68, 63,245, 73, 30, 97,245, 38,105, 75,171, + 50, 90, 6, 75, 29,201, 67,121,145,222, 67, 27,157,232,122, 3, 19,226,123,126,170, 27, 79,124, 15, 29,167,221, 88,224,247, 59, +152,189,181,144, 75, 1, 16,227,234, 98,108,112,198, 99,145,103,209,140,105,179,129,195,109,116, 54,211, 9, 45, 40,202,168,195, +159, 86,240,248,140,119, 57,230,222, 12,100,110, 88, 41, 13,155, 75,152, 30, 64,187,141,123,116,239, 97, 93,243, 89,215,113,116, +190,229, 51,159,179, 12, 42,110, 49,106,251,244,121,243, 50,230, 84,219,158, 63,255,236,130,197,225,171,172, 79,207, 98,255,145, +206,249, 83, 83,250,222,159, 80, 47, 89,103,146,249, 97,193,119, 23, 37,153,144, 56,165,249,100,123,193, 91,197, 33, 70,121, 38, +147, 25,222,246,220, 12, 14,143,196,245, 43,190,181,189,228,238,234, 18, 83,205, 8,179,107, 4,100, 52,192,201, 94, 38, 20,115, +130,235,248, 23,179,156,191,189,247, 87,188, 89, 45, 88,150,135, 20,229,140, 39,237,150,107, 66, 64, 89,198,185, 91, 43,180, 20, + 76, 27, 79,143, 99,129,192, 23, 19,194, 48,144, 87, 71, 84, 66,113,190,174,209, 38, 39,198,194,124,126, 34,223,111, 84,174,222, + 87,250, 44,198,247,190, 93, 19,130, 36,100, 10,170,138,160, 12,225, 72, 35,122, 75,216, 52,132, 77,207,210, 57,254,109,231,249, +241,177,229,194, 43, 62,212, 27,174, 77, 42, 62,114, 27,200,166,108,125,160, 8,209,204,103,211,110,232,124,192,234, 14,113,182, +230,237,197, 1,178, 31,168, 76,198, 59,219, 19,174,137,156,114,176,156, 13, 27, 46, 29,220, 15, 45,101,223,112, 92,206,177, 69, +197, 76, 11,182,155, 22, 93, 21, 56, 37,176, 93,135,148,154,135,221,192,106,216,144, 97,105,235, 21,172,215,136,101, 3,171, 21, + 65, 14,136,145, 83, 50,158,215,222, 35, 84, 15, 72, 2, 30,161, 36,193,181,105,205,240,245, 72,175, 97,188,231, 85, 3,107, 29, +137,168,125, 7, 7, 7,177,192,151, 9, 82,207,243,120, 47,200, 36,237,180, 45,179,162,228,147,182, 97, 41, 4, 71,153,226,227, + 65,114, 68,203,185, 87,188,149, 5,250,208,209,175, 47, 97, 50,101,166, 21,107,215,115,210,245,120,145, 86, 35, 34, 68, 57,107, +211,195, 75,215,225,108,147, 34, 82, 19,172,222, 15,177,144, 15, 22,244, 38,222,159, 87, 38, 97,123, 70,101, 90,255,242,122,120, +173,191, 24,250, 15,207,148, 59,251,143,117, 82, 31, 39,112,165,227,222, 81,238,125,125, 53,229,176,251,108, 71, 93,174,253, 18, +182,160,125,250,107,255,140, 92,192,237,193, 33, 87,242,163, 44,254, 78,108,100, 99,187, 36, 53,112, 9,234, 80,196, 7, 38,169, + 83,243,118, 23,252,146,233, 84,188,211,207, 22, 68, 63, 95, 98,224,253,231,100, 87,179, 3,202, 42,167,115, 61,237, 48,176,238, + 26,122,219, 51,211, 25,135,121, 78,145,101, 8, 33,105,135,142, 77,219,114,110,123,150,109, 79, 24, 2,170, 52, 28, 87, 21, 7, +147,130,194,228,104, 37,233,251,129,203,182,225, 73,189,225,238,197, 25,205, 70,242,201, 67,199,187,159, 62,225,253,187, 31, 80, +169,128, 83, 57,109,239, 9,205,234,235, 23,247, 55, 94,225,159,254,202,247,185, 61,191,198,205,195,235,204,103, 7, 44, 14, 14, + 40, 76,134,243, 61, 77,187,228,211,229, 18,206,151, 59,153,213,216, 84,133, 16,215, 20, 89, 58, 31,253, 30, 52, 47,229,231,143, +207,243,246,248,114,239,239, 30,200, 85,156,184,155, 77, 34,160, 16,247, 89, 56, 80,147, 8,187,155, 44,157,184,116, 30, 77, 74, +200,209, 58, 58, 66,205,242,120,141,149, 5,224, 9, 62,112, 84,229, 87, 15,236, 76, 38,171, 77, 31, 8, 66,197,189, 95,112,105, + 98, 78,136, 81,174, 83,140,162, 74,193, 65, 99,196,111,136,223, 23, 33,238,214,242, 34,222,149,251,124, 17,159,184, 2, 9,118, +140,215,244,190,209,254, 30,203,118, 68, 61,174,162,113,247,110,114,159, 16, 16,159,194,136, 38, 51, 56, 92, 64, 62, 69, 9, 65, + 38, 21,110, 52, 81,217,180,145,244,119,185,161, 47, 10, 58,147,208,132, 50,143,238, 91,101, 21,247,128, 58,114, 33,206, 53,188, + 43, 53,247,187, 26,164, 67, 60,124,188, 11,164, 72,240, 59, 18,196,104, 0,213, 91,218,161,142, 43, 47,173, 9, 82, 71,118,116, +146,227,125, 62,163, 92,114,205, 24,126,235,230,148, 91, 89,193,196,100, 8, 37,249,197,208,113, 32,161,202,231, 8, 33,112, 56, +132, 16,244,222,177, 28, 58,154,190, 67, 52, 27,182,167,151,216,205,217, 21,124, 19, 76, 73, 40,103,252, 15,175,220,230,247, 94, +122,137,227,233,130,127,253,228,132, 91, 65,112,186, 61,231,150,130,163,108,194, 52,211,148, 69,142, 29, 98,242, 95, 41, 4, 57, + 62,242, 96,241, 20, 89,134, 14,138,105, 81,177, 40, 51,110,230,146,187,203, 14, 29, 28,198, 75, 12,158,241,113,174,158, 3,199, + 63,245,199, 59, 16, 30, 49, 36,110, 78, 89,112,109,118,192, 31, 93, 95,240, 79, 94, 57,230,164,222,178, 94, 54, 4, 60, 15, 55, + 53, 23,214,115, 62, 88,238,213, 29, 91,165,248,108,121, 70,231, 6, 30,172,207,104,112,172,173,101,109, 91, 30,116, 53,107,231, +248,219,139,115, 38,194,242,168, 94,242,139,186,229,172,222,114,183,169,209,190,227,175, 79,206,249,216,195,208,173,208,120, 78, +240, 88, 4, 74, 72,154, 20,108,243,222,118,203,123, 23, 75, 62,232,182,224, 2,153,237,113,193, 98,211,115, 82,180, 93,124, 15, + 1,132, 13,136,144, 38,115,107, 35, 31,193,249,104,123, 19, 66, 44,252, 95,115,205, 23,158, 69,109,187, 38, 93, 88,169,154, 41, + 17, 7, 41, 49, 18,107,137,114, 81,231,248,149,178,160,238, 26,222,158,228,209,138, 2,207,143,139,156,247, 26,203,143,171,156, +141,237, 41,165,164,177, 14,221, 53, 8,107,121,210,183,252,207, 23,203,216,168, 15, 9,125, 29, 3,190,180,230, 55,111, 86,252, +209, 43,215,248,209, 75, 71,188,121,243, 58,191, 88, 28, 50, 76,170,221,250,117, 24,146, 12,186,216,153,133, 5,183, 99,194,127, +227,130,254, 69,204,119,190,160,182, 61,127, 90,255,135, 45,234,251,147,202, 24, 87,122,213, 2,139,120, 34,145,241,160,141,208, +249, 24,146,178,127,209,248, 17,174,120,246,161,200,231,119,218,159,131,119,109,124,248,155,113, 63,158, 14,170, 86, 73,146, 38, +227, 5, 52, 6,200,140,110, 98, 97,188,123,243,157, 14,123, 31, 17,240,246,249, 5,171,172,200,167, 37,210, 7,182,125, 67,215, +247, 4,235, 57,154, 22,148, 89,129,146,130,193, 90, 90,235, 56,111, 59,214, 77,135,245, 1,101,114, 38,153, 97, 90, 26, 38, 69, +142,137,157, 6, 77,215,178,234, 91,206,215, 61,171,186,230,195,123,247,120,247,222, 7,172,150,143,184, 61,187,201,245,234, 6, +139,131, 99,238, 93, 60,138, 19,217,139, 94,116,142,136,138, 28, 46,120,229,218, 33,185,202,168, 38,115,132, 18, 20, 89, 78,179, +169,145, 74,240,100,249,132,187,255,254,189,248,158, 71,214,102, 8,187,162, 62,186,188, 57,191,251,220,245, 79,147, 12,191,148, +108,177,199, 33, 83, 73,199, 63, 50,229,139,196, 95,240,233,156,185, 4,201,211,165,203, 33,196,134,173,154, 68, 41,215,124,186, + 75, 94,146, 50, 18,227,132,231,104, 82, 82, 24,141, 70,178,200, 13,141,117, 84, 82, 99, 69,140,210,116, 4,130, 8,228, 69,137, + 27,229,143, 46,105,218,125,114,155, 35, 21,115, 41, 83, 66,148,221, 93, 67, 90, 69,251, 96,189,111,176,227,119,133,221,219, 47, + 0,206,252, 30, 73,102,143,131, 48,202,227,132, 72, 65, 66,201, 85, 14, 17,191, 95,205,225,232, 26,210,100, 8,169,240, 12,132, +182,129,139,243,216, 92,108,155,136, 44,228,102,151,239, 60,164, 9,108,232,162,171,222,232,156,104,109, 90, 79, 36,243,165,166, + 67,156, 62, 77,184, 20,222,131, 23, 8,147, 26,157, 54, 53,186, 87,134, 69,146,224,159,247,160,247,172, 85,198,143, 22, 37,183, +178,140,193, 59, 86,222,113,215, 90, 30, 73,207,235, 89, 69, 97, 74, 10, 97, 48,125,131,232, 26,238,213, 43, 6,239,169, 6,207, + 4,203,242,124,139, 61,191, 32, 20,146,144, 25,190,149, 79,249,195, 87,111,241,202,193,148, 7,155,150, 63,221, 52,124,178,189, +196, 11,205,194, 24, 54,193,113,123, 94, 48, 56,136,246, 51,129, 74,128,146, 10,165, 37, 2,129, 18,138, 73, 89,226,132,228,184, +156,242,250,226, 26,223,191,177, 32, 47, 52,219,204, 68,138,136,206,209,153, 68, 7, 80, 94,162,240, 95, 80,220, 53,210, 68, 18, +176,212, 38, 18,232,108, 64, 20, 25,191,127,115,193,111,223,126,149,219,249,132,197, 68,243,215,143, 46,162, 61,240,166, 37,116, +125, 92, 87,172,150,244,231,231,132,174,167,175, 27,194,164,164,111,107,250,203, 51, 6,219, 17, 54, 43,134,182,198, 5,203,189, +237,154,251, 23, 23, 44,187,142,243,174,229,162,111,185,223, 54,184,109,139,191, 92,242,241,186,227,253,118,205,153,180,124,108, +123, 42,169,249,120,187,225,253,229,146, 63, 59,189,224,189,190, 70,121,129, 12, 22,129, 99, 18, 60, 70, 9, 26,235, 35,225, 47, + 72, 68,202, 11, 23,222,199,226,206,110,125, 38,246,214,104, 79,113, 11, 94,224, 67, 60,143,195, 51, 38,223, 73,253,116, 83,172, +178, 84, 84, 13,167,214,242,135,243, 2, 23, 2,183,243, 28,225, 29, 39,125,195,175, 84, 19,126,178,217,240, 86, 49, 97,139,196, + 13, 45,189, 27,248,183, 79,158,240,201,106,195,249,186,137, 78,139, 38,145, 24, 67, 34,246, 5,199,239, 44,166, 84,198, 80,228, + 19,130,210, 12, 62,240, 88,201, 56, 24,164,192,159,100,234, 30,239,225, 33, 26,204,124,110,136,252, 38,220,178,103,235,215,184, +190,179,126,103, 95,254, 37, 14,115,255,176, 69, 93,250, 52,245, 36,131, 15,149, 58, 51,173,226,131,114,140, 59, 53, 41, 51,221, +166,233, 56,164,206,109,255, 13, 93,217,234, 61, 51,165, 91,255,229,140,121,147,165, 40, 77, 31, 9, 84,214,239,152,235, 87,230, +251, 54, 22, 18,233,175,148, 80, 41,104, 45,165,180,132,103,136, 17, 95,177, 91, 49, 37, 93, 86,144,233,192, 96, 7,218,174, 35, +207, 36,243, 60,195,168,152, 54,212, 59,199,186,111,185,236, 59,186,244, 30,170,162,224,160,202,152, 8,137, 17, 18, 99, 4,222, + 90, 86, 67,199,227,101,205,166,237,226, 36, 60, 56,172,134, 69, 57,225,229,227, 87,233, 66,143, 14,154,207,214,231,216, 71,247, + 94,108,159,238, 72,187, 49, 1,237,128,184, 62,165, 84,134, 82, 79,208, 89,137,210,130,174,110, 56,191, 56,229,127,255,249,207, +225,241, 19,110,254,225,239,178,253,244,222, 14, 5, 81, 9, 5, 25,189,142,159, 37,139,140,136,140, 20, 41, 17,206, 63,135,156, + 39,247,214, 49,236, 38,197, 44, 33, 2,117, 29,247,230, 67,212, 21, 71, 75,222, 42, 73,189,242,248,123, 22, 21,243,151,110, 83, + 84, 37,106, 90, 49, 56,155, 36,148,130, 92,107,148, 16, 84, 58,202,127,150,189,103,150,105, 58,239, 81,233,241,212, 91, 79,105, + 20,109, 61,196,253,153,243, 41,170,215,197,233,252, 74,155,238,211,132,110,227,181, 45,243, 88,120,135, 68,216,220,183,130,220, + 47,236, 90, 62,243,246,237,211,135, 96, 60,158, 87,246,197,236,153,221,164,239, 41, 21, 77,113,164,128,195, 25, 97,178, 32,216, +150,128, 76, 49,172, 77, 92, 7,248,116, 45,219, 49,125, 45,161, 38,219,246, 10,206,164,245,177, 1,176, 46,229,170,155, 72,146, + 11, 1, 86,235,232,136,183,255, 80, 30,123,106,163, 16,117,138, 57, 86,154, 48, 47,248, 87,111,220,160,156, 21,220,123,178,138, +123,211,103, 31,232,193,161,181,166,202, 12,107, 2,247,189,231, 3,235,248,179,206,242,123, 74,176,208, 37, 6,137, 30, 6,124, +187,226,129,179, 8,235, 17,214, 81,122,193, 66, 64,237, 29,221,163, 11, 2, 45, 47,107, 56, 44, 42,150,125,207, 95,157, 46,249, +249,122, 9, 82,210,218,150, 7,117, 67,237, 45,219,214, 82, 59, 71,145,151, 84, 10,114, 4,131, 15, 84, 1,156,119,136,114,130, +159, 78,169,202, 9, 89, 57, 69, 34,184,105, 42,126,253,198,203,252,218,205, 91,188,253,250, 29,110,221, 56,228,177, 46, 17, 86, +161,133, 67, 5,143,242, 30, 53, 41,162,171, 30,196,198,202,232,232,176,151,204,154,132,237, 17, 14,138,185,225,213,201,156, 78, + 74,238, 14, 61,239, 73, 79,216,118,176, 90,198,107,121,187,133,186, 35,244, 3, 97, 91, 19,250,158,112,255, 17, 56, 75,184,220, + 64,169, 97, 91,227,237, 0,221, 64,232, 90,252,166, 33, 88,143, 95,175, 8,117,135,111, 45, 97,179,193,183, 22,191,185,100,115, +126,206,253,117,207,167,131,227,223,212,151,252,249,106,205, 79,234, 53,143,188, 77,251,253,154, 82, 4,114, 31,200,188, 37,243, + 48, 87,130,181, 20, 41,201, 90, 34, 19,138, 42,242, 9, 34,215,187, 70,115, 68,110,158, 41,214, 95,172,239,255,170,194,174, 99, +209,154,148, 41, 82, 59,139,240,119, 57,137,141,124, 55, 64,105,120, 75,106,126, 59, 23,104, 83,160,156,101,229, 44, 62,120, 14, +148, 97, 35, 5,175,105,205, 25, 48,117,150,121, 94,112,210,118,220,145, 18, 63,116,116,109,207,182,238, 96, 91,167, 97, 36, 42, + 64,254,224,120,194,203, 89,134, 86, 25, 94, 40,140,214, 40,229,121,191,115, 73, 13, 35, 99,211,170,178, 36, 97, 78,247,239, 40, +171,126,161, 97,229, 75,184,200,242,139, 8,114,114,111,112, 77,181,238, 57, 48,255, 63, 92, 81,207,179,120,178,236,176,179, 33, + 29,109, 67,179, 44, 62,176, 61, 41,251, 60, 21,216,204, 36,194,211,222, 67,244,138,109, 56, 78,241,233, 11,251, 2,164, 5,173, +119,133, 65,154,221, 46,211,167,194, 48,234,217,247,131, 96,252,254, 78, 35, 77,162,146, 29,170,240, 34,154,199, 76,225,242, 41, + 94,198,160, 12, 47, 29, 19,101,226,164, 40, 21, 62, 8,186,193,114,209, 91,182,221, 0, 8,230, 7, 83,110, 47, 14, 40,181, 65, + 9, 16, 4,164,247,116,206,178,106,122,206, 86, 13, 97,240, 8, 31,146,116, 2,124,166, 17, 42,144,235,156,179,230,146,251, 79, + 30, 65,187, 34,188,136,193,139, 76,197,214, 73,232, 44,151,171, 37,159, 14, 61,199,101, 78,158,231, 12,221,192,166,105,184,127, +241,152,135, 31,222, 5,103, 99,152,194,197,242,105, 6,232, 87,161, 52, 34,101,222,203, 47,131,173,198, 48, 29,181,135,213,165, + 9,220,217,200, 92,109, 54,241,198, 31,145, 19, 63, 58,178,233,216, 20,222, 56, 38,207, 20, 90,104,132, 0, 43, 37,193,182,160, + 21,185, 84, 84, 70,145, 41, 69, 99, 3,149, 81,180,214,225,131, 39,136,128,199,145,107, 73, 63, 4,156, 27,253, 14,210,227,201, +118,169, 1, 10,145, 57,158, 21,169, 80,219, 36, 61,235,227,235,180, 54,146, 7,191,112, 90, 29,215, 73,123,219,230, 60,139,147, +244, 62,231,100,148,124, 62,187,190,130,216,160, 24,179,147,111, 22,121,108, 34, 84,130, 5,109, 23, 97,240, 85, 27,119,135,117, + 15,198,240,218,141, 9, 63,200, 53,175,101,138,187,103,171, 68,144, 75,122,117,124,124,144, 42,147,124, 5,178,200, 23,184,184, +252, 92, 81,199, 39,111,251,193, 38, 36,109,128, 44,231,191,127,227, 22,191,119,227, 14, 70,195,255,125,214, 68,159, 0,118, 22, +171,130,104,157,251,112,208,104, 41, 89, 3, 15,156,229,190,147, 88, 39,184, 27, 90,254,137, 41, 41, 48, 40,153, 81, 44,174,241, +242,209,109,174,103,134,101,223,226, 8,100, 88, 94, 54, 26, 41, 5,121,215,241,160,109, 8,126,195,191,127,248,144,127,119,118, + 70, 24,122,130, 34,154,214,100, 6, 79,108, 2,122,239,112, 54,112,123, 82,176,181, 45, 55,140,161,243, 1,147,229, 44, 14, 22, + 20,179, 9,250, 96,134, 51, 26, 33, 13,147,114,130,247,129,239, 29,220,224, 7,183, 94,229,187,179, 27,252,250,209, 13, 38,115, +205, 61, 15, 90,101,168,190, 71,117, 22, 57,153,160, 76,134,202, 75,228,224,144,194, 34,131,138,133,125,176,208,212, 60,217, 88, +154,210,177,148,129,159,212, 3,219,224,160, 72, 43,139,117, 29,175,105,219, 39,169,151,139,150,191, 67, 71,232, 60,129, 1,214, + 13,161,110, 97,121, 25,125,197,183, 29,161,183,132,224, 99, 19, 48,244,248,139, 19,130,235,240,109,131,239, 26,188,115, 49, 22, +183,174,241, 78,224,134, 26,239, 6, 6, 63,196,201,223, 65, 62, 88,140,112, 84, 82, 82, 10, 75,174,224,192, 40, 90, 33,152, 40, +197,171, 83,205,235, 7, 83, 14, 22, 5,213,193,140,165,154,166, 20,199, 72, 6,125, 17,199,202,231, 21,120, 1, 8,167,227,176, + 52,201,160, 92,196,235,149, 16,249, 33, 77, 90, 35, 45,166, 16, 36,255,201, 52, 3,161, 88, 54, 43,166,249,148,206,123,110,231, + 37,101,128,119,235,129,137, 49, 84,174,231,157,198,115, 93, 6,180, 18, 4, 9, 55,164,228,219, 18,254,195,233, 38,230, 62,116, +117,202,132, 8,220,154,230, 28,165,235,201, 75, 73, 23, 2,119,155,129,251,222,238,236,165,125, 34,216,230,121,188,239,138, 34, +162,129,243,121,228,173, 16,146,174,157,167,172,194, 95, 88,158,253,133, 68,185,125,101, 12,255,128,240,123,158,197,130,169,244, +142,249,172, 18, 44, 55,178,205,199,169, 67,232, 61,246,249,222,127, 27,255,222,165,128,149,126, 47, 42,245, 89,221,158,231,133, +172,244,174,138,138, 79, 5,217,201,157,143,182,142, 25,232, 87,233, 56,210,238,177, 94,246,150, 64, 82, 60,141,246,191,168,100, + 33,159, 35,143, 14,210, 84, 30,223,227, 52, 87,104, 41, 81, 41,138,117, 99, 7,182, 67,207,208,122, 80,130,235,243, 57, 71,147, + 42,234,124,189, 71,138,128, 7,154, 97,224,116,219,211,215, 45, 34, 88,194,224,147, 22, 50,208,181, 29,151, 67,207,164,148,100, + 42,195,148,154,229,221, 79, 63,175, 48,144, 50, 22,143,253,239,187,212,185,202, 84, 24,234, 14,206, 46,184,151,231, 76,144,156, +111, 86,156, 44,207,249,155,191,251, 32, 26, 74,120, 7,143,159,124, 13, 13,230, 30, 95, 98, 44,238, 94,124,201,201,211,169,113, +218,219,194,121,226,106,102,244,223, 55, 69, 58,159, 33,201, 18,211,215, 62, 64, 38, 49,147, 10, 35, 21, 2, 65,125,118,114,229, +224, 87,102, 17,130,239,211,164, 17, 66, 96, 98, 4,141, 15,248,224,232,186, 1,161, 37,110,136, 69,128, 33,217, 4, 15,125,212, +186,143, 54,179, 46,233,187, 73, 49,173, 17, 82,136,222,211,202,126,193,148,254, 12,204, 14, 48,159,237,246,237,106,239, 88, 93, + 25,152, 36, 72,220, 36, 56, 82,236, 61, 66,157,138, 83,117, 31,226, 52, 83,229,200,172,136, 92, 0,153,126, 94,221,196, 66, 61, +137,196,190,183,230,113,191, 60, 23,130,109,102, 88, 95,174,118,153, 7,235,109,202,143,111, 99,166,188, 78,146,189,109,106, 16, +158,125, 40,143, 48,236,136,204,204, 42,126,116,235, 58, 47, 85, 11,222,223,174,248, 15,171,250,106,191, 62,178,252, 69, 90, 63, + 8,111, 89,107,131, 45, 52,141,214,156, 9,141, 66,176, 14,240, 61, 45,184, 61,185,134,204, 10,212,157, 59,152,197,156, 60,155, +242,224,226, 4, 31, 44, 7, 74, 51,147,130, 55,203,140,215,202,156,235,210,243,127,220, 59,229,241,227, 75,252,102, 21,237, 71, +135,142, 16,162,197,232, 92,105, 58, 33, 41,164,230,187,121,137, 15,129,133, 20,172,250,150,105, 86, 48, 5, 68, 81, 48, 63,158, +146, 77,178, 56,109,103, 57,189, 8, 92, 95,204,249,246,241,130,163,107, 11,110,220, 62,230, 80,230,220,206,230, 76, 75,197, 71, + 97, 64,161, 80, 38, 71, 57, 17, 31,117,193, 35,165, 68, 74,141, 20, 17,198,150,193, 71,131,154,190,225,209, 89,203,199,189,101, +147,167, 18, 39, 53, 84, 69,242,187, 72,247,136, 73,205,235,120,111,217,100, 56,212, 69,171,209,224, 29,180, 53,161,111, 8,205, +150,208,213,132,174, 37,108,214,209, 82,183,235, 9, 62, 58, 18,122, 51,137,141,234,182,195, 93,158,225,215, 91,124,231,240, 50, + 96,189,160,198, 98,221,192, 53, 1,194, 15, 72, 2, 19,169,240,222,242,189,210,240, 95, 30,207,249,227,107,115,126,255,240, 26, + 63,154, 77, 48,153,225,246,225, 4, 57,203, 57,247,163, 37,179,191, 50,185, 18, 95,241,231,115, 80,189, 75, 13,162, 54, 80,205, +162, 71,196,232, 19, 18,136,182,175,101,206, 91, 70,179, 48, 5, 19, 37,184,165, 37, 51,157,113, 50,116, 92, 87,145, 39,240,211, +174,231, 71, 85, 5,174,231, 49,146,183,164, 35, 87,138, 92,103,244, 67,203, 37,112,182,105,120, 83,122, 62,238,251,120, 95,116, + 45,116,150,207,250,192,237, 66,115,156,103,120, 60,181, 11,252,111,117,178,119, 29,146,124,109,180,181, 22, 10,180,230,237,227, + 25,255,217,203, 71,252,241, 75,215,121,179,202, 56, 62,158,241,137, 75,131,135, 74, 80,150,208, 9,233,245, 47,246,124, 28,239, +117, 41, 63, 47,107,123,118, 74, 55, 89,180,191,158,204,254,158,139,186,214,159, 63,125, 89,130, 25,131,143, 7, 68,236,193,174, + 89,218, 89,200,189,221,122,199,206, 61, 43, 27, 3, 44,146, 65, 71, 72,108,224,111,162,189, 30,187,161, 76,197, 2, 46,147, 3, +157, 75, 83,250, 78,147, 18, 11, 74,240,159,191, 34,189,142,210, 13,207, 87,104,145,159,165,146, 31, 17,166, 21,101,150,161, 3, + 8, 28,165, 20, 40, 37, 17, 66, 80,187,129, 85,239,217,108,146,145,129,212,148, 69,134, 81,130, 64,192, 38, 18,203, 48, 56,206, +234,142,198,245,248, 54,238,234,128,200,176,237, 99, 71,121,124,231, 14,191,250,210,247,185,182,184, 65,169,167,124,252,209,207, +147, 17, 10, 59, 86,117, 72,244,165,253, 6, 73,142,133, 98, 12,198,137, 19, 88, 88, 45,185,127,178,228,254,217, 41, 39, 15, 79, +226, 78,234,120, 17,163,104,151,203,175, 39,217, 16,123, 37, 33,124,149,109, 99,154,212, 71,231, 38, 33,119,180,171, 16,118,202, + 5,183,137,208,187, 72, 70, 64, 87,251,111, 79,111, 29,117,219, 70,205,190, 84, 32, 2, 82, 27, 36,129,206,121, 22,153,166,245, + 46, 22,125,103, 49, 66, 82,183,129, 28,208,184, 0, 0, 32, 0, 73, 68, 65, 84, 29, 74, 73,218,110,192, 14, 46,158,228,113,183, +109, 19,151, 66,166,137,125,244,130,247, 34,153, 14,117, 41,139,222, 62,205,122,127,222,199,124,198,175,254,193, 31,240,248,209, + 41,132,209,168, 35, 53, 46, 35, 41,211,167, 41,126, 84, 85, 36,203,214, 8,223,200,104, 97,156, 16,138,197,225, 34, 58, 33,203, +232,187,142,119,209,202,210,185,200,242, 45, 11,242,105, 78,166, 36, 79, 20,124,120,186,142,205,208,208,197,227, 90, 76,162, 43, + 88,235, 96, 49, 37, 91, 28,242,223,188,114, 27, 76,224,241,147,243,157,213,237,243,166, 49,103,249, 64, 74, 50, 3,255,211,249, +138, 49, 71, 65,216, 1,186, 52,217,203,241,118, 10, 12,237,128,152, 76, 64, 75,164,206,113, 82,161, 51,141, 99,224,123,213,140, +108,122,136,190,113, 13, 89,228, 32, 13,225,244,132,204, 8,230,194, 50,211,138,185, 82,232,204,176,200, 12, 11, 45,168,115,201, +106, 8,248,179, 21, 97, 85, 19,148,228,123,139, 41, 7, 69, 69,169, 20,223, 46, 42,110, 86, 26,229, 6, 30,146,241,170,214,216, + 48,176,177, 29,211,114,130,208,154,220,104,148,212,228, 70, 49, 59,156,112, 45,207,121,245,246,156,233,181, 25,249,180, 32,159, +148, 20, 65, 83, 5,205,141, 34, 99,118, 60,229,177, 5,165, 99, 46,188, 42,203,152, 84, 55,184, 56, 3,100, 2,209,119,209, 94, + 55, 51,136,205,146,176, 94, 33,172, 39,100, 9,194,117, 46,162, 78,211,105, 92,167, 76,138, 88,212,159, 34, 89,122,130,247, 87, + 54,191, 97,252, 60, 90, 11,143,196,196,125, 25, 97, 86,225, 95,190, 78,200,115,124,211,225,189, 37, 88,139,239, 54,177,184,111, + 58,176,158,182,239, 49,161,167, 18,129, 74, 42, 58,231,152, 72,201, 15, 77,206, 43,153,225,118, 94,209, 75, 65,102, 10,114, 93, +208,154,140, 60, 47, 40, 38, 25,143,145, 8,105,226, 42, 88,131, 72,215,200, 87, 21,245,171,207, 33, 93,243,215, 23, 28,127,251, + 22,119,174, 31, 80, 86, 25,235, 85, 23, 81,157,220, 32, 50, 67,233, 3,111,205, 75, 50, 37,105,132,228,193,208,242, 45,157,209, + 59,199, 52, 43,240,174, 39,179, 61, 70, 27, 50, 2, 23, 74,209, 15, 13, 77, 16, 28,232,156,123,219, 45,223,193, 82,235,140, 7, + 77,203,224,147, 4,175,107,193, 14,124,120,190,230, 47,215, 29,127,179,110,248,233,233, 58, 90, 79,143, 6, 89,146, 56, 96,250, +116,255, 25,193,239, 30, 78, 56,204,115,150,110,160,200, 50, 10, 35,121,199, 19,159, 89, 90,199,232,102,157, 37,243, 42, 29,107, +221,151, 33,166, 99,125,250,220,196,110,247,184, 95,251,232,175,129, 27,215,225,160,250,123, 46,234, 38,193, 40,201,200, 42,154, +133,164,105,123, 92, 78,203,189,135,242,104,252, 50, 78, 40, 73,242,136, 74,134, 32, 54,196, 23, 63,116,105,127,145, 10,146,210, + 47, 6,123,127,209,129, 27,108,236, 6,197,222,208,164,216, 53, 14, 36, 86,190, 22,137, 21,191,199,134,119, 99, 76,107,130, 7, + 94,212, 9,111,114,200,252,248, 24,129,101,146, 75,140,242, 56,124,100,247, 58,199,186,115,212, 93,135,107,135,196,244,150,104, + 41, 48,193,209, 15, 29,189,115,212,214,178,234, 44,235,174,195,182,195,213,235, 18,128,200,116,252,119,147,138,215, 94,122,133, +235,213, 13, 76, 86,112, 86, 95,114,247, 23, 31, 69,168,105, 60, 63,251, 27,118,241,108, 23, 57,198,165,250,167, 9,217,161,139, +234, 0, 83,240, 43, 63,250, 46,223,121,229, 14, 55,174, 29,240,240,195,143,190,102, 83,181,231,219,251, 34, 50,144, 49, 28,101, +156,236,199,159,163,203,136, 6,117,155,148, 31,224,162,243,147, 74,190,255, 58,105,228,101,154,114,198,244, 62, 29,139,157,147, + 16,188, 96,176,241,218,148, 2,250,161,103, 8, 34,230,195, 91,199,208, 38, 55, 40,153,174, 1, 45,210, 83, 75,199,130, 45,146, +125,171, 76,174,117,210,199,137, 94,236,241, 8,244, 87, 68, 39, 10,201,226,206,109,206, 46,183,145,165,126, 37,135,244, 79,147, + 46, 71,119,195,177,161,185, 98,197,143,231, 44,178,171, 77,158, 33,179, 18,233,122, 6, 68, 84, 7,116, 67, 52, 83,202, 5, 52, +150,203, 44,231, 51,161, 56,233, 92,132,240, 79,150, 41,174,210,239,216,188,125, 7,139, 5,255,237,183, 95, 99,158, 21,220, 44, + 51,254,234,222,195,167,144,135, 47, 44,238,131,101,216,214,252,188,177,145,183, 98,116,156, 40,148, 70, 12,109, 98, 76,239,184, + 64, 2, 79, 91, 91, 66, 53,165,204, 51,110,149,134,235, 70,211,216,192,129,214, 92, 47,166,228,243, 35, 4, 18,119,182,166,169, + 47, 89, 40,141,180, 45, 3, 1,171, 20, 83,165,232,165, 98,155,231,148,147, 18,189,200,241, 71,135,212, 50, 70,146,102, 58,102, + 40, 84, 69,206, 91,243, 9,139,188, 68, 21, 5, 10, 75, 45, 2, 97,176,116,195, 64,240,130,182, 29,232,188, 34, 47, 37, 7, 70, +114,144, 25,142,139,140,163, 89,137, 73,134, 88, 33, 64,191, 29,152,152,140,151,138, 25, 55,204,140,107,243,130,108, 81,176,206, +114,110, 29, 76,104,136,249,232,178, 40, 17, 14,230, 85, 73, 63, 54,255, 58,106,158, 51, 47,177,247, 79,119, 33, 83,121, 14,121, +137, 88, 76, 17,179, 18,145, 25,196,186,223, 17,211,190, 4,222,126, 86, 97,112, 85,212,111, 93, 39, 28,205,241, 66, 17,156,199, + 55,245, 21,231, 50, 12,150,208,212,132,102, 11,203,134,165,135,163, 66, 17, 6,143, 15,158,204,121,126,115, 86,114, 36, 53,181, + 15, 28, 20, 83,164, 50,212, 74,161, 85, 70, 11,148,153, 65,105,201,105,153, 33,242, 28, 81, 86, 8,165, 17, 33, 32,148, 68,154, +104,188, 35,210,179, 90,228, 25, 28, 94, 67, 28, 30,198, 93,121,176,136, 30, 56,152,160, 94,123,137, 95,125,233, 22, 71, 85,197, +181,233,148, 70, 59, 14,231, 11,230,147,130, 44,203, 89, 43,197,171,153,228,251,210, 80,227,185, 99, 42, 30, 13, 3,179,204,240, +184,221,178,200, 12, 66, 74,222, 93,111,249,118,150, 97,188, 71, 8, 77,214,111,249,133,115,188,157, 73, 54, 66,241,112,217,240, +201, 42, 33,110,193,238,106, 66,215,195,182, 38,172,183, 81, 10,218, 15,145, 41,223,182,123,208,119, 68,157, 95,171, 12,223,153, +149, 9, 84,150, 72, 41,233,172,227, 97,235,168,131,139,207,173, 34,169, 99, 50,179,147, 70,243, 21, 67,224, 72, 10, 31,229,129, +227,122,249,139,212,220,186,128,195, 41, 8,241,247, 92,212, 71, 54,251,184,223, 20, 62,194, 43, 90,164,154, 62,230, 7,167, 68, +169, 50, 89,116,138, 84,192, 77,250,247,109,138,229,244,105, 18, 26, 89,194,163,166,221,168,111, 78, 78,208,169, 0,122,145, 18, +189,236,142,132, 39,210, 62, 83,134,221, 90, 64,239, 5,198,104,113, 21,121,249,149,228,184,253,143,163,107, 48,201, 40,101, 52, + 7,109,236,144, 40, 4, 1, 31, 60,203,166,165,223,244,187, 59, 50,215, 84, 74,199, 7,146,115, 52,189,163,117,158, 85,211, 18, +154,126, 23, 28, 50, 58,182,105, 73,118,120,196, 31,253,198,111,115,231,224,101,178,194,112,114,121,198,121,179,226,241,123,239, +236, 38,226, 81, 46, 50,178,213, 3, 47,198, 70,215,121,100,240,191,114,131, 31,220,122,153, 42,203, 89,148,115,222,175,215,209, + 54,242,235, 20,246,175,115,220,198,130, 53,122,152,143,143,174,190,141,197,122,146,180,225, 58,237,180,188,125, 26, 21, 24, 9, +118, 42,217,253,250, 72, 20, 11,214, 33,100,160, 15,150, 66, 43, 86,109, 79,102, 76, 12,246,176, 22,215,251, 24, 38,161, 50, 66, +155,100,151,232,221, 42,105, 36,122,250, 17,253, 48,209,163,160,208,241, 97,161,242, 29, 34,245,101,197,221, 90,206,238, 61,129, +119,207, 97, 49, 58,239,137,207, 91, 75,238,239,214,173,221, 37, 18, 38,201, 17, 93, 3,205,128,152, 79,176, 2,110,102,138,181, +141, 54,161, 46, 36,249, 93,189,137,247, 99,158, 36, 57, 82, 70,116,103,211,166,169, 48,177,130,187, 20,106,227, 5, 47,189,114, +204,180,156,242,225,106,205,167,203, 21, 44, 87, 95,205, 98, 30,108,132,220, 77,129, 40,242,184, 22, 40,242,132,102,116, 49, 20, + 70,238, 75,191, 44, 62, 47,184, 54,157,240,250,172,224,229, 44,231,102,102,232,252,192, 29, 85, 80,133, 12,177,109,241,151,231, +208,111,232,130, 37,147,224,188,199, 7,193, 96, 50,106, 33,104, 76,198,153,214,132,108,194, 26,137,168,102, 76,102, 83,206,236, + 64, 40, 74,178,190,229, 90, 85, 33,165, 96, 27, 2,151,117,244, 75,183, 33, 71, 40,133,119, 29, 79,150, 23,116,155,158,118,109, + 41,243,140, 10,193,225,180,100, 90,154,120, 41, 57, 79,115, 57,208, 39,120, 59,211,154,227,233,148,111,205,143,249,222,244, 26, +111, 47,110,113,123,122,196,203,211, 9, 55,143, 22,212,194, 33, 39, 5,181,208,152, 98,130,247,154,144, 25,130, 80, 88,223, 69, + 47,129,179, 39,136,218, 71,134,121, 89,198, 63,197, 4, 81, 76,224,232, 0,145,149, 8, 55,230, 99, 60, 77, 76, 11, 95, 81,224, +131, 29,160, 19,132,186, 33,180, 29,193, 8,194, 96,241,251,255,214,185,180,199,135,199,219, 1, 81, 72,214,157,197,122,199,117, + 41,185,157,229, 40, 41,144, 74,210, 74,205, 35, 4,191,112, 30,167, 51,156, 27,168,138, 9,159,166,103,163, 40, 51,196,193, 12, + 49,155, 35,103, 51,132, 48, 8, 93, 32,130, 64, 28, 28,114,227,135,111,242,195,111,191,206,173,227, 35,166,243, 9,231, 33, 54, +201,226,240,136,183, 95,191,205,141,197, 97, 92, 55, 6,207,171,199,175, 48,175, 38,124,251,198,171, 28, 22, 57, 88,248,171, 65, +114,205,120,142,100, 70, 23, 44,183,164,226,103, 77,199,247,170, 41, 63, 91,109,121,105, 82,112, 83,192,133,247, 12,118, 64, 41, +197,165,115,188, 42,163, 64,227,227,245,134, 62, 56, 30,214, 93,146,181, 61,171,170,242, 59, 87,188,174,139,205,109,215,239, 86, + 72, 67, 68,139,151, 65,241,195, 42, 39,215,138, 42,203,113,222, 49, 72,201,159,159,175,119, 3,196, 56,200,142,133, 57,168,136, +114,250, 23,244,129,255,130, 77,221,231,184,196,166, 0,165,255,158,139,186, 79,187, 7, 35,159,182,181, 30, 31,200, 97, 44, 38, +137,108, 70, 72,172,217,148,132, 21,146,214, 55, 31, 37, 72,201,163, 93,238, 89, 60, 40, 25,117,192,214,127,243,215, 40, 69,146, +246,164,215,123,165,139, 78,144,188, 20,207,236,214,147,212,194, 39, 41,210,184, 95,121,145,226,100, 52, 76,231, 96, 52,131, 29, +144, 50, 32, 69,136,196,101, 96,221, 15,212,235, 4,187, 19,181,190,121,110,168,180,185, 90, 65,215,118,136,208,124,151,136, 27, + 33,196,156,238,224, 18,151, 34,227, 59,175,191,196,175,189,241, 54,147, 89, 69, 8,158,119, 31,188,199,207,238,222,133,243, 39, +187, 11,105, 95,126, 38,120,177,105,217,196, 48, 23,166, 5, 78, 6,190,123,253, 22,214, 7, 54,125,203,221,119,247, 80,128, 23, + 66, 44,138,221,190,248,235,156,175, 47, 82, 25, 76,138,104,211,234,101,132,189,117,146,149,153, 84, 68, 68,216,237,240,243,100, +114, 52,158, 51, 23, 98,212,169,131,174, 27, 48, 90,208, 44,123,156,243,132,173, 35,116, 22,134, 16,235,168,117, 32, 20, 82,137, +189,135,168,220,145,211,228, 56,177, 39,179,152,178,140,138,132, 66,197,115, 83,232, 47, 71,116, 92, 31, 77, 54,198, 68,188,193, +126,254,186,218,127,239, 35, 55,100, 76,160,179,195, 85, 30,179,235, 6,244,172, 64,227, 57,144,146,137,136,219, 44,231,146, 52, +104,179,141,231, 61,159,236,156,237,182,203,157, 60,103, 24,118, 33, 60,131,227,195,162,224, 93,239,249,192, 19,207,243,147,179, +231,247,243, 35, 87,163, 72,108,252, 46,238, 67, 69, 89,196,251,187,200,185, 94, 78,168,187, 14, 26, 27, 11,187,181,209, 99,221, +228,220, 58,170,120,115, 50,225,102,150, 51, 85, 6, 21, 2, 83,103, 57, 26, 60,102, 93, 35,215,167, 8, 27, 87, 35, 82, 27,178, + 32, 24,194, 64,131,224, 66, 73, 30, 35,233,148,166,113,130,144, 77,184, 83, 78,120,189,202,249,193,180,226,117,147, 97,114,195, + 89, 15,245, 16,168, 7, 65,161, 20, 86, 43, 50,173,169, 10,197,208,193,208,119,244,237,154,147,199, 15,232, 58,205,205,249,148, +210, 9,180, 21,168, 32,217,110, 7,150,117,207,227,229, 22,213,247, 76, 38, 57, 89,166, 41, 76,198,225,108,198,245, 98,194,171, +211, 67,238, 84,215, 56,150,134,239, 47, 14,121,105,162, 17, 69, 96, 58,201,153,148, 57, 90, 10, 90, 23,240, 77, 71,240, 3,162, +239,162, 1, 80,215, 33, 76,116,159, 19,229, 12, 81, 46,248,141,107, 55,249,151, 63,250, 33,223,126,249, 58,239, 24, 25, 73,139, + 93,247, 66,210,177,144, 26,172, 16, 2, 65,105, 66,166, 8, 8, 66,215,125,241,132,111,123,196, 80,179, 94, 15,108, 58,207,105, +235,121,181,148, 28,101,146,153,202, 49, 82,113,191,239,248,133,247, 92, 4,143, 80, 10,148,161, 38, 48, 17,130, 19, 25,101, 98, + 2,144,147, 18, 81,100,200,249, 28, 49,169, 16, 55, 14,248,225, 27,119,248,222,173, 55,184,113,237, 58,147, 44, 35, 11,129, 91, +135, 11,178,163, 57,183,110, 94, 99,154, 23,148, 58, 71, 74,193,180,156,178,220,118, 84,197,148, 50, 43,200,179,130,195,106,194, +237,208,242,208,122,190,165, 36,150, 64,111,114, 50,103, 57,245,142, 55, 51, 67,239, 44,103, 66,112, 32, 4,154,192, 67,215,115, + 40, 4,114,136,100,193, 83, 23,184,108, 90,122,225,233,221,158, 58,231,185,250,241, 84,160,125, 31, 27, 96,219, 71,243,169,174, +101, 86, 25,110,107,195,129, 81,172,186,158,255,245,209,146,173, 15, 49,248, 75,135,157, 18, 43,164,117,102,219,197, 26,242,203, +186,208,233, 68,106, 14, 33,222,207,167,103,255, 17,136,114,126, 63,123, 60, 65,134,102,124,144, 39, 28,123,100, 62,251, 68, 38, + 24,119,137,163,190,153,176,155,222, 93,122, 88, 62, 37,233, 73,147,186,148,223,236, 0, 61,245,111,178,103, 96,117, 34,236, 46, +237, 83, 43,141,171, 85,194, 8,195,191, 72, 65,212, 26, 38, 11, 40, 13, 65, 8,130,242,104, 5,153, 22, 40, 41,168,123,199,170, +235, 9,125,127,245, 59,100, 97, 80, 82, 16,132,167,183,158, 85, 55,208,212,195, 46,199,119,132,164, 67, 10,250, 80, 2, 53,159, +243,198,241, 77,174, 29,220, 34, 4,193,166,105,120,231,238, 71, 52,167,167,176,185,248,188, 25,207,215,153,150, 85, 6, 7,211, + 36,225, 16, 92,218,134,123, 23, 43, 62, 56, 61,133,135, 15, 95, 60,206, 48,207,224,141,215,162, 45,233,122,245,203,219, 43, 14, +233,196,140, 97, 61, 33, 57, 17,102, 69,146,156,249, 61,237,149,227,191,251, 47,254,132,119, 62,124,111,215,216,180,177,112, 49, +120, 92,159, 44, 7, 91, 27,121, 31, 46, 21,227,100,156,147,229,121,204, 71, 54,130, 76, 41,156, 78, 89,230, 54, 21, 89, 53,218, + 13,167, 61,146, 73,196, 51,157,254,159, 76,127,249, 62, 77,126,205,107,247, 89,181,193,248, 61,231,184,182,168,104, 5, 76, 76, +140,163, 60,206, 13, 75,107,227, 78,176,107,227,245,124,235, 40, 26,240, 76,139,120, 12, 46,151, 79,253,140,248, 51,163,139,220, +144,171,157, 2,101,185,218,189,143,162,136,205, 94, 8, 87,228, 30, 49, 41,193,170, 8, 57,146,248, 47, 89,148,120,253,201,173, +107,252,243, 59,175,160, 75,193, 71,103, 27, 68,103,175,210,206,100, 83,115,237,248,144,239, 46, 14,120,189,152,115, 88, 76, 16, + 1, 78,218, 53,223,234, 59,140,247,104, 85,161,164,192,100,101,162,127, 72,134,161,227,177,119, 60,112,150, 54, 43, 88, 9, 65, + 71, 70,149,229,188, 49,159,114,172, 50, 94, 46, 42, 50, 4, 51,101,216,120, 73, 39, 36, 65,105, 50,105,144,218,224,133, 36, 4, + 77,111,123,108,144,108,182, 91,234,118,205,102,125,194,186, 85,124,171,172, 88, 40,133,107, 45,125,235, 56,185,220,242,233,229, +138, 96, 7,242, 54, 34, 61, 70, 25,178, 50, 39, 43, 10,202,105,197, 60,203,120,249,232,136, 59,135,135,188, 94, 30, 50, 65, 71, + 23, 99,233, 34,179,190,208,228, 89,129, 20, 26, 39,100, 84,177,116, 45, 98,187, 65, 14, 30,153, 11,228,228,128,127,245,157,215, +248,193,237,235,220,185,126, 19, 47,167,124, 24,122,132, 19,132,126,136, 59,250, 23,213, 65,103, 89, 66,151, 92, 50,108,250,146, + 41,113,232,193, 91, 68,231,120,119, 59,240, 23,235,154,135,190,229,255,220,212,252,101,215,115,174, 2,165, 52,132,224, 24,146, +162,211, 73, 21, 27,170, 16, 16, 90, 33,148, 65,228, 19,254,233,173, 91,252,218,209, 33,191,115,243, 21,230,243,235, 40,147, 99, +116,142, 50, 69,140,100,208,154,219,243,155,220, 94,220,102,158, 31,227, 80,180,174,229,211, 7, 15, 80, 74, 82,149, 21, 85, 57, +193,249,129,213,114,137, 36, 80,119, 61,127,218, 90,126,171,170,240,125,203,177,214, 84, 18, 26,231, 88, 3,199,222,225,181,193, +121,207,204,246,148, 82,208, 58,199,165,181,252,187,117,203,161, 18, 60,236, 98, 99, 31, 7,198,231, 12, 25, 87,249,230,123,126, + 18,227, 80, 48, 88,238,157,108,248,201,233, 37,255,215,163, 53,127,181,220,178, 29,149, 38, 34,165, 20,250,116,188,125, 72,146, +216, 33, 30, 91, 59,252,146,156, 53,249, 52, 68,230,253,127, 68, 73,155,209, 41,236, 35,153,111, 8,157, 38,120,187,131, 18, 67, +122,248,150, 89, 44,224,154, 8, 99,106,177,131,227,123,187,219,245,137, 4,225,167,137, 22,145,164, 61,223, 4,138,151, 9,146, +181,169, 80,219, 61, 98,220,216, 44, 8,246, 72,116,126,247,189,225, 5, 79,140,153,192,225, 44,217, 9, 10,178, 66, 82, 40, 21, +221, 61,149, 98, 61,244, 49,123,119,220,215,148, 81,183, 62,146,209,155,193, 97,183, 93,156,156,218, 1,100, 96,126,227, 58, 85, + 85, 81, 78, 42,154,166, 7,161,248,157,239,255, 42, 55,103, 55, 16, 66,112,182, 60,225,238,233,103,124,116,242, 24,206,207, 99, + 68,226, 47,213,164,165, 5,104, 22,253,214,235,147, 11,186,135, 39,112,126, 18,139,196,139,126, 76,167,188,253,107,111,115,243, +250, 81, 36,220,125,217,195,229, 69, 63,198,224, 31,159,252,181, 81,177,171, 86, 50,133,148, 36,156,215, 57,222,249,249,207,226, +223,155, 4,129,181,195, 78,142,230,210, 57, 21,255, 15,117,111,250, 35, 89,118,158,249,253,206,118,151,184,177,229, 86,107,119, + 87, 55,155,139, 72,137,212, 72, 20,103,145, 53,163, 17,168, 17, 96, 12,198, 30,251,139, 96,192,128,255, 62,195,254,102,192, 48, + 96,120,145,101, 91, 50, 70,163,161, 68,114,212,100, 55,123,173, 45,179,114,137,140,237,110,103,241,135,115,110, 70, 84,117,117, +119,117,147, 90, 38,129, 98,118, 49,179,170, 34,111,220,123,222,247,125,222,103, 73, 57,239,131, 97,142,143, 7,162,243,129,188, + 84, 81,169, 64, 64, 34, 8,131, 12,205, 36, 41,142, 86, 59,181,135,227,198, 75, 61,222, 75,238,203, 35, 20,159,215,169,251,189, +142,253, 57,239, 6,137,205, 12,227, 60,167,150, 2,147, 25,106,239,169,189,135, 85, 19, 73,115, 58,135,215,111,241,159,223,123, +141,111,207,167,188,126, 80,241,193,147,179,151, 55, 29, 54, 68,231,185,144,200,135,117, 31, 61, 2, 32, 22,116, 17, 67, 87, 34, + 7, 69, 71, 54,126,150, 18,208,244,224,243, 31,184, 51, 27,241,135, 7, 71,220, 45, 39, 4, 2,127,190, 88, 35,156, 69,244,254, +166,176, 47,125,206,239,220, 57,228,173,234,144,214, 91, 50,101,248,184,219, 50,221, 44, 56,148, 6, 83, 29, 32,178, 28,101, 74, + 68,240,209, 78,217,119, 92,246, 13,103, 66,178, 82,138,214, 11,178,172, 98, 58, 82,188,150, 23,168,228, 10,168,165, 36,151, 26, +167, 97,235,193, 9,133, 87, 10, 45, 53, 90,105,106, 1, 94, 42,154, 54,186,168, 29,231,158,220,183,252,245,123,239, 32,123,201, +108,213, 83, 53,158,118,189,101,211,119, 60,219,110,120,180,188, 98,185, 92, 68, 67, 28,101, 80, 66, 33,130, 64, 26, 69, 86,104, +178,105, 78, 81, 21, 84, 85,197,109, 89,225, 59,203,162,107,176, 58, 68,208,111,100,120,179,200,120, 59, 51,188, 33, 21, 89, 80, + 92,213, 22,113,189, 68,108, 27,196, 72,240,181,233,156, 7, 7, 51, 46,130,224, 73,175,120, 71,149, 80, 8, 68,166, 96,211,165, + 52,196, 47, 48,125,113,142,144,212, 49,248,254, 51,155, 75,241,194,159, 1, 31,221, 2,107,203, 71,181,229, 73,211,112, 46, 4, +143, 58,203, 60, 83, 49,167, 34, 68,148,112,221, 89, 90, 60, 43,169, 17, 34, 48,201, 70,252,119, 39,199,252,225,241, 45, 30, 84, + 51,190, 61, 63, 98,146,151,244,121,201, 38, 56,182,157,197, 57,139, 20,154, 50, 43,169,202, 41,121,150,145,203, 2,219, 11,206, +182, 23,156, 93,175, 8,120,156,235,232,108,203,163,171, 83,158, 58,207, 47,218,142, 63, 30,197,179,123,105,123, 22, 82, 82, 32, + 24, 73, 65,219,174,209,102,196, 7,125,199, 93, 41, 49, 82,145,185,142, 71,157,101,217, 91, 78, 52, 92, 89,203,114,157,114, 71, +218,176, 67,200, 62, 85, 31,110,224, 91,158, 39, 24,201,157,217, 88,219, 69,201,230,114,117,131,162,208, 37,107,217, 54, 73, 95, +187, 62,170, 71,134, 44,138, 95,202,168, 70,126, 90, 66, 32,229,223, 97, 81,247,123,108, 93, 37,227,126,130,116,232,117,123,174, + 62, 34, 77, 2, 34,121,180, 43, 34,163, 87, 16,139,134, 25,166,113,187,139, 51, 20,122, 87,100,135, 98,255,121, 83,187,214,145, +217,219,239,193,160, 74, 39,195,155,129,204, 32,119, 6, 52,214,239, 14,207,225,226,245, 9,176, 10,175, 56,229,230, 25,156, 28, + 66,158, 49, 62,152, 80,100,209,226,181, 42, 36, 2,201,178,177,108, 59, 75,104,218,248, 58, 74,131, 84, 34,134,215,117, 30,215, +116,241,107,219,148,205,155, 73,238,223, 61,230, 7, 95,255, 22,223,121,253,215, 56, 25, 31,240,201,234, 18,114,195,247,223,248, +117, 38,147, 25, 62, 4,254,242,253,159,240,179,139,211, 24,207,185,185,248,252, 9,241, 85, 63,156,139,135,249,106, 27,243,203, +219,250,203,255,189,109,203,217,249,130,179, 15, 63,220,237,102, 7,200,118,248,245,101,110,120,157,228, 48, 74,198, 9, 89,155, +221,125,228, 19, 39,162, 31, 82,225,162,196, 45,178,197,251,136, 16,101, 41, 12, 64, 37,219,215, 60, 41, 30,100, 22,223,240,116, + 64, 75, 5,165, 81,104, 17, 15, 9,233, 61, 58,151,209, 38, 26,199, 55,239, 30,113, 84,141,152,150, 5,139,171,117, 82, 88,232, + 72,152, 51,121, 68, 84,148,142,247,244,171,170, 37, 62,239,135, 30,174,213, 96,154,180, 95,216,189,199, 33,233,139, 2,242,140, +145,148,156,117,201, 53, 41, 56, 88,110,160,204,248,157, 7,175,113, 50, 63,192, 5,131, 50, 57,239,182, 93,124, 79,110,226, 30, +253,110,106, 11, 50, 94,155,225, 89, 27,140,117,124, 34,120,109,154,100,222,148,197,180, 58,147,131,119,136, 33,186,182,183,172, +149,228, 86,161,200, 8,252, 79,231,151,156, 91,159,248, 42,137, 45,237, 61, 66,103,124,235,176,226,160,172, 88, 7,104, 9, 92, + 57,203,127,191,216,240, 70,179,226,100,122,128, 30, 31, 35,139, 34,174,158,172,199,167,230,202,183, 53, 31,116,158, 54,203, 49, + 90,241,141,106,138,240,129,220,104,132,210, 88, 23, 48, 66,210, 17,184, 10, 6, 39, 21,178, 28,225,149,194,235,156,177, 16,100, + 38, 39,235, 58,126, 99, 90,240, 71,119,238,114, 32, 51, 58,123,205,255,245, 31,126,196, 7,155, 71,228,219,154,159,126,244, 14, + 31, 62,253,128,179,235,103,116,155, 11, 22,155, 5, 15, 55, 11,100,221, 97,156, 38, 56,143,176, 30, 89,104,204, 40, 67, 25,137, +206,115,148, 84,204,124,193,233,118,197,185,107, 57, 35, 48,207, 51,178, 76,241, 96, 58,226,126, 53,226,190,209,124, 43,207, 17, +185,100,237,122,220,249,134,211,126, 69,219,195,147,181,227,223,183,158,165, 8,145, 22, 51,157, 68, 45,183,202,193, 54, 81, 7, +207,231,152,189,120,183,123,223, 94,216,197,139,207, 42,236,131, 9, 23, 62,173,161,122, 66, 99,161,235,121,132,100,166, 32, 51, + 57,155,174,197, 57, 71,211,119,180,193,225,133,230,247, 38, 5,223, 59, 56, 97,150, 77, 56,172, 42, 84,158,161, 76,198,227,198, +114,177,181, 44, 90,203,233,118,133,235, 91,116,102,208, 50,163,154,140,241,190, 71,208,211,217,154, 95, 60, 60,229,236,236, 25, + 31, 61, 61,229,131,197, 5,151,171, 53,171,229, 18,164,224,245,170,160,238,123,198, 74, 49, 15,129,109,223,114,142,224,237,108, +196,101,191,229, 45,101, 88,249, 14,233, 28,109, 8,156, 59,199,129,243, 60,241,150, 15,150,253,142,235, 37,211,202,243,101,220, + 34,207,206,171,100,127, 98,255,204, 68,183,221,253, 78,219, 69,184,125,155, 36,157,182,219, 17,223,126,169, 41,253,133, 55, 42, +229,151,252,221,154,207,228,217,142,173, 43,197,110,103,103,210,158,177,200,192, 53,113,202,178, 54, 30,132, 50,193,121,106,216, + 75, 36,150,175, 74,127, 70,101,187, 67, 71,238,177, 10, 5,159,157,252,117,251, 24,249,205,251,132,203,237,110,170,200,210, 82, + 91,234, 61, 50,130,223,251,123,194,243, 58,105,239,119, 94,245, 95,244,230,140,138,184, 71, 31,149,140,166, 57,183,198, 99, 10, +163, 56, 26, 85,180,214, 82, 91,199,214,118,216,117, 29,247, 44, 41, 61, 44,248,128,107,211,110,211,246,137,161, 9,148,134,124, + 62,226, 31,189,118,143,215,239,189,133,145,146, 50,203,145,162, 67, 88,203,237,249, 45, 76,150,113,189, 93,242,108,241,140,203, +139, 11,184,184,188, 49,254,248,149, 52,104,131, 68,234,151,185, 49,235,122,183, 95, 54,217, 78,226,168, 72, 83,246,151,137,109, + 76,255, 35,242,157, 68,207,249, 8, 43,223,164,240,165,215, 91,148, 17,110,119,110, 71,208,188, 33,178,164,245, 80,144,100,153, + 33,215, 2,231, 2,153,145, 76, 75,131,150,144, 41, 25,169, 28, 46,114, 48,148, 84,104,163, 56,153,142, 24,229, 89,218,218, 4, +174,101,148, 32,222,232,141, 85,178,132,117, 3, 89,174,255,229,154, 44,253, 66, 28,227,205,126, 95,238, 8,133, 2, 92,150,211, + 21,134,149,216, 35, 68,182, 29,172, 59,232,106, 54,243, 41, 15,230, 7,244, 66,243,176,119,156, 94, 95,198,162,126,147, 54,184, +135,124,245, 54, 50,179,197, 96, 24,149, 44,102,125,186, 71,125,159,136,148,101,210,181,167,233, 71,233, 88,216,131,135,198,243, + 55,215, 43,254,116,181,225,188,141,230, 83, 34,211,145, 4, 38, 13,194, 11,132,107,232, 71, 5,179, 92,227,133,230,202,117, 60, + 10,150,139,160,248, 81,179,229,119, 21,148,147, 99,100,102, 16, 38,139, 33,122, 33,160,144, 76, 37, 84,219, 21, 63,110,122,114, +163, 56,214,138,121, 89,161,144,212, 93,135,134,104,182,162, 12,143, 28, 8, 83, 80,100, 5, 90,103, 84, 74, 50, 46,114, 68,239, +184,115, 56,229,247, 78, 38, 28,228, 25,101,166,249, 96,113,205,105,219,115,118,126,205, 95,124,244, 33, 63,189,124,198,207,207, + 46,249,248,234,138,179,229,138,203,118,203,217,234,138,109,232,184,232, 91, 46,154,104,246, 82,216, 64, 38, 21,102, 84,196, 61, +179, 3,183,233,232,154,150, 95,176,101, 33, 12, 22,201, 73,149, 83, 32,153, 20, 5,135,227, 18, 93, 26, 78,170,146,215, 76,206, +215, 53,136,179, 75,254,253,147, 15,249,171,237,138,235,205, 21, 2, 11,121, 92, 77, 48,169, 96, 62, 65,204,198,160, 50, 68,219, + 70, 15,246,207,146,142,125, 17,199,249, 37,223, 27,246,206,189,208,118,177, 72,217, 30, 54, 61, 79,172,103,172, 37,109,239,233, +131,163,238,123, 86,125,207, 33,142, 63, 56, 60,230,181,241,148,204,148,140,198, 37, 58,203,112, 82, 32,180,228,195, 77,207,143, +218, 53, 87,118,203,117,191,229,114,187, 38, 19,208,118, 91,156,237,104,251,142, 39,139, 39, 92,219, 14,154, 14, 33,210,106,162, +239, 99,242,157,209,124,212, 90,164, 12,220,149,130,165,235,201,181,225,208,182, 44,133, 98, 34, 21,215, 62,122,250,139,224,185, +114,142, 59,222,243, 39,215, 45, 7, 26,122, 47,169,109,226,100,249,180, 86,250,172,116,185, 97, 72,183,126,247,249,239,235, 99, + 88, 27, 14, 2,162,193,217,206,249,191,227,162, 62, 24,104,244,253,206,175,122,112,146, 51, 58,118, 51,131, 77,222,126,183, 36, +136, 95,211, 42, 65,248, 41,188,162,200,246, 44, 51,253,243, 82, 1, 62,163,168,251,152,228, 21,156,140,118,140,222,199,191,167, + 31, 86,254,233,224, 17,201,128,134, 61, 4, 96,136,105,117,169,200,191,202, 46,218, 20,145, 64, 85,149,200,137,225, 86, 85, 81, + 24,195, 56,203,144, 82,243,172,107, 88,118, 45,182,238, 99,195,162,146, 65, 65, 19,237, 94,177,125,212, 9, 7, 17,247,186,121, + 70, 62, 29,241,181,163,138,113, 14, 19, 51,195,152,156,109,215,240,244,226, 49,189,107, 88,219,154,166,107,120,178, 56,229,221, +199,143,225,226, 26, 86,215,188,154, 43,207,223,195,135,201,226,197, 31, 92,252,130,216, 67, 79,120,181,215, 61,220, 55,194,239, +252,152,179, 61, 61,119,232,119,169, 78,141,221,165,244, 14,193, 65, 38,221, 75, 74,147,103,134,224, 97,148, 9,148, 86,204, 74, + 69, 33, 5,133, 18,228, 82, 96,132, 68,163, 32,147,204,180, 74, 64,128, 96,219, 59,102,163, 2, 45, 53, 14,207,249,182,222,147, + 72, 14,205,159, 76,209,173,110, 87,244,190, 74, 97,191, 33,200, 13,230, 20, 47, 64,131, 3, 67,222, 19,195, 93, 70, 21,179, 92, +115,146, 25,142,140,100,172, 36,203,166,131,166,161, 21,138,119,140,230, 61,107, 57,181,233,217,124,124,158,164,129,233,240, 24, + 60,235,125,202,146,158,150,252,240,100,204,239,223,154,114,160, 37, 31,158, 47,146, 45,175,142,200,196,180, 74,242,181,180,186, +112,209,180, 67,164,160, 24,172, 71, 92, 47,111,210, 15,133,137, 49,203, 98, 92, 32,166, 99,126,231,193, 9,183, 71, 25,139,174, +231,137,116, 44,165,226, 39,189, 64, 74,141,210,134,255,251,163,143,249, 23,147, 17,249,193, 45,164,142, 18, 42, 57,174, 40,231, + 39,204,103,119, 56,174,123,178,245, 21, 63,115,150,131,204, 48, 86, 10,107, 91, 14,242, 2,107,123,122, 2, 63,175, 29, 62,139, +241,197,149,210, 76,181,230,246,184,160, 80,146,249,108,132,237, 61,211, 92,226, 67,224, 97,221,242,151, 23, 43, 30,175,175, 9, + 77,135, 23, 14, 47, 20, 30, 23, 21, 41,189, 99,213, 56, 86,235,150, 79,186,154, 62,212,124,236,106, 46,186,134,106,219, 50,237, + 37, 70,154,184, 98, 93,118,116,117, 67,107,107, 62,234,106,158,224,185, 16,146, 34, 8,166,153, 70, 74,137,202,115, 84,102,248, +218,236,128,223, 60,152,241,253,105,206,183, 11,205,237,109,224,240,226, 2,125,254,140,139,118,133, 16, 81, 94, 41, 66,218, 93, +171, 12,113,114,136,152,143,227,127,183,105,165,241, 18, 25,220, 23, 21,249, 87,106, 2, 6, 19,166, 85,195,169,243,180, 93, 79, + 16,129,117, 31,232,149, 64, 11,201,137, 54,124,109,122,200,253,249,156, 70, 40,116,174,104, 5,252,108,181,225,199,219,134,143, +124, 75,103,107,106,215,177,236, 90, 62, 90, 94,162,108, 71,223, 53, 92,110, 22,156,119, 75,182, 77,207, 15, 15, 11,254,245,173, + 25,111,143, 11,190, 89,230,252,141, 16, 8,169,112, 82,178,232, 35,154,154, 57,203,182,239, 88, 56, 88,244, 45,207,108,207,200, +246,156,123,207, 68, 4, 14, 2,252,162,105,185, 43, 61,255,174,129,237,118,203,161,128,186,237, 56,174, 12,219,198,239,101,125, +188,112,142,251,189, 28,145, 47,115,148,234, 87,248,126,163,227, 89, 52,248, 94,188,146, 65, 77,122,222,111, 38,245, 0,216,175, + 80,212,245, 47, 89, 27, 76,138,191,188,129, 29,251, 29, 12,127,227, 54, 23, 82,241,214, 59,118,122,110,146, 78,120,200,149, 78, + 50,180,129,128,244, 98, 17,255, 60,121,150,115,209, 65,104,112,230, 18,121,148,170,237,155,202,144,246,134, 93,251, 60,153,236, +203, 16,203, 70, 5, 84, 21, 84, 57, 24,137,201, 53, 85,158, 51, 54, 25, 66, 11,214,117,203, 85,211, 97,155, 54,178, 41,195,208, +121,185, 8, 1,119,137,205,158,155, 36,195,202, 65, 73,116,166,152,100,134, 60,211, 52,205,150,197,114,193, 71,103, 79,176,174, + 67, 8,184, 88,109,248,217,147, 71,156, 63, 57,133,203, 37,244,219, 29,145,236, 31, 82, 33, 47,146, 13,170,200, 98,177,205, 20, +200, 50,193,182, 73,219,248,101, 94,247,224,131,174,138,228, 95,160,118, 17,141,131,156,100, 40,242, 38, 21,212, 97, 15, 63, 50, +241,251,149, 64, 43,193,212, 8, 42,149, 33, 9,204,198, 25, 66,122, 74, 21,139, 91,145,201,184, 30, 39,185,134, 9,129, 73,178, +178, 69,219,210, 58,203,229,166,193, 5,145,146,221, 82,113,221,151,181, 25, 21,119,218,125, 98,206,251, 47,121, 74, 12, 67,250, + 16, 8,179, 31, 60, 47,146, 63, 4, 18, 38, 5,234, 96,134,204,115,238, 20,154, 91,198, 80, 74, 73, 22, 60,183,115,193,217,114, + 19, 97,248,241, 56,105,252,137,197, 60,132,104, 75,122,243,204,236,189, 70, 17,120,112,116,192, 15,142,167,204,202, 9,179, 66, +243, 23,103, 87, 73,254,169, 96, 52,142,133,125,248,126,151,184, 24, 38,143,217,226,164,233,189,109,210,212, 21, 37, 62, 98,154, + 67, 85,240, 71,119,142,248, 23,119,238,113,187, 40,120, 88,111,249,179,101,207, 83,149, 35, 70,211,104,189,106, 50,164,239,248, + 53, 60,135, 71,183, 35,187,186,202, 81,111,156,160,102, 19,244,108, 74,222, 86, 28,109, 55,124,188,120,204, 89,176,204,148, 2, +161,216,134, 8, 13, 95,245, 13, 31,136,140, 99,147,113,104,114,110, 27,197,173,169, 97,172, 21,147,145, 36,235, 99,227,116,186, +234,184,240,150,159,159,173,184,176, 61,171,224,113,117,139, 95,172,241, 70,224, 90,139,115, 30,111, 50,156,119, 56, 99,160,233, +121,124,118, 69,239, 44, 43,191,229,188, 89,112,220, 88,166,174, 32,116, 61,206,123,174,175,174,249, 15,235, 83,126,102,151,188, +211,247,108, 69,160, 35,250,140, 87,153,162, 9,146, 81,158,241, 86, 53,231,107,211, 3,166, 38,103, 20,122,198,202, 35,145, 28, + 1,191,209,116, 60,126,244, 9,117,223, 32, 66,159, 72,105, 50,106,193,205, 8, 49,159, 34,111, 31, 32,110,159, 32,242, 2,177, +181, 81, 93,241,183, 49, 53,186, 14,177,217,208,110, 91, 86, 1,186,190,231,245,195, 3,102,229,132, 34,203,152, 8,137, 81, 5, +211, 44, 99, 35, 5, 15, 59,199, 47, 22, 91,254,207,237, 50, 78,200, 46,113,165, 68, 68, 1, 47,186, 45,143,234,107, 22,237,150, +117,211,243, 95, 77,114,254,205,241, 9, 83,173,249,222,108,134, 54,130,183, 10,205,143, 18,114,107,149,228, 72, 8, 86, 62,240, +115, 39,200, 51,248,155, 62,240,166,129,255,181,238,248,154,150, 60,222, 52,212, 34,208, 4,207,143,106,201,131,208,114, 97,161, +181, 29, 65, 72,182,109, 66,129, 91,183, 83, 63, 13, 31,135, 71, 95, 29,233, 52,137, 99,163, 85, 60,203, 67,170,131, 82,237,210, + 42, 7, 39,166, 48,196, 72,191, 66, 97,247,251,187,126,110, 24,246, 95,190,168,255,178,117, 65,136,120, 99,221, 68,170,166, 44, +219,174,223, 65,134,131, 25,205, 0,209,107, 21, 29,187,240, 48,158,196, 31, 90,165, 20, 53, 45, 94, 14,151,124, 17, 27,125,112, +230,146, 69,220,175,155, 12,138, 73, 98, 60,219,228,231,237,191,154,169,205,208,217,141, 39, 41,119, 59, 67,149, 57, 85,110,152, +103, 10, 39, 5,181,237,184,236, 61,155, 62,237,208,131, 72, 38, 61, 97, 47, 32, 36, 57, 16, 9,181, 75,169,147, 18,101, 36,117, + 90,161, 62,221,108,121,178, 88,211,134,142,141,119,180,189,227,162,174,227,106, 97,211, 0, 77,252,153,134, 80, 16,249, 15,164, +160, 35,163, 5,169,201,147,189, 97, 30,155,171, 76, 39, 50, 86, 10,180, 20, 98, 87, 8, 63,107, 98, 29, 86, 32, 67, 81, 23, 9, +105,177,195, 74, 38, 69,166,234,108, 71,200, 28,248, 17,163,226, 70,179,158, 87, 37,149, 80, 24, 33,152,101,134, 34, 23,140,141, + 70, 4, 73, 38, 21,222,123,170, 60, 26,217,152, 92, 33,131, 32,168,168, 92,240, 1,148, 81,100, 82,210, 7,232,156,199, 6, 65, +112, 97,183, 30, 24, 26, 77, 23,146, 46,214,196,123,173,183, 95,146, 67,176,231, 13, 45,249,244,158, 79,229,241,192, 40, 21, 84, + 35, 66, 89,112, 52,173,184,103, 12,218, 24, 60, 1,237, 61,222,247,156,158,111, 19, 19,215,193,209, 60,217,146,230,113,237,181, +237, 35, 95, 98,136,118, 29, 8,168,189,165, 25, 85,188,117, 52,161,247,158, 31,181, 29, 79,174,234,221,154, 72,164,103, 75,101, +187, 21,131,210,201,140, 39,174, 70, 68,155, 52,191,195,164,215,244,241, 62, 40, 11,254,229,193, 1, 95, 31, 31,161,148,226,147, +190,230, 35, 15, 98, 84, 33, 85,129, 52, 5, 82,231,104, 37,184,190,124,204,119,231,119,200,231, 7,136, 89,137,190, 51, 71,142, + 11,164, 86,132,141, 32,172,107, 22, 31,125,192,143, 62,126,138,159,103, 92,180,107, 78,219, 26, 73,224,189,117, 77,208,134, 7, +197,152,183, 75,197,241,184, 34, 83,146,185,150,204, 51, 77, 37, 2, 66, 41, 58, 33,184,218, 88,150, 77, 67,221,173, 89, 35,176, + 56,124,223,227, 67,192,245, 29,190,119,120,215,227, 16,184,186,165, 55, 10,223,122, 54,182,101, 81, 59,234,122,205,249,226,140, +187,190,227,250,252, 25,205,114,197,159, 62,121,135, 15,234,107, 62, 14, 61,143, 76,143, 76, 50, 0, 0, 32, 0, 73, 68, 65, 84, +155,134,218, 90, 26, 4,235,222, 82,251,104,146,243,160,154,241,102, 62,138,118,210, 58,167, 40,199,180,161,167,243, 30,107, 61, + 51,169,249, 78, 94,240,181,166,229,241,197, 21,205,197, 85,108, 54,181, 70, 74,133,204, 52,223, 63,126,141, 63,254,250,183,248, + 71,247, 95,227,221, 82,209,173, 27, 68,223,125,234, 94,251, 34, 72,254,149,190, 94,100,241, 44,213,130,108, 50,225,222,120, 28, + 9,113, 65,176,240,158,167, 93,207, 19, 39,121,212, 58, 30,182, 13, 63, 95,111,216,180, 53, 77,183, 33,224, 9, 46,229, 37,144, + 16, 74,162,197,237, 55,164,226, 15,230, 21,153, 80,220, 46, 74,206,173,101,154,130,160,206,123,203,185,117,144, 41,206,146, 10, +226, 66,106, 62,233, 44,111, 75,201,169,131, 55, 71,154,247, 26,207, 86, 41, 36,142,191,108, 60, 95, 83, 45, 63,179, 34, 26,130, +230,121,170, 41, 68, 18,242,128,122,237,243, 93,190, 74, 65,215, 58, 13, 13, 41,113,116,144, 65,103, 50, 62,251, 62, 37, 88, 34, +158, 71,218,204, 32,151,118,175, 86,143, 95, 24, 52,255,238, 3, 93,188,223, 73,194, 66,216, 77,234, 69,182,139,230, 28, 76,105, +186,126, 7,139,226, 33, 43,200,191,251, 13,220,227,179, 68, 98,210,187,139,255,156,243,194, 75,226, 86,243,189,110,201,185,248, +251,162,132,147, 91,112, 56,143,147,138, 52,137, 16, 84,199,107,220,181, 95,173,152,155, 34, 18, 87,164,128, 89,201,120, 82, 50, + 47,115,166, 69, 78,227, 29,181,181, 44, 26, 71,240, 30,231, 3,247, 38,115,142,171, 41, 85,145,177, 90,109, 19,180, 63, 24,155, +168,184,227,237,125,188, 30,171, 45,110, 83,211, 93, 92,113,121, 85,179,172, 61,155,214,179,234, 45,155,174, 99,179,168, 9,139, + 77,116, 87,179,118,183,251, 25,200, 98, 90,126,154, 36,248,119,249,161,117, 44,224,183, 15, 98,225, 24,101, 73, 9,145,197,188, +100,146, 85,176, 78, 69, 68,137, 88,171,246, 39,140,125, 66,221, 13,209, 81,238, 32, 26, 37, 35, 3, 94,201,231,227, 94,109, 31, +239, 23,165, 35, 68, 63, 41, 35, 41,210,196,251, 34, 87, 80, 8,193, 72, 11, 10,169, 16, 72,164, 1, 35, 4, 82, 6, 74,173,105, +123,135,201, 52,190,115,168, 36, 81,243, 82,160, 84, 76,224,242, 82,210,135,128,208, 18,239, 60, 78, 14,106,143,164,224,112,169, + 73, 29,148, 27, 54,145,249,190,140,114,128,189, 7, 89,238,187, 77,165, 48, 22,173, 82,228,105,234,250,143,102, 88,109,184, 85, + 86,108,108, 71,166, 50,218,174,197,245, 13,207,158, 94,237,200,130,243, 49, 76,102, 72,109, 56, 24, 31,224, 71, 18,247,228, 42, + 77, 79,207,203, 54, 93,231,248,169,210,252, 24,120,124,189,141, 77,196,166,143,239,211,176,179, 15, 41,123, 26, 25, 93,247, 6, +189,110,235,161,173,119,240,174,247, 17,146,239, 44, 34,207,121,163,148,100, 66,240,193,230,154,127,119, 93,179,238,124,116,198, +203, 43,100, 94, 48,214, 6,213, 91,214,222, 17, 78, 63,230,141,163,123,232,170, 66, 77, 11,132,212,208, 4,252,217,138,190,217, + 34, 89,179, 89, 44,120,239,195,143, 56,111,225,162,233,249,100,187,165,147, 25,111,143, 38,124,163,200, 56, 40, 10,102,153,225, + 65,153, 49, 85,146, 3,173, 8, 33, 48, 22, 30, 39, 52, 70, 40, 54,155,150, 92,105, 78,235, 45,214,117,120, 3,110,211, 19,121, +247, 30,103, 61,126, 84, 68, 42,199,182,193,141,115,124,221, 99,183, 13, 75, 47,120,239,252,154,255,120,125,198, 95, 60,123,204, +255,242,232, 93,254,183,203, 51,174, 22, 75,254,250,252,154, 46, 4, 92,112,244,125,139,196,177,114, 61,214, 11,110, 21, 5, 35, +165, 56, 25, 79,145, 70,179,105,182, 92,120,199, 51,223,163, 20, 76,180,164, 84, 49,221,241,205,210,128,183,156, 61,185, 70,174, +174,145,190, 71,230, 21,255,197,235,175,115, 56, 42, 25,141, 43,100,200,249, 96, 44,226,250,164,233, 62,117, 6,136, 47, 59,159, +189, 4,133, 21, 89, 9, 65,114,124, 50,227,164,154,224,124,207,117,189,197,121,207, 82,104, 86, 93, 71,237, 61,109,211,145, 11, + 71,238, 59,166,206,146,117, 13,206, 57,122,219,198, 60,247,172,140,110,185,121,201,127, 61, 53,204,165,225, 56,207,232, 8,104, + 25,115, 50,158,245, 61,189,128,119,135,245,168, 84,172,165, 97,162, 5,121,150,243,137,139,170,162,159,119,158,219, 2, 30,201, +168,205,191,165, 4,239, 53, 46,122, 59, 25, 21,125, 27,180,138, 3,147, 50,177,148, 88,251,197,210,211, 87, 65, 14,227,133,217, +173, 6,229,128, 6,171,136, 14,187,132, 54, 27,177,243, 72, 81,233, 28,251,138, 36,218,191,191,148,182, 1,106,239, 83,164,164, +139,123, 54,114,179,211,182,231,217, 46,208,165,143,135,131, 59, 77,134, 23, 82,239, 18,169,134, 3,231,166, 99,121, 9,228,175, +211,244, 34, 83,145, 68,192,252, 0,198, 99,242, 60,131, 32, 41,171,130, 94,153, 40, 73,112,221,151,152,156, 82, 71,150,207, 98, +193, 44,243,248,127, 87, 57, 89, 89,112, 56, 42, 40,140,198,135,192,178,181,180,206,211,133, 64,219, 57, 78, 70, 83,190,117,235, + 77,198,229,152,178, 24,241,116,121, 29,117,234,150,157, 67, 92,211, 69, 45,119,183,138,145,140, 77,157, 92,141,250,104, 84,177, +220,192, 98, 5,139, 13,212,203,248,117,231,184, 73,244, 81, 58, 78,109,194,192,237,187, 80, 86, 80,142, 99,196,230,175, 66, 86, +245,170, 31,163, 34,134, 52,140,203, 84,216,228,141, 47,178, 44, 13, 50,203,152,140, 39,160, 13,213,164,138, 6, 55,101,138,255, +196,237, 30, 48,249, 5,112,131, 74,130, 89,225,192, 75,254,248,191,253,111,248,233, 95,255,100, 87,228, 85, 98,164,155,161, 57, +136, 80,186,144,130,145,210,140,165,196, 2,213, 72, 35, 67,192, 40, 73, 46, 37,109,112, 20,128,179, 30,105, 20,193,122,186,212, + 76,104, 1,157, 23,216, 4,173,123, 27,112, 33,224,186, 62,113, 61,220,206,218,120,240,211,239,146, 20,198,219, 87,116,243,251, +140,189,154,220,235,216,139,193,239, 94, 70, 43, 88,109, 96, 86,226,178, 28,111, 59, 70, 89, 22,109,228,251,158, 95, 60, 93,224, + 86,235,157, 29,229,108,194,241,209, 29,126, 48,154,241,102, 89,113, 71,103,124,216,111,163,167,255,139,230, 74,125, 7,171, 13, +193,228, 73,127,158,216,239,109, 23,167, 29,155,242,159, 93,106,146,131,220, 73, 69,229,243,105, 94, 55, 76,237,182,133,205,154, +159,173, 59, 30, 55,107,254,244,244,154,205, 98,139,204, 4, 50,207,145, 66,115,171,156,113,172, 51,126,247,238,156,223, 58,156, +227,141,160, 91, 47, 57, 25, 31,147, 85, 5,210, 9, 88,182,184,103,107, 92,187, 65, 72, 40,180,229,231, 79,158, 33, 55,107,212, +122,131,106, 98, 80,201,239,142, 21,247, 70,209, 36,102,174, 21, 69,145, 49,213, 26,129,224,200, 7, 42, 41, 57,145,129,179,214, + 33,133,100,107, 45, 65, 42,150,193, 18,250, 30, 95, 42,124,231,241, 62,224,165,192,119, 93,220, 52, 8, 25,101,207, 4, 92, 89, + 96, 23,107, 92,153,243,172,117, 60,106,214,156,250,140,237,234,154,179,174,198,173,174,113, 87, 43,220,178, 38, 56, 75,179,173, +209, 66,240,168,107,120,175,109, 56, 24, 79,144,214, 83, 24,205,199,125,195,135,125,205,181,181,228, 4,250, 16, 24,105, 77,165, + 53,185,145, 28, 20, 57,127,185,234, 41,230, 37, 97,185, 66,110,214, 28,102,142, 91,163, 9, 79,219,150,255,125,181,162,245,125, + 60, 87,134,128,158,174,127,174, 89,251,114,133,125,224,163, 68,126,148, 72, 86,204, 98, 60,227,245,147,219,168, 76, 81,183,129, +214,117,252,226,236,146,186,171, 25,101,134, 82, 43,170, 82, 96,132,103, 28, 60,198, 91,180,237,113,157, 37, 3, 70, 82,242,235, +211, 59,124, 99,118,135,163,124,194,194,215,124, 87, 41, 14,146,143, 64,103,123,164,210,156, 89,203, 7,125,195,199, 54,173,218, +146,107,100,155,146,213,144,154, 45,128, 52, 92, 74,193, 88,101, 72, 15, 39, 25, 28,101,146,105, 16,212, 33,208,137, 52,236,104, + 25, 99,138,139, 60,146, 65, 67, 26,170, 36, 95, 94, 38,173, 19,183, 68, 38,164,209,166,104,111,153,226,142,109,155,134, 72, 31, + 11,122,159,140,207, 20, 73,250,249,213, 77,105,254,254,138,186,247,169, 59, 74,236, 40,155, 32,187,166,221, 65,227, 42,105,121, +187, 62,254,190, 27,152,234, 38, 14,248, 34,153,208,124,145,231,186,202,162, 43,157, 76,176,189,148, 49,174,179, 26, 51,158, 76, + 80, 66, 68, 98,187,144,244, 93, 36,210,209,109,119,100,190,207,205, 70, 47,160,156,192,228, 16, 38, 35,168,178, 24,242, 82, 40, +212,164,100,154, 23,148,153,198, 0,173,243,108,172,101,211, 58,130, 7, 45, 36,111,222,186,205, 65,121, 64, 16,158, 76,148, 20, + 35,195,249,249, 51,168,109, 12,221, 88,175,162,165,103,179,217,101,146,223,236, 42,135,156,242, 46, 53, 69,221,243,185,229,153, +132,241, 60,238,244, 71, 51,152, 78,201,167, 19,142,143,167,168,170,164, 93,182,159,110, 94,190,200,159,252,151,153,208,243, 60, +198, 18, 86,201, 85,172,139,193, 21,163,162,226,193,244,136,131, 98, 68, 97, 50,238, 29,206, 41,116, 70,166,224,168,170,152, 29, +207,184,214, 89,114, 32, 84,187,125,151,144, 59,171,219,155,128,151,189, 53,143,136, 69,239,205, 95,123,139,119,127,250,110, 44, + 76, 25,187,251,174, 40,192, 8, 84,145,131,243,100, 70, 83, 9,129,201, 36,163, 76, 98, 59, 79,153, 75,114,169,176,193,199, 6, +218, 7, 58,231,110,248,152, 58,196, 52, 55,155,130,225,250,129, 6,160, 32,184, 64, 47, 6,131,138,189,247, 76, 16,165,137,131, +223,130, 79,141,237, 87,153, 10, 60, 59, 25,219,240,222,137,236, 38, 90, 1,147, 39,121, 30,108, 36, 60,107,123, 78,157,231,252, +122,141,187, 88, 66,187,217, 53, 4,243, 3,222,158, 79, 57,153, 28, 19,164, 32, 40,197, 51,187,166,123,250, 44,193,146,124,122, +197, 37,116, 52,173, 25,220,227,116,242,194,247,105,213, 35, 18,169,212,165,226,225,236,115,235, 50,241, 34, 89,167,183,136,186, +101,177,216, 32,234,109, 36,122,213, 29,178,208,136,106,202, 27,213,152,183,198, 83,190,121,123,206, 72,102, 8, 41,121,120,241, +148,215, 68,193,116,126,136, 12, 2,225,136,102, 54,189, 5, 28, 69,158, 49,234, 26, 30, 45,151, 40, 28,186,239, 57,108, 91,126, +111, 54,166,202, 75,230, 89,206,184, 26, 83, 6, 65,102, 84,140,155,144,146,204, 57, 60, 48,149, 1,145, 41, 58, 47,185,180,142, +165,235,241, 93,139,215, 2,159,231,209, 87,100, 93,227,235, 26, 47, 13,222,123,188,137, 17,170,118, 91,227,133,192,106,133,173, + 59,156,151,216,102,131,203, 74, 44,209,130,216,105,133,183, 53,190,238,240,109, 67,179,218, 16,172,165,182, 29, 63,106, 59, 90, +229,120,191, 89,241,212, 57, 62,105, 86, 52,109,139, 12,158,194,121, 2,129,128,100, 36, 53,179, 81,198,215,143,198, 28,205, 70, +152,217,152, 67, 35,248,232,233, 37,255,199,135, 31,240,227,235, 11, 58, 2,116, 53,132,144,124, 21, 52,204,166, 80,141,119, 65, + 50, 47,201, 68,255, 92,201,137, 76,220, 23, 33,163, 11, 93, 62, 97,246,250, 61, 42,157,209,117, 22, 31,224,253,211, 75,220,217, + 37, 27,107,153,151, 57,153, 9,228, 65,160, 68,160,179, 13,153, 48, 4, 39, 48, 2,164,109,185, 87, 30,112,247,228,132, 91, 71, + 71, 84,227, 10,143,228,190,173,201,131,231,150,206,241, 34,176,177,158,143,186,134, 63,105, 58, 26,203,142,151, 53, 88, 54, 75, +147,200, 28,233,107, 42, 99, 46,224,150, 81,108,133,100, 46, 37, 70, 57, 30, 59,143, 67,236, 56, 56, 58,249,149, 20, 89, 58,175, +198,241,243,112,222,192,171, 69,122, 15, 89, 38, 74,239, 88,242,122, 40,232,253,206, 77,110, 56,182, 68,114, 86,181,110,119,142, +253, 39, 87,212, 53,187, 60,117,233, 19,204,206,206,119, 93,138, 88,172,141,222,189, 89, 67,122, 91, 63,236, 72,147, 25,205, 23, +253,240,153, 78,157,156,220, 29,248, 33,218,209,118,218,160,165,140,171, 87,136, 69,253,242,108,119,161,141,138,175,161,156,197, +155, 63,159,196, 55,218,140, 34, 9,206,148, 49,140, 32, 31,204,111, 64, 86,154, 44,207,152,100, 25,179, 34, 71, 32,105,130,103, +213,218,104,239,234, 2,153, 82, 76,243,146, 91,147, 3, 74, 93, 96, 84,116, 85,250,217,211,199,180, 23,151,208, 92, 67,179,141, +230, 5,254, 43, 66, 64, 1, 56,152,243,221,111,189,193,111,127,243, 91, 60,184,119,151,163,241,156,197,122, 65,231, 61,221,182, + 1,215, 62, 63, 37, 14,159,141,254,236, 98,175,247,138,200,103,237,130,181,222, 53, 69, 38, 93,255,188,138, 83,170, 33,101,163, + 11,212,184,226,193,236,144,147,195, 35, 10, 97,200,139,140,145, 46,153,143, 43, 74,149,227,129,163,209,156,105, 89,114,149, 27, +130,209, 96,101,124,221, 58, 49,201,213,222,231,129,212, 53, 32, 60, 78,239, 10,122,178,130,141,146,172,212,157,103,134,224, 3, + 89,110,200, 4, 28,154,248, 62, 26,169, 41,115, 77, 38,226, 4,160,124,156,174, 91, 27,144, 74,226, 3,132, 16, 15,132, 46, 4, +180, 16,120, 47,216, 88, 31,141,130,172,195, 1, 97,184, 63,247, 47,145, 75,123,116, 33, 98,177,147, 42, 58,175,233, 60, 37, 21, +166,107,215,191, 42,243,255, 5, 39,185, 60,189, 39,131,138,163,172,226,212, 62, 16,113,154, 46, 69,233, 94,220,184,228,197,247, + 44,163, 60, 60, 38,207, 53, 66, 42,158,244, 29,143,186, 6, 22,203,157,201,204,167,254,109, 27,159,221,241, 40, 30, 88,101, 14, +163, 81,252, 25,235,102,215, 96,246,126,231,233,176,127,191,140,138, 88,124,115, 29,179,198,141,134,174, 67, 24,137,176, 18, 97, +123,164,237, 17, 69,198,236,232,132,111, 87,115,238, 28, 78,184, 59,174,200,181,102, 99, 37,239, 94,110, 24,117,107,238,201, 25, +249,180,138,242, 56,173, 17, 70, 35, 45, 4,223,161, 74,205, 97,145,115,213, 58,148, 30,241,186, 86, 28, 43,205,131, 81,206,116, +116,128,113,129, 96, 52,153,137,232,140, 86,138,208, 90, 84, 8,100, 2,150,109,207, 88,195,242,242, 26, 45, 37,215,118, 75,176, +129, 96, 12,161, 80,241,179, 86,132,229, 18,143,199, 11,112,157,197,139, 46,154,219,180, 53, 14,137,203, 13,206,111,177, 50,224, +235, 30,103, 52,174,183,120,173,163,241,181,237, 9, 93, 11,155, 13, 97,209,224,183, 91,222,239, 90,222,111, 90,182, 77, 77,211, + 55, 92,217,158,171,174, 67,116,142,210,193, 72, 65, 31, 36, 69,145, 51, 27, 85,156,100, 5,255,180, 40,249,225,120,202, 31, 77, + 43,190,101, 36,127,246,209, 83,248,248,147,120,166,218, 46, 58,115, 42, 73, 80, 10,202,156, 80,230,145, 3, 84, 85,241,136,252, +162, 65,201,177,139,243,101,224,189,196,226,222,143,199, 28,142, 70,212,190, 67, 11,197,229, 98, 65,184, 62,135, 62,112,182,221, +114,221,213, 28, 87, 5, 66, 11, 90,103,209,197,148, 50,159, 80, 22, 99,186,190,166, 26,229,220, 57,188, 75, 86, 20, 84,121, 78, + 91, 55,124,240,236, 35, 10,231,184,182, 29,231,193,241,179,122,205,255,120,121,205,181,101,135,116,145,194,189,134,194, 41,101, +180,218,245,150, 99,173, 25, 57, 79,174, 4,218, 57,158,246,158,177,210, 44, 8,116, 66, 38, 84, 56,173,174, 84,250,149,153,136, + 28,139,200, 77, 33, 75, 60,145,160, 62, 63,101,109,224,159, 8, 19,139,118,174,118,158, 39,221,158, 91,105, 72,197,223,250,248, +189, 67,227, 43,253,243,222, 40,255,233, 76,234,123,135,145, 74,123,243, 65, 78, 35,213,142, 44,231, 67, 34, 0, 37,150,160,243, +113, 15,111, 63,195, 23,251,165,203, 31,153, 46, 96, 58,216, 91,191,235, 46,149, 68, 72, 77,231, 2,157,245, 49,144,196,182, 32, + 29,144, 69,189,109,150,222,208, 81,154,122,134,130,231,146,207,183,147,113, 58, 23,160, 42,205, 97, 81, 50, 45, 53,243,124,132, + 18,146,166, 79,146,151,174, 37,184,192,184, 42, 57,172, 70,220, 26, 79,177,194,209,122,207,162, 93,178,236, 58, 30,126,242, 9, + 92, 60,221, 33, 22,191, 20, 33, 77,195,124,198, 15,222,254, 38,147,241, 17,213,104,130,181,142,171,237,130,203,245,150,176, 92, +165,195,218,238, 92,201,148,222,153,250,200, 4,221,203,180, 23, 29,138,244,240,119, 15, 68,198,151, 21,253,161,192, 14,251,236, + 32,227,245, 55, 89,130,207, 5, 20, 57,111,204,143,184, 55,191,131, 49,154,178, 28, 49, 45, 43,138, 60, 71, 11,141,115,150, 82, + 27,148, 82, 20, 38,122,128, 95, 6,159, 10,187,136,235,131,225, 94,218,151,117,236,123, 33,200,100, 63, 60, 52,115, 25,137,161, +157,165,159, 19, 40, 13, 42, 8, 70,185, 34,120,152, 24, 77,174, 20, 74,199, 61,151,240, 30,151,248, 15, 89,166,232,131,139,155, + 28,163,113, 93,135,144,146, 39,109,135,144,129, 32,163, 89, 72,112, 68,231,174, 65, 51,111, 7,162,156, 75,235,162, 16,211, 6, +179, 50, 62,204, 69, 17,145,167, 44, 69, 52,218, 62,113, 41,190, 66, 67,215,219, 61,217,103,106, 56, 51, 19, 11,184, 72, 94,238, +219,228, 40,183,255,247,219,142,107, 37,249,216, 40, 62, 64,240,172,107,227,186,103,187,141,190,210,242, 37,171, 45,151,126,198, + 44,135,249,148,127,125,247, 22, 63,124,237, 62,111, 31,148,252,244,244,122,183,183,149, 47,172, 97,134,213, 71, 48, 8,215, 37, +244, 36, 53,102, 82, 34, 66, 76,179, 18, 89,156,198,133, 0,155,231,252,227, 55, 30,240,181,201,132, 89,145,163,117,206,170,246, + 60, 91,111,121,218, 94,240,166,131,113, 49, 69,149, 25, 98,108, 34, 19, 92, 41,168, 91, 68,150, 83,150, 37, 7,193,147, 59, 71, +231,224,181, 34,227, 78, 53, 6,219, 98, 76, 65, 81,142,144, 66,164,158,223,199,219,135,104,223, 92, 73, 73,189,217,160, 50,193, +220, 91, 62, 58,123, 18, 45,101,181,230,143,238,221,227, 15,223,120,157, 7, 99,201, 79,214,155,184, 81,169,107,188,118,248, 98, +130,183, 46, 26,219, 40,133,171,175,241, 50,199,203, 16,247,240,133,137, 83,191,210, 81,205, 89,119, 17, 37,169,211,206,187, 94, +195,179,115,186,171, 43,206,206, 47,121,124,213,114,209,116, 60,220,246,116,117,131,106, 45,165, 23,204,114, 67,150,107, 58,109, +120, 93,231, 60,168,102, 28,155,156,153, 41, 57, 86,146,219, 35,205, 70,122,158,157, 93, 18, 46, 46,161,237,163,247,187, 82, 4, + 29,215, 96,255,242,254, 33,255,230,237,183,248,237,251,119,185, 30,107, 46, 46, 54,159, 57, 80,132,193,111, 33, 68,200, 88, 12, +209,201, 10,130, 13, 48, 45,233, 59,207,147,237,134,240,232, 20,182, 27,130,107,160,110,169, 55, 53,239,182, 27,182,237, 6, 65, + 78, 89, 76,201,203,130,239,255,103,191, 77,119,213,177,109,215,140,139, 17,147,241,136,104,118,211,240, 63,191,255, 49, 15,151, + 11,254,135,139, 21, 23,174,231,255,185, 90,179,242, 18,234,150, 16,246, 76,194,144,241,252, 86,106, 71, 74,149, 26,227, 45, 40, + 69,238, 44, 37,224,165, 96,101, 29, 39, 90,243,108, 95,243, 61,144,181,135,198, 90, 36,165,204,192,201, 26,220, 34,209,207,171, + 89, 94, 60,119, 7, 95, 10,210, 26, 74,232,157, 91,169, 72,191,119, 93, 66,209, 84,140,103, 30,206,168, 97,178,247, 95, 77,109, +246,247, 56,169,239, 77,123, 3,220, 48,132,179,236,231,108, 15, 18, 29,216, 57,207,245, 95,114, 15,236, 93,108, 28,220, 30, 34, + 19, 18, 57,194, 69, 6,107,232,109,148,127,117,219,216, 45,149, 85,156,192,139,180, 55, 82,123,241,172,106,111,151, 84,119,113, +242, 12, 1,114,195,164, 42,152,151,134, 42,207, 80, 66,208, 58,199,182,243,172,251, 14, 31, 2,101,161, 57, 46, 42,110, 85, 51, +124,144, 52,109, 75,227,122,222,127,250,140,167,167,167,112,250,209,115,145,150,191,212,135,115,160,114, 30,188,113,151,131,217, + 1, 66,106,126,126,250,144,247, 63,252,152,112,113,149,194, 59,250, 29,113,113, 56,121,179,100,113,234, 19, 19, 83,165,184,209, +144,236,120,117, 90,139,104,181,139,111, 29,246,114,131, 93,175, 16, 59,146, 26, 41,176,167, 79,172,239, 16, 29,221,100, 49,225, +215,110, 63, 96, 54,157,227,172,167,202, 71,113,208,212, 57, 65,192,168, 24, 97,125,195,192, 53,179, 4, 38, 82,131, 49,212, 62, + 68, 46,129,144,187,172,251,253,162,126, 19,231,187,231,188,164,108, 36, 9,169, 68,162,211, 38,189,214,104,115, 25,130,224, 32, + 55,104, 33,137, 52, 57,133, 49,209, 4,182,119,158, 66, 74,214,182,103,164, 84,220,250,180,129, 32, 20,215,193, 49, 82,134,174, +119,180,206,227,156,223,109, 2, 68, 72, 80,187,143,197,251, 38, 13, 47,220, 20, 82,178, 50, 93,163, 33,162, 80,236,188,185,191, +234,174,221, 37, 61,121, 85,221, 4,204, 40, 33, 8,214,198,181, 71,215, 70, 85, 68,232,118,135,134,115,209,110,116, 54, 74,168, + 88,106,236,154, 13, 44, 18,121,244,101, 54,204,109, 7,227,138,239,222, 58,225, 55,230,199,228, 58,195,122,207, 95, 53, 93,140, +173,124,241,245, 15, 68, 58,169,226,243,110, 70, 8, 21, 27,177,184, 5, 19, 49,134, 83,104,132, 14,136,206, 34,189, 64, 22,134, +127,118,235,117,222, 62, 58, 96,108, 50, 10, 29, 21, 8, 93,219,241,254,122, 67,103,151, 76, 54, 45,147,233, 28, 89, 40,196, 40, + 35,132,128,174,166,136,117,131,197,115, 48,157, 51, 55,134, 81, 7, 77,211,144,107,184, 61, 61, 68, 21, 35,100,211, 96,133, 38, + 83,154, 97,107,226,124,192, 53, 29, 78, 10,154,224,169, 28, 52,219,107,142,139,140, 79, 46, 47,169, 70, 35,254,249,157, 59,220, +170,166, 28, 77, 14,120,239,250,156,235,197,150,224, 44, 65, 23,248,237,134,160, 52, 94, 42,124,179,197,103, 21,222,246,201,183, + 41,158, 9,222,148,132,174,142, 22, 25, 10, 66,211,237, 22, 73,114, 47,140,165,237, 8,219, 13,246,122,133,109, 26,158,181, 45, + 63,239, 45,211,206,113,175, 48,116, 82, 50, 54,154,187,197,152, 82, 42,164, 50,209,152, 74,105, 70, 82,225,133,231, 32, 83,124, + 40, 51,124, 93,195,197, 34, 54,158, 46, 66,207,191,127,231, 54, 35,149,161,180,230, 82, 6, 30, 9,133,144, 89,124,102,247,138, +251,254,107,187, 81, 8, 13,235, 20,231, 0, 75,189,117,212, 93, 77,120,252, 20, 54, 87, 73,177, 33, 8,222, 18,218, 6, 46, 87, + 44,150, 91, 86, 70,115,255,240, 46,199, 71,183,217, 44, 90,180, 84,120,235,169,155,117,220, 32,217,152, 97,174,109,205, 95,127, +252, 24,209,247,156,173,106,186, 62, 16,218, 62, 61,251, 50,166, 39,186, 16, 27, 86, 31, 24,133, 64,111,147,113,151,130,214, 11, +238,139, 64, 19, 44, 2,129, 12,158, 18,193, 59,109,159, 12,162,194,243,110,150,195, 90, 88, 38,191, 11, 73, 60, 47,164,136, 8, +177, 54,177, 81,150, 73,189,181,255,156,106,149,228,214,123,110,143, 67,178,164,222,243,144,207,179,157, 90,164,103, 55, 0,188, +152,202,166,247,200,241,255, 32,139,250, 0,203, 74,177,183, 79,127,129,228,246,156, 30,156,231, 33, 59,225,190,154,172, 78,164, +176, 15,225,119,178,157, 44,103,252,230,109,166, 7, 83,182, 62,193,132,235,117,124, 19,143,102, 59, 67, 0,111, 35,124,152, 98, + 77, 81, 42,254,121, 68,252,222,129, 41, 89, 26,230,121,134, 49, 2, 35, 21,181,179, 92,215,150,117,103,233,189,197, 40,197,113, + 49, 98, 82, 20, 24,169,113,210,209,116,142, 39,171, 21,205,229, 51, 56, 61,143,211,211, 87,105,142, 62, 11, 38,111,106,222, 15, + 61,231,215,151,252,228,147,143,121,248,240, 9, 60,252, 56, 89,187,238, 77,217, 67,243,148,169, 4,249,239, 41, 11,148,220,145, +204,110,130,116, 84,114,250,147,207, 75, 10,135, 78,119,127, 74, 31, 60,215,117, 74,217,179, 22,188,228, 27,111,189, 77, 89,142, + 80, 82,146, 43, 3, 82, 81,230, 5,214, 89,140, 48,116,206,161,165, 64, 43, 67,221,182,232, 44,163,183,150, 46,120, 54,117,187, + 51, 37, 26, 86, 0, 54,253, 27,195,191, 61, 76,234, 50, 33, 5, 89,186,223,196,160,137,151, 55,118,177, 90, 43,166,185,142,211, +184, 81,100, 82,161,148,196, 7, 71,231, 2, 90, 10,214,214,145, 35, 8, 50, 58, 81, 5,231,227,218,204, 67, 43, 60, 78,106, 90, +107,227,228, 32, 18, 44,121, 3,191, 39,247,186, 64, 44,170, 67, 81, 23,106,119, 40,220, 60,197,233, 48,233,136, 81,192, 95, 37, +168, 72,107,152,205, 34,113,174,202,121, 80, 26, 50,231,152, 27,133,241,150,186,243, 49, 97,234, 83,114, 80, 31,215, 76,213, 56, + 18, 3, 6, 23,188,245,122,167, 6,121, 89, 34, 97,219,113,124, 50,227,184, 28,209,120,203, 39,182,227,195,118, 11, 77,178,146, + 29,190, 63,207,246,158,253, 4,223,170, 16,153,239, 67, 19, 22,199, 64, 68,154,102, 4, 10, 25,122,132,202,249,238,201, 9,175, +205,142,209, 90, 35,136,100,196, 69,211,179, 88,175,120,214,110,185,114,107,170,109,207,172, 24,163,114,131, 28, 21,209,253, 55, +104,202, 44,167,154,157,112, 92,221,225, 86, 89,209,173, 90,132,232, 40, 6,151,192,124,132, 12, 14,231, 60, 82, 41,132,150,184, +186, 67,230,134,237,182,102, 98,162, 87,198,170,105,144, 1,238, 26,129,240, 13,119,231,199,228, 74,241,201,118,195, 95,108,106, +218,109,141,183, 30,143, 39,228, 26,143, 34,168,130, 80,150,248,182, 37, 8,139, 15, 22,175, 51,130,245, 4,231, 8, 89, 30, 11, + 94, 15, 65,198,245,224,128, 40, 7,249,124, 49, 13,251,124,154,109,199, 7, 82, 48,111, 29,227, 76,211, 40, 73, 41, 3,135,166, + 64, 41,141,115, 14, 47, 5, 87, 93, 77, 38, 3,199, 74,242, 70,161, 80,163,130,199,249, 40,250,144, 47, 86,132,171, 21,183, 15, +114, 78,170,138,107,107,249,243,229,134,173,245, 80,106, 68, 89, 70,121,173,141,211,248, 23,202,219,122, 11,155, 85, 36, 88,246, +237,142, 59,145,204,157, 82, 5,132,224,104,174, 27,142,239,223,230,100,114,136, 82, 2,239, 28, 46,120,234,166, 78,183, 94, 92, +123,213,219, 13, 31, 94, 46,225,217, 41,108,108,156,198,151,219,232, 3,177, 90,198,198, 99,221,196,162,238, 28,253,186,137,175, +119, 40,236,193,179, 22,112,143,136,194,104,223,243, 65,215, 19,164,192,217,100,238, 53,236,181, 85, 26, 4,212,192,249, 74, 40, +177, 78,123,123,147,167,228,199,168,200,226, 38, 47,106, 47, 4,169, 40,210,153, 58,252,204,118, 23,237, 29, 82,198,200,144,161, + 32,134, 63,159, 92, 75,103,115,168,166, 41,248,108,136,246,254, 85, 77,234, 67,135, 32,245,243,126,220, 55,146, 34,255,233, 16, +137, 87,129,132,111,166,242,192, 77, 75,252,101, 96,251,175, 74,204, 27,220,188,240,112,255, 46, 63,252,167,191,201,119,110,223, +231,219,175,189,197,119, 94,187, 77, 89, 21, 60,126,114, 17,247,131, 89,158,114,223,101,210,235,166, 2,166,247,236, 49,141,130, +108,248, 44,201,115,133, 81,130, 92, 43,106,235,184,220,246, 92, 55, 53,174,183,148, 70,243,214,193,109, 14,102, 99,198,229,148, +213,102, 77,111, 61, 87, 77,195,114,177,132,197,229, 78, 19,252,101, 14,238, 1, 57, 24,160,203,193, 80,103,144, 12,102, 26,158, + 45, 89, 61, 62,165,125,248, 49, 44, 46,118,157,245, 0,237, 12,230, 7,131, 37,168,212, 41, 76,167, 77, 8, 71, 42,242,217,192, +220,150, 9,170, 79, 82,187, 44, 77,236, 55, 55,104,130,191,135,226, 58,152,173,116, 41,251,219, 11, 56, 58, 68,140, 71,220,154, +204, 25,153, 18,169,179,148,182, 5,101, 22, 11,187,117, 29,130,192,186,171,233,122,143, 82,130,171,245, 26, 43, 28,141, 16,132, +186,143,232,205, 32,121,212,164,201, 92,197, 66, 49, 48, 74,135, 61,123, 80,187,166,108,152, 56, 35, 61, 26, 37, 34,169, 34,215, + 18,141, 32,207,210,129,232, 64,136, 16, 61,201, 69, 64, 11,104,125, 32, 75,142,178, 91,235,145, 66,210,244,158,218, 57,100, 8, + 56,145,178,201,221,222,174,219,197, 67,140,118,207,161, 80,202, 93, 65,215, 42, 30,128,114, 56,244,210,123, 34,220,103,219, 86, +126,238,147,173, 99, 86,250,180, 98,102,226,253,106, 16, 88,231,169, 8,209, 73,174,169,119,204,119,191,247,156, 20, 37,183,103, +138, 77,117, 20,137,160, 50,161, 55,167,151,105,122, 23,159,158,214,173,229,217,166,227,175,187,134,191,106, 90, 62, 92,111,227, +125, 82,232,216,108, 13,205,170, 78, 12,121,147,154,153,161, 1, 20,121,116, 71,147, 30, 33,125,156,214,133,143,111, 81, 80, 8, +223, 33,108,203,119, 94,123,157, 73, 86, 33,181,166,211,146,211,117, 67,227, 3,205,102, 75,237, 90,150,117, 79, 79,199,253,209, +140,162, 42, 80,202, 32,148, 66,141, 74,204, 65, 69, 54, 25,147,221, 57, 32,147, 99,140,237, 57,191,184,100, 50, 18,228,213,140, +208,213,160, 20, 65,104,130, 15,200, 48, 80, 32, 28,211,188,160,173, 91, 38, 42,163, 16,146, 18,195,216,100,200,174,102,181, 89, +243, 81,223,240,231, 23,151,156,247,125,212, 92,111,226,228, 77, 31, 8, 74, 18,198, 25, 65, 11, 66,221, 18,104, 9, 34,202,165, +130, 25,206,166,100,172,101,227,164,123, 83,193,213, 75, 10,250, 11, 92, 53,250,158,119,250,142,166,105,169,157,135, 76, 48,149, + 18,237, 29, 65, 72, 46,234, 53, 29,129,222,245, 76,188,231,174, 50,156,228,134, 55,170,156,139, 50,103, 57, 26, 17,156,227,189, +247, 31,241,103,159, 60,230, 71,219,134,109,215, 71,147,160,148,151, 32,140,138,170, 21, 83, 70,233,154, 16,241,172, 25, 21, 47, + 93, 17,137,207, 67, 77,135,198,191,105, 1,203, 51,147,113,171,154, 96,148, 38,120, 79,223,181,172,155, 21,214,246,104, 2,189, +107,177, 93,207,138,134,245,227, 69,148,235,182,109,138, 62,173,119, 25,231,109,157, 86, 22,117, 36, 26,135, 20,125, 58, 52, 64, + 10,180,115,172,251,158,214,193,194, 57,236, 62,170,230,247,236,198, 73,107, 58,157, 30,116, 4, 15,116,198,127,121, 56,227, 7, +147, 17,255,100, 92,162,239,188,193,195, 31,255, 24,117,231,136,208,187,157,161,163, 24,146, 13, 7,211, 52,155,172,207,195, 78, + 30,170, 72, 43,225, 52,138,251,110, 71,214, 59,152,197, 26, 36, 21,108,234,184,254,252,149, 21,117,147,237, 92,111, 6,147,217, + 97,106, 27, 12, 96,134,169,226, 85, 14, 29,157,224, 69,157,118,133, 50,153,174, 72,241,183,195,184,126,177, 67, 81, 73, 11, 40, + 42, 94,251,214,219,252,250,253, 7, 76,230,183,144, 66, 49,157,206,113,109,207,187,182,141,157, 81,145,160,217, 54,165,146, 45, +175,211,141,148, 96,123,162, 71,187, 52,130,201, 40, 39,207, 12, 19,163,146, 93,168,103,209,116,212,235,116,195,105,205,107,135, +135,220, 62, 60, 97,156, 87, 40,161,241, 74,242,241,213, 37,139,171,107,184, 88,196,124,234,208,127,185,166, 69, 13,201, 95,233, + 49,146, 2,116,153,138,219, 16, 24,146, 76,109,156,125,121, 72,129, 38,162, 13,222,239,116,225, 67, 96,141,145,169,177,209,187, +110, 84,134,248,158, 13, 29,169, 18,177,208, 15,108,115,173, 18, 33,100,128, 87,253,206, 80,136,244,125,101, 52,230, 57,152,206, +152, 85, 35, 66, 8, 20,166,192,186, 62, 34,129, 64,103, 45, 4, 75,227, 58,140,136, 48,248,229, 98,137,201, 20,117,103,233,156, +199, 53, 13,244,235, 93, 70,113,218,195,198,130,147,228, 40, 46,197,211,146, 26, 80,157,116,186, 62,236,166,198,224, 33, 51,232, + 16, 40,141,166, 11, 30,233,226,125,221, 57,143,247,158,222, 7,156,243, 52,189, 39, 55,138,186,135,206,122,180,148,172,189,197, +171,232, 5,223,220, 32, 25, 73, 95,111, 83,230,125,235,226, 52, 33,210,107, 29,194,128, 84,122, 38, 90,123,147,131,126,179, 6, +169,155,212,217,135,231,209,151,231, 96,194,207,120,246,148,137, 48, 58,146, 98,148,113,168, 5, 66,105, 26,231,216, 52, 61,165, +183,108, 54,137,183,241,162,135,117,150,179, 57, 58,130,201, 45,126,167, 28,241, 70, 86,112,168, 2,167,215,171,120,112,126, 86, +212,112, 93,195,114,157, 16,172,132,114,105, 29,247,134, 46,125,125,240,138,184,185, 39,178,148,191,240,130, 45,169, 75,133, 29, +162,223,183, 20,136, 96,248,155,205,150, 55,142, 15,177,186,224,170,115, 92, 11,199, 98,221, 82, 1,227,190,163,146,130,183,143, +142, 56,152,143, 24, 85, 5, 18,133,148, 26, 89,106,228,225, 40,106,217,115, 29, 21, 15,219,128, 25, 9, 46,234, 37,235,237, 5, +227,106,134, 84,101,220,227, 10, 8, 73,235, 47, 19,163,122, 84,150,216,166,103,146,231, 76,180, 64, 11, 67, 38, 50, 86,237, 53, + 79,150,151,188,215,116,248,174, 35, 40,133, 47, 50, 66,215,227,155,109, 34, 4, 59, 66,219, 18,250, 53,212, 77,148, 78,245, 9, + 1,244,137, 44,217,181,187,169, 69,238,120,189,175, 34, 53, 19,222,243,180,109,249, 69, 93,243,255, 45,123,206,235, 13, 65,123, +182, 56,122, 31,184,106,214,148, 62, 80,132,128, 16,130,128,192,106,201,108, 92,178,146,154,235,114, 4, 71,135,241, 31,189, 94, + 35,206, 22, 17, 61, 25,222,171,129,253, 93, 22, 49,105,242,246, 45,126,248,107, 15,248,206,237, 35,102,199, 83, 30, 47,109, 92, +213, 5, 62,117, 79,138,151, 13, 88,131,148,214, 57,220,197, 5, 98, 62, 35, 35,196, 45,149,243, 4,161, 82,124,131,165,105, 26, + 86,221,154,211,197,138, 38, 36,207,138,254,115,130, 84,156, 75,187,235,136, 40,138, 68, 9, 10, 87, 43,150,222,179,105, 45,171, +166, 35, 8, 17,239, 61,149, 66,197,156,139, 53,173,245, 59,173,248,240,115,107,205, 55, 50,195, 91, 69,206,216,228, 24,169,249, + 14,158,223,124,253, 54, 39, 38,240,243,109, 31,155, 88,153,220, 35, 7, 84,211,171, 72,148,179, 3, 26, 39,119, 12,251,225,245, + 90,187,139, 44,206,116,226,113, 37,185,247,102,155, 26,189, 95, 69, 81, 31, 10,240,224,169, 62,176,137, 7,243,150, 1, 90, 29, + 82,175, 94,201,171, 86,238,138, 0, 98, 47,241,172,255,219, 47,232, 38,193,136,210,192,131,187,124,255,173, 55, 25,149, 83,178, + 44, 35, 56,232,123, 75, 89, 22,104,183,230,210,121,130, 15, 4,159,228, 17,219, 6, 46, 23,241,115,149,244,222,165, 70,230,138, + 81,174, 49, 82, 80,101, 34, 41,151, 60,151,171, 6,183,218,194,106, 3,153, 97, 84,149,188,113,124,155,131,114, 66, 32, 50,167, +215,125,205,197,102, 77,127,185, 76, 76,247,246,203, 17, 35, 6, 46,194, 62,251, 27, 17, 59, 62, 33,119,133, 29,191, 67, 68, 94, + 36, 58, 37, 84,232,249, 29,146,216, 85,252,125,243, 22,159,248, 13, 50, 5,173,100,106, 39, 35, 19,236, 50,196,111,152,231, 42, + 21, 45,249,188,169,144, 81,241,181,143,103, 76,199, 5,203, 77,205,253,131,219,180,214,226,189, 69, 9,193,182,107,232,108, 71, +109, 91, 70,166, 68, 75, 69,227, 90,140,209,108,234, 26, 23, 98,227,228,214,203,180, 42, 72, 26, 80, 19, 98,241,216,247,255,215, + 41,191,216,136, 56,189, 15,134, 62, 69,106, 0, 74, 19, 37, 62, 14,180,214, 88, 23,179,199,251,224, 81, 1, 28,158,173,117,228, + 82,196,126, 78, 7,218, 54,254,253, 94,193,214,245,180, 2,154, 62,196,239, 19, 2,215,135,221,218,104,216,239,119,110, 87,200, +135, 93,186, 52,137,149,191,127,221,211,179, 49,144, 0,131,123,254,249,120,153, 70,255,101,207,158, 41, 34,169,103, 82,210, 42, +201, 72, 72,182,120,148,117, 80,119,172, 54, 61,110,152,158, 63,181,243, 86,112,239, 22,191,115,112,139,147,178,228, 40,203, 81, +125,199,105,187,164,191,186,126, 57,252,190, 47,115,235,218,196, 91, 72, 4,189, 44, 49,137,133, 73,133,125, 88,229,228, 96,235, +120,144,233, 9,248, 14,209,217, 68, 94,141,123, 75,209,219, 88,208, 1,225, 4,130,192,251,218, 83,168,146,101,151,130, 58,188, +229,160, 50,220, 27, 79,185, 91, 76,184, 51,153,114,116, 56,195,110, 91, 52, 18,217, 6,228, 36, 71, 30, 22,136,204, 32,140, 36, +108, 28,118,219,210,103, 10, 39, 3,173,146,180,174, 71, 5,143,200,242, 68,230,142,197, 79, 25,131,197, 99, 16,100,121, 70,223, +212,228, 38, 67,133,192,214, 7,166,166,136,236,118, 91,115,222, 89,124, 8, 4,163, 8, 70, 18,186,158,224,122,112,155, 72, 58, +108,219, 20,140,178,199, 25, 34,133,251,236,107,246, 63,103,242,253, 44,255,118,113, 3,203,119,124, 92,111,249,127,175, 26,254, +100,221, 48, 22, 22,211,246,204, 60,140,149,100,237, 29, 91, 41, 88, 3,155, 16,232,203,140,181,209,252,227,163,138,127,123,247, + 54,191,121, 50,229,247,238, 31,113,160,224,189,167,215,136,235,107, 16, 42, 42, 19,202,152, 96,121,127, 82,240, 91,243, 3, 94, + 59,186,205,225,116,198, 59, 69, 78, 63, 42,147,178,196,164,231, 81, 68,199, 78,147, 71,101,199, 40,231,232,254, 9,181, 44,118, + 12,242,180,102,186,176, 61,206, 40, 50, 37, 17,105, 53,211, 7,139,117, 13,235,245, 53,206,183, 52,173,101, 45, 37,200, 60, 34, +135, 38,173,112, 94, 66,230, 19, 9,121,227,246, 93,126,239,123,223,229,215, 31,188,197,236,112,194,147,247, 63,129,174,229, 48, + 15,212,155, 58, 66, 33,117,183, 51, 75,106,109, 10, 17, 75,207,173,142,175,241,219,153,230,159, 76, 42,114,149,225, 67, 32,147, +154,198,247, 20, 82, 34,165,225,195,166,166,150, 3,243, 93,199,231, 86,153,228,201, 48,212,158,244, 78, 9,187,131,223, 93, 26, + 29,153, 26,155, 0, 0, 32, 0, 73, 68, 65, 84,148,134,103,124, 88,207,217, 16,125, 71,134,144,153, 95,186,168,223,192,186,105, +234,217,183,110,237, 82, 55, 17,210, 1,109,221,243, 22,146, 95, 4,129, 15,211,160,150,187,144,148,191,237, 41,125,144, 62,137, +116,160,119, 14, 49,159,112, 50,154, 96,116,148, 55, 9, 41, 88,174,150, 60,188, 94,113,118,189, 66, 10, 65,232, 18,177,105, 29, + 73, 37, 40, 25,229, 66, 82,199, 41, 61, 87, 20, 90, 16, 66,212, 46,215,157, 99,217,180,112,185,137,172, 85,109,160, 44, 57,156, +148, 76,117, 65,150,151, 55,147,228,214, 53, 60, 58,189,128,103,105,143, 62, 20,243, 87,189, 20, 38,221,212, 46, 93,119,159,116, +143, 65,237, 96,112,201, 30, 26,194,110,194,222,159,212, 7,199,190,161,195, 22,201,252, 32,176,211,128, 91,151,120, 8,114,167, + 77, 30, 38,255,228,151, 30, 67, 59,210,191,181,159,119, 63, 76,238,222,167,195, 59,193,244, 58,199,101, 57, 71,101, 73,221,119, +120,111,169,178,130,166,107,145, 74,179,105,214, 8, 25,144, 66,225, 66, 96,100, 74, 16,129,105, 89,113,185,190,230,234, 98, 17, +167,194,190,141, 93,123, 72,114,181, 97, 82, 31,200,150, 50,165,233, 13,196,189, 96,210,207,145,140,142, 18,226, 2, 1, 33, 37, + 69, 46, 89,119,142, 44, 37,172,181,189,199,139,184,187,213, 54, 68, 20, 47,153,195,213, 30, 90,235,169, 93,192,134, 64, 41, 37, +117, 99,119, 5,122,144,209, 89,151,174, 91,250,255, 82,238, 53, 93,114,151, 27,190,111, 8, 50,178, 77,220,167, 11,251, 60,105, +114, 63,110,241,197,102,249,197,134, 45,151, 81,122,153, 69,148,165, 9, 32,165,228,162,238,113,189,163, 91,109,226,123,248,178, +137, 91,101,112, 48,231,222,116,198, 97, 94,208,216, 30,131,231, 23,171,107,220,179,243, 47,110,194,123, 11,181,139,242,182, 76, +241,221,201,132,127,117,231,152,223, 62,153, 80, 77,114, 62, 57,191,142,215,196,167,179,228,224, 54,223,251,254,183, 57,253,224, + 35,132,204, 35, 4, 63,236,102,149, 68,120, 3, 94, 34,219, 53,210,197,233,237,161,114,156,231, 21,149, 11, 28,224, 57,153,142, +120, 99, 52,225,173,195, 67, 14,198, 19,242,188,192,123,203,229,163, 51,114, 43,208, 85,158, 12,142, 98, 20,175, 95, 54,216, 77, +205,170,169,177,163,138,144,101,212,206,211, 43, 77, 16, 10,163, 13,189,179, 40, 41,177, 65, 48, 26,141,240,206,199,251,116, 60, +194,117, 61, 2,184, 93,141,217,118,150,177,201,176,161,103,140,227, 81,219, 17, 66,192,107, 77,200,116,100,104, 55,237,141,214, + 63, 22,224, 93,118,252,238,243,206,112,236,197,255,126, 49, 70, 85,124,206,215,110,204,187,234, 45,118,179,229, 39,171, 45, 7, + 4,250,166,193,118,150, 32, 4,139, 0,219,204,112, 17, 4, 87, 30, 10, 99,248,245,106,194,221,114,198,215, 38,199,220,159,156, +144,151, 25,118, 94,240,112,221,195,250, 42, 14, 41, 78,192, 40, 99, 84,102,124,111, 58, 67, 41, 77,231, 3,191,232, 45,219,214, + 66,101,162, 74,104, 58,130,131, 57,156, 28, 69,251,225, 91, 71,252,219,111,191,193,247,143, 79,248,221,215,239,225,230, 5,143, +201, 99, 67,115,124, 12,101,206,166,200,168,148, 38, 8,193, 73, 89, 97,189,195,120,207,114,179,102,221, 89,148, 20,148,185, 70, +151, 57, 77, 94,194,252,144,252,181, 55,112,119, 95,131, 78, 65,150, 12,140, 32,114, 0,180,225,187,223,254, 58,199, 7, 39, 16, + 60,214,100,124,114,246,148, 25,150,197,114, 27, 39,225,122,147,160,251, 62,170, 60,250,193, 71, 33,236, 46,106,240,188,153, 25, +190, 89,142,147,167,137,130,224,240,222,161,164,102,211, 55,180,194,242,164, 75, 89,225,153,137,208,250, 96,231,236, 99, 17, 23, +200, 72,161,113, 50,161, 79,105,189, 98,221,243,178,212,126, 72,192,235,190, 82,109,124,121, 81,151, 9,114,240, 41,142,210,217, + 88, 64,250,189, 3,157,193,206, 85,236, 32,132, 87, 49, 46, 25,224,145, 23,141, 84,254, 54, 63, 6, 9, 85, 16, 17, 10, 65,176, +200, 12, 85,150,113, 52, 46, 16,194,227, 29,156, 95,175,248,139,119,222, 5,209, 71,178, 19, 62,193,166, 77,116,197,154, 23, 73, +222, 16, 51,166, 67,136,249,188,189,119, 52,189,163,111,250,216, 93,173,151,177,216,141, 71,140, 39, 35,170, 66, 35,241, 72,109, +232,250,150,198,121, 30,158,157,179,125,122, 26,247, 67, 55, 59,152, 47, 67, 54, 84,177,248, 26,177,131,151, 3, 59,223,224, 97, +160,147, 67,214,252, 75, 60,212,247,247,238, 67, 83,224,210, 62, 87, 14, 76,204, 68, 38,115,118, 23, 30,162, 19,188,173, 19,243, +220, 13,161, 58, 58,194,197,168, 4,127, 37,191, 99, 37,118,118,166,129,104,252,211,247,244, 65,208,107,133, 32, 36, 55, 88,135, + 11,142,197,118,129, 68, 82,234, 17, 74,104, 50,173,144,194,160,165, 98,219, 52, 76,139, 17, 15,183, 75, 56, 59, 75, 39,153, 77, +123,252,253, 2,153,224, 46,103,119, 28, 2, 51,200, 26, 37, 84,229,243, 9,100, 68,166,115, 7, 49, 80,195,122,156, 11, 88, 5, + 5,113, 98, 19, 30,172, 8,224, 3,181,247, 4, 33,232, 83,163, 42, 9,172,187, 97, 23, 42,246,228,107, 73, 70,166, 84, 60, 68, + 92,159,252,207,137,178, 60,215,236,244,222,174,143,215,175,235,119,201,102,251,176,251,231,125,188, 8,161,143,170, 72,230, 73, + 54,187, 78, 42, 90, 27,125,216,221,166,129,235,197,103, 63,123,194,195,108,140,171,170, 36,253,213,188,187,186,228,252,242, 50, + 54,172,175, 18, 10, 50,228, 59,204, 39,252,193,157, 99,114,169,152,149, 83,156,235,121,167,238, 83, 80, 82,186,103,182,215,156, +126,242, 48, 53,160, 18, 49,196,200, 14,211,122,232, 17, 65, 34,115,137, 8, 22,105, 5,178,105, 9, 42,144, 9,193,189, 81,198, +131,106,202, 91,243, 25,147, 34,163,154, 69, 51, 21,223, 67,215, 56,214,151,231,140, 84,142, 57, 24,199,251,196, 65,216, 90, 66, +211,227, 69,160,147,158,173, 20,184, 98,132, 77,220,146,218, 91,132,140, 33, 63, 69, 53,194,217, 30,161, 20, 89,150,209,214, 45, + 50, 8,100,102,240, 65, 80,100,154, 77,239, 57,206,198,116, 90, 98,125,195,179, 46, 74,187, 66, 12, 5,136,164, 68, 27,207,148, +151, 21, 99,249, 25,159,191,204,175, 23,167,248, 0, 4, 31, 97,255,159, 45,150,124,220, 89,124,211,210,246, 14, 39, 2, 87,222, +114, 42, 37,207,132,100, 94, 26,222,210, 25,119, 70, 51,148,202,208,198, 96, 76, 73,171, 13,125, 33,185, 80, 89, 92, 25, 92,175, + 97,121,197,166,243,188, 94,106,148, 84,156,246, 29, 63, 90, 44, 19,139, 59,233, 75, 85, 90,221,142, 51, 80,138,217,100,204,247, +102,135,220,169,102,140,203,138,172,200,120, 71, 73,220,120, 12,183, 79,152,222,127,147, 81, 81,130,146, 84,192,131,201,140,147, + 81,206,196,104, 46,250,134,218, 57,148,214,228, 66,162,165, 96,148,103,252,240,183,254, 41,255,234,159,255, 62,255,236, 55,190, +199,209,252, 62,106, 62,166,155, 29,211,118, 93,146,230, 26,206,188,226, 27,135, 83, 68, 86,209,109, 87,124,252,240, 9,237,242, +154,233,184,164, 93,247,233,249,232,161,109,201,180,194,109,183,209,178,185,237, 83,141,139,199,217,177,210,188, 53,202, 24,201, +140,222,181,145, 65, 79,160,237,123,150,222,242,151,203,134,237,224, 60,103, 20,163, 42,167,207, 75,200,116, 76,203, 19,137, 43, +129,223,157, 73,128, 8, 33,254,250, 21,214,193,151,159, 20, 34, 81,248,135,201, 92,232,221,132,190,109, 34, 57, 34,193,100,251, +142, 61, 55,196,160,127,136, 31, 42, 77,216, 50,197,172, 62, 89,178, 58,217,176,221,108,153,140, 15, 33, 52, 56,219, 36, 82,194, + 62,155, 60, 29,252,147,113, 60, 36,203,148, 50,119,179, 71,108, 99, 45,238, 45,172,183, 41, 35,126, 7,127, 74, 13,193, 7, 86, + 93,207,246,234, 20,135,100, 81,119,172, 47,215,176, 90,127,177, 27,222,103,153,233,244,169,233,232,147,214,193,200,228, 91,239, +227,207,200,144, 78,150,194,105, 20,187,223,219,189,162,190,109,118, 83,184, 75,123,244,125, 97,113,219,196,212, 51, 33, 99,193, +217,191, 23, 94, 28,216, 84, 42,252, 55,221, 73, 6,165,136, 83,103,122, 73, 56,189,155, 84,251,150,101,219,146,101, 26,183,245, +132,205,154,233,120, 12,214,115,114, 56, 5,160,204, 75, 50, 99,112,125,143, 50,121,220,165,251,134,215,230, 21, 15,191,254, 38, +188,255, 65, 12, 48, 81,123,124, 4,217,199,127, 71,217,231,175,111,219,237,146,200, 26, 27, 73, 92,222,199, 48, 17, 37, 33, 3, + 45, 4, 77,231,208, 72, 86,193, 83, 32, 88, 16, 8,206,115, 32, 5, 54, 4, 46,251,158,137,138,141,192, 38, 65,209,197, 16, 64, +228,247,166,213,129,108,227, 93,130,223, 19, 15,194,166,130, 23, 92, 34,246,245,207,255,153, 23,255,251,171,248, 19,232,228,136, +149, 26, 22,186, 62,194,224,214,237,174,255,103, 54, 8, 22,206,174, 57,157, 95,112,234, 61, 44, 47,226, 52, 3, 80, 8,120, 85, +197,229,102, 5,171, 45,109,215,115, 50, 61,100,221,183, 60,209, 49,171, 30,167, 65,118, 59, 18,163,200,227,251, 54,232,117,189, +137,208,252, 80,156,148,197,123,131,207,193,119, 29,254,236, 17,206,247, 60, 10, 61, 63,152, 85,228,128, 81, 2,157,105,100, 46, +200,171, 10,151,107,176, 61,107,215,177, 92,109, 80,143,174,201,239, 76, 99, 19,234, 60,106, 86, 48, 42, 2,186,201, 41,187,146, +243,229, 53, 11,105,233, 61, 28,143, 39,204,110, 29,162,148, 36, 88,104,183, 45, 25, 1,219, 89,132,136,136,157, 17,130,186,109, +168,138,156,215,230,135,252,199,235, 83,166,121,201, 55,111,189,206,149,123,194,199,109,131, 32,139, 69,247,238, 93,184,188,138, +171,182,182,123, 57,116,254, 57, 5,250,121,146,156,190,121, 78, 69, 90,231, 8,187, 99,165,135,255,159,186,247,108,178,236, 58, +239,253,126, 43,237,112, 98,199,153, 1,102, 6,145, 0, 73, 48,136,162,168, 72,221,171,171,107,189,176,222, 58,125, 5,127, 13, +126, 26, 87,185, 92, 46,135,178,101, 91,117,203,215,165,146,117, 45,139,162,196, 32, 6,136, 4, 48, 4, 6,192,204,116, 58,113, +135,149,252, 98,173,221,231, 76, 34, 2, 85,186, 86, 87,117,117, 79, 79,247, 9,123,175,181,158,244, 15,207,248,155, 8,124,176, +217,240,254,102, 67,216,108,152,108, 74,142, 70, 35,220,116,204, 47, 85,193,151,116,137,174, 11,106,161,232, 8,180, 33, 49, 20, +218,224,168,139, 17,119, 15, 61,247,164, 72,190,237,139, 53,108,123,254,135,239,253,132,232, 44,232,241,117,155,154, 73,149, 20, + 44, 67, 62,127,214, 61, 76, 71, 40,210, 56, 78, 41,131, 20, 2, 41, 52,183,170, 49,247,104,161,158,208,121,203, 97, 61, 66,199, +200,237,233,152,219,179, 17,181, 81,172, 27,205,173,110,198, 74,104,240,150,224, 18, 30,228,197,217, 17,175,188,124,151,111,188, + 54,199,148,154,155,199, 37, 55,223, 62,164,111, 54,252,183,189,163,251,240, 62,194,247,196,237,138, 11,111, 57,242, 61,147,170, + 98, 50,159,178,110, 91,150, 87, 93,214,108,224,122,150,221,111,219,221, 57, 65,155,102,235, 19, 7,182,226, 3,161, 57, 31,111, + 24,141, 21, 71,166,102,101, 27,162, 15, 56,224,157,102,203, 89, 8, 40,169,168, 43, 69, 37,210, 40, 86, 86,145, 77, 35,210, 88, +176, 80,233,188,183,221,206,203,163,123, 90,123, 63,254, 42, 64,244, 62,117,248, 83, 87,234, 3, 8,167,200, 21,143,207, 51,219, +224,115,133,222,166, 67,113,219,238,108, 81,201,135,214, 64, 33,250,231,212, 18,127,242,141, 63, 15, 60, 36,101, 58,228,116,238, +155, 18,224,104,204,239,188,126,155,155, 39,199, 76,231, 37,149,209,156, 28, 30,240,225,229, 57,171,237, 22,101, 20, 81, 12,109, +232, 68,237,160, 46,118, 82,152, 42,139, 4,172,123,216,108,224,106,155,248,200,109,127,141, 58, 86, 35,195,200, 40, 68,148,108, +189, 99, 99, 3,103, 77, 67,127,149,231,237,155,203,207,119, 96,171,189, 46, 10,131, 82, 87,110,221, 26,147,237, 70,243, 2, 40, + 51, 21,101, 24,228,201, 61,158,113, 36,123,210,199, 4, 2, 52, 38, 5,222,174,221,177, 20,164,220,241,106, 10,185,107,185,135, +144,103,167,123,115,173, 48,120,162, 15,200,238,140, 54,247, 49,207,239, 67, 66,123,186,252,243,110, 11, 33,176,237, 44,203,190, +103,213,247,148, 74,115, 52,155, 81, 21, 21, 39,179, 99,140, 81, 72,161,209,101,129, 16,146,217,120,130,115, 61, 35, 93, 80,170, +200, 5,106,103,149,232,251,244,248, 62,163,137,221, 51, 58, 65, 74,238,168, 42, 3,208,188, 48,100, 88,123,154,102, 40,137, 37, + 94, 23,212, 32, 17, 49, 38, 45, 23, 18,117,205,121,207,101,219, 81, 85, 26,215,123,182, 54, 80,228, 45,115, 13,148, 27, 40,108, + 3, 86,193,251, 92,197, 59,210, 48, 88,236,130, 88,239, 30,167,118, 62,171,195,245, 60,205,251, 39, 55,122, 53, 74,126,230,227, + 50, 37,120,101, 6, 8,250, 60, 11, 63,187,252,100, 7, 40,111,179,177,142, 72, 93, 42,107,147,167,192,114,243,233, 19, 81,159, + 16, 74,221,164,230,131,222,241,253,182,227,103,155, 54,237,167,102, 11, 62,139,110,168, 36, 49,122,173, 43, 32, 67, 66,194, 83, +164,239,243,216, 68,208, 35,131, 70,184, 6,169, 42,148, 23,168,222, 18,101,224,181,217, 41,199,166, 96, 50, 27, 99,180, 68,150, + 26, 85,106, 34,130,162, 46, 89, 44,150,232,141, 69, 7,129, 84,105,223,248,182, 71, 40,129,170, 53, 69, 81, 50, 50, 37,149, 48, + 8,161,185,117,231, 6,245,193, 24,115, 56, 70, 24,141, 18, 26,239, 34,182,115,200,210, 16,188,199,197, 64, 81, 26, 90, 31,104, +251,150,117,132,214,148, 52,192,168, 52,188,183,110, 8, 50, 18, 11,147,206,139,201, 24, 84,129,240, 1,185,234, 17,217, 65, 55, +239, 32,212,245,167, 70, 37,136,223,222,103, 72,191,227, 65,150, 5,210, 8,164, 18, 72,145,212, 48,165,247, 79,183,225,247, 43, +246,253, 79, 47,232,172,227,114,221,176, 88,246,196,182,227, 81,140,252,198,116,204,161, 54, 76,234, 9, 0,239,180, 27, 46, 92, +199,199,125,207, 54, 6,122, 17,113, 66,195,225, 12, 38, 35,226,100, 2,179, 89,218, 71,171, 38,105, 30, 92, 44,211, 26, 57, 63, + 75,126, 20, 34,209, 21, 27,160,150,142,185,210,180,206,114,101, 59,254,106,181, 77,123,161,168,185, 51,154, 50,146,138, 50, 6, + 94,158,140,152, 40, 73, 89, 40,188,130, 94, 40, 62,180, 14, 87,150,212,166,194, 17, 25,153,146, 55,191,240, 50, 7,211, 17,109, + 31, 48, 72,182, 54, 34,162, 68, 19,249,229,250, 42, 61,119, 81,114,235,228, 16,163, 10,122, 4,239, 93, 93,225,151,103,153, 97, + 16,210,243,219,236, 36, 24,158,156,207, 39,227, 33,164,166,233,123,126,218,123, 94,174, 36, 70, 68,122, 31,232,188,231,157,126, +195, 79, 54, 61, 27,239,145,217,151, 69,163, 16,165,160,245, 36,165, 65,145,217, 35, 82,165,241,168, 16,121,236, 41,114, 49,229, +159, 15, 42, 44,139, 84, 84, 85, 38,237,199,161, 91,250, 43, 42,251,199,131,186,148, 48, 58,132, 98,154,128, 14,163, 81, 86,184, +146,201,122,174,168, 18, 34,215, 84,169,202, 40,244,110, 46, 54,104,214,126, 30, 78,237, 63, 69, 48, 31, 14, 55,249, 12,125, 94, + 85,236, 29,230,164,139,116,115,204,183, 94,189,205,168, 30,209,181,129,186, 42, 80, 50,112, 88, 76,248,104,181, 96,219,111, 81, + 50,166, 24, 88, 40,162, 86,200,202, 32,164, 76,168, 73, 31, 97,217, 38, 95,246,197, 26,150,217,159,125, 86,167,235, 54,174, 48, + 38,205,147,173,247,248, 0, 27,239,211,225,237, 61,172,206, 63,123, 53,166,115, 23, 37,184, 93, 94, 39,217,179,161, 53,105, 30, + 99, 76,230, 71,154, 28,108,217,161, 57, 7,224,154,209,121, 54,170,211, 74, 68, 67,200,153,234,224,152, 23, 99,170,160, 66, 76, +139, 63,100, 10,214, 0,138, 51, 58,183,189, 51, 35, 32,100,107, 77, 93,236,230,251, 42,238,130,103,148, 89,191, 63,183,166, 93, + 82,251,162,235, 97,181,133,208,179,145,154,227,233,148,195,106,204,108, 58,197,123, 79, 89, 22, 40, 41, 24, 79, 38, 56,107, 9, +193, 98,187,158,178, 40, 8, 42,178,106,186,244, 6, 93, 72, 45,238,190,123,254,104,199,251,188, 49, 34, 96,114, 82,147,121,236, + 25,131, 16,131, 39,202,152,198,219, 49,210,245, 14, 39, 99, 50,112,241, 17, 27, 28,141, 15, 76,180, 98,219, 88, 10,163,114, 52, +207,231, 68, 8, 59,228,255,208,245,232,236, 30, 74, 63, 38, 0,159,103, 39, 60, 33,194, 39,239,157,231, 5,245,199, 70, 42, 21, +220, 60, 74,201,247,168,230,141, 73,193,177, 54,212, 81,112,164, 21, 55,100,224, 98,185,250,228,181, 39,196,142, 2, 26, 99,154, +237,111, 59, 88, 52,159, 92,233,239,239,205,174,227,170,141, 60, 10,145,141,202,215,223,147,170, 32,187,190,166,179, 37,212,176, + 73, 65,222,107,132,235,147, 0, 77,238,128,136, 40, 17, 42, 38,122,155, 8,200,114,130,244, 61, 50, 68,214,209,115,103, 82,113, + 84,205, 24, 41,141, 86, 18,169, 20, 33, 6,212,164,196, 90, 79, 64, 96, 53,244, 23, 43,100,231, 8,173, 69,212, 6, 57, 41,137, +214, 35,141,166,156,212,140,203, 17,243,217,148,234,116,134,158, 84,168,113,133,170, 12,193, 6, 90,235, 16,133,196,134, 64, 80, +146, 32, 37,141,247, 4, 33,184, 10, 30,163, 20,235,174,163, 51, 6,173, 43,222, 58, 57,230,230,184,230,168, 54,220, 28, 25,254, +139,219,183,248,175, 95,191,203, 91,167, 35,254,106,213, 34, 93, 64, 6,119, 29,204,245,240,213,104,180, 82,104, 37, 51,222, 80, +160,188, 71,121, 80, 74,163, 42,185, 75, 4, 4, 40, 41,144, 49, 33,224,229, 94,235,254,233,106, 93,167, 22,122, 78,110, 35,145, +216,103,157,254,117,199,182,138, 8,111, 57,179, 13, 87, 81,240,113,223,114,207,182,108,172,229,178,105,137, 66, 98, 51, 59, 70, +214, 21, 98, 52, 34,102,103, 63, 70, 21, 84, 21,163,233, 4,187,216,100, 91,209,144, 40, 89,139, 45,244, 61,247, 31, 92,242,221, +143, 30,112,213, 47,249,139, 95, 62,130, 15, 62,204,235,106,205,202, 54, 84,125,143,176, 13, 69,136,204,140,194,134,192,186,109, +249,225,229,154,141,212,248, 24,145,198, 32, 84,193, 89,215,113,103,114,200,205,185,193, 89,199, 98,213,177,117,160,181,132, 62, +242, 96,253,136,237,102, 11, 77,195,225,193, 17, 33, 70,186,190,227,131, 95,188, 11,155,101, 46, 90, 51, 8, 85,239,241,204,159, +220, 87, 33,183,203,183, 14,175, 4,127,223,118,252,223,151, 43,222,110, 59,254,118,189,225,199,139,150, 77, 76,116,213, 66,194, + 76,107,186, 24,136, 66, 38,207,166, 97,236, 27, 19,173,247,200, 20,180, 18, 94, 61,152,112, 37, 76, 22,235, 82, 59, 9,229,167, +138,184, 12, 52,237,243,226, 16,207,176,133,125,110,251, 93,235,164, 62, 53, 59, 76,243,218,168,178,218, 85, 1,151,151, 80, 5, +104, 87, 80, 78,210, 28,216,100,126,162,201,237,216, 65,217,203,185,127,222, 10,125, 95,201,108, 16, 81, 25,254,237,220,222, 91, +204, 78, 56, 58,253,205,203,211, 81,166, 77, 70,170, 66, 98, 10, 77,111, 35,101,110, 87, 42, 4,165, 0,105,210,251,178, 22, 98, + 70,236,247,214,165, 96,212,183,169,165,178,204,193,112, 86,229, 89, 82,170, 88, 61, 17,105, 10, 68, 76, 7,100, 41, 3,157,144, +159, 13, 16,247, 36,128,201,183, 32,170, 76, 83, 11, 59,174, 56,164,255, 43,178,232,193, 53, 90, 61, 47, 6,159, 91,244,251, 90, +223,229, 36,161,229,251, 12, 98, 11,213,110,132, 50,140, 86,182,171,180, 97,125,174,194,237,240,213,237, 84,232,174,171,203,225, +189,245,233,185, 6,235,207,184, 55,103,133,221, 8, 71,230,182,179,203, 86,179,155,158, 48, 25, 97, 2,196, 24,233,156,163, 42, + 43,132,148,232, 34, 85, 71,169, 59, 22,249,222,131,247,248,218,233,109,198,198, 80,158,206,233,174,214, 57, 97,202,175,223,254, + 10, 43,211,216,166,128, 14, 73,176,162,202,107,196,231,235, 84, 25,176, 73, 60,100, 8,202,222,122,218, 24,169, 60,120, 25, 48, + 14,214, 46, 80,105, 65,231, 82,160,170, 76,106, 26,116, 42,111, 82,163,119,216,145, 65,203,125, 16,224, 24, 2,163, 54,169,253, +238,229, 39,143,175,246,247,214,222, 82,127,172,139, 51,159, 51,159,212,152,217,136, 27, 82, 49, 51, 5, 91, 23, 49, 37,168,224, +241,189,228,213,227, 99,222,221,222,255,228,231, 90,183, 48,233, 82,162,164,115,199,174, 72,157,201, 79,189, 55, 71, 85, 74, 96, +203, 92,150, 78,138,212,241, 58,157,165, 91,112,113,158, 76,101, 84,149, 70, 40,195, 45, 42, 52,194,107, 34, 14,130, 33, 42,155, +243, 66, 75, 12, 37,193,247,248,178,198,105,133,125,180,228,127,253,209, 15, 24, 71,193,188,252, 58, 82, 41, 60,130,114, 84, 16, +123,143,152,214, 8, 31, 88,158,175,112,210,114,255,195,123,140,100,228,120,118,202,232,116,142, 26,151, 72,153,199, 2, 35, 65, + 57, 31, 35, 39, 73, 57,113, 16, 67, 9, 66, 18,163,192, 75, 73, 52,208,228,110,148,170, 20,155,117,147,192,103,120,212,168,100, + 46, 13, 55,162,163,139,145, 98, 58,227,197,245,134, 66, 27,254,112, 62,162, 38, 80, 86, 83,126,183,151,124,247, 23, 31, 49, 61, +158,208, 54, 13,210, 6,102, 64,211, 89,164,117, 72,231, 17,131,135,183,183,215,103, 91, 52,250, 41,206,122, 28,130,180,123,188, + 34,223, 63,102, 2, 26,177,223,226,181,225,122, 1,197, 46,161,191,127,252,119, 11,126, 60,159,115,251,246, 41,107,161,185, 49, +155,242,113,150, 22,142, 49,178,237, 60,197,184,192,201,196,124,153,148, 21,109, 76,235,254,173,219, 55,121, 57,118,244, 93, 79, +123, 52,226, 7, 77,195,253,143,174,146,184,141,112,176,190,202,186, 74,129,183,239,127,176, 91, 35, 75,141,248,210,239,242,202, +228,144, 27, 85, 5, 97,195,213,102,201, 61, 21,144, 82, 17,130,231,170,233, 81,170, 96, 90,214, 9, 15,101, 45,181,144,108, 62, +190,207,189,197, 21,181, 52, 92,184,192,228,245, 87,137,165,230,206, 75,183,248,250,242, 85,254,207,243, 5,156,159,241,227,255, +231,175,119,103, 90,183,217,139, 25,123, 4,132, 95,245,209,245, 96, 2, 92, 56, 88,151, 48,174,185, 88,101,141,249,124, 78,170, + 73,141,138,129,149, 11,140, 74,205,186,203, 12,161,222,131,134, 63,157, 86,220,136,145, 57, 0, 19,188, 13,124,124, 56,227,127, +218, 58,220,162, 77,137,198,106, 5,182,223,141, 81,202, 34,157, 83,195,248,146,140,103,178,242,217,251,255,169,160, 62,170,161, + 58, 74, 30,211,202, 64,219, 38,190, 92,211,193,252, 16,232,147,137, 70,183,222,205,212, 11,189,155,185,199,161,141,246,252,172, +125,244,123,191,201,246, 47,255,230,159,190, 82,223, 63, 68,158, 2, 20,237, 81, 70,100, 62,200, 85,207,189,143, 23,124,243,238, +150, 48, 58,194,148, 6,169,161, 82, 37,127,241,179,159,112,241,241, 5, 24,216, 22,145, 73,126,188,170, 84, 88, 11, 91,151, 57, +199,235, 38, 85,231,203, 54, 7, 69,153, 40, 68, 70, 64,165,174, 27, 33,135,229, 4, 41, 21,198, 84,124,184,186,160, 27,120,202, +101,190,198,159,229,163,235, 83, 59, 38,132, 29,143,220,134,157,242, 16,213, 14,160,228,119,221,249,148,190,231,223,209, 58, 97, + 3,122,191,211,229,222,191,143,251, 12,135,144,175,239, 48,243,244,121,152,106,115, 0,241,215, 15,158,231,237,114,151, 64,120, +210,154,105,114,102, 41,121,188,109, 59, 24,124, 40,185, 75, 70, 10, 13, 10, 44, 29,202,104,182,237,134, 24,234,235, 68, 11, 2, + 90, 73, 74,173,248,202,233, 75,156,175,175,168,202,146,170, 50,116, 70, 38,228,109, 40,210,252,248, 87, 1,180, 29, 36,162,249, + 54,137, 60, 12,243,238,125,205,250,152,223,155,221,105, 11, 7, 45,104,101,100, 82, 21, 20,170, 96, 28, 60,155, 69,131, 34, 49, + 65,186,144, 94, 66, 73, 96,217,248, 29, 62, 33,207,223,177,185,171, 97, 51,142,161, 8, 89, 53, 46,139, 79, 12,207,253,105,242, + 98,247,236,237, 60,159,106,166, 85,133, 50, 21, 7,165,129, 24,152, 25, 77, 99,123,250,206,115, 96, 52,141,240,105, 15,111, 63, +197,250,243,238,154,198,132, 54, 41,153,103,245,233,246,165,219, 75,178,182, 93,186, 56,190, 72,227,142, 16,161,236,161,154,130, +111, 82,133, 46,202,204,166,113, 59,140,134, 15, 48, 4,116, 61, 38,244, 27,194,168,194,175, 86,120, 52, 78, 68,172,208,172, 31, + 93,241,243,135,239,115,123,118, 3, 93, 24,154,222, 49, 37, 75, 21,228, 60,164, 45, 4,155, 94,115,142, 35,108,183,196,139,143, +185,249,209,132, 55, 94,124,153,233,139, 39, 40,173,209,227, 26, 66, 68, 42,149, 26, 43, 14, 92,227,104,215, 45, 91,235,176, 26, +202, 66, 16, 85, 66,199,111,108,160,169, 10,150, 33,208,136, 72, 20,130, 3,231, 56,247, 18,175, 21,119,170,130,143,199, 83,140, +243,216, 58,141,227,206,163,230, 91, 95, 62,228,171, 95,145,184,109,131,116, 61, 70,194,213,242,146,166,219, 98,131,231,195,135, + 87, 64,199,197,253, 13,162,185,132, 62, 57,183, 69,155, 58,165,241, 58,168,167,196, 39,118,253, 83,193, 60, 15,161,174,191, 62, + 89,185,139,189,200,112, 61,105, 90, 44,184,191, 88, 16,181,230, 74,215, 48,170,146,217, 75, 85, 18,181,162,111, 96, 52, 29,131, + 82,108,130,165, 22, 37, 55,149,228, 75, 70, 50,215, 71,120,181,165, 24, 31,160, 23,103,220,111,129, 81,155, 40, 99,155, 54, 3, + 65,247,248,235,166,128,187, 95,229, 63,253,218,183,153,207,231,244,155, 5,203,205, 61,188, 92,114,149,215,230,214,245, 72,111, + 49, 42,233,183,107, 83,177, 14,150, 27, 66,112,203,119,204,154,128,213,134,211,114, 68, 37, 60, 23, 34,221,243,131,201,140, 98, + 60,162,211, 25,219,241,228,188,250,186,232,251,148, 31,214,237,144,241, 77,147,240, 42,166, 74,103,189, 41,241,139, 13,219, 74, + 49,171,107,154,222,161,180, 98,107, 19, 45,238,182,128,113,140,252, 70, 89,177,142,158,169,208,168,169,225,101, 4,219, 81,207, + 15, 15,231,124,112, 49, 78, 74,114, 15, 30, 36, 87, 78,178,169,206, 16, 83,226, 94,241,179,143,139,122, 6,142, 34,181,223,181, +134,233,113, 82,178,137,234, 90, 78, 83,169, 50, 89,244, 9, 1,109,200, 64, 22,153,103,234, 67,213, 88,164,202,103,208, 7,127, + 94,251,240,206,171,124,251, 43, 95,229,189, 77, 3, 87,151,255,116, 65,125, 64, 85, 15,179,244, 33,184,239, 43,166, 41,185,163, +115, 9,153,130,203,166,229, 29,122, 94,157, 78,136, 81,210,181, 29,111,255,226, 29,126,252,224, 10,187,186,202, 66,254, 10, 31, + 34,227,194, 16,137, 88, 1,190,115,176,202, 38, 23, 93,214, 27,150, 89, 29,107, 82, 66, 57, 74,149, 8,145,233,120,198,124, 50, + 69,106,147,148,196,165,100,217,181, 9, 29,127,181,253,124,238,107,215,109,238, 28,177,245,158, 71,184,207,130, 47, 3, 86, 77, +100, 69,181,125,183,175, 50,189,182, 84,121,229,175,214,165,164, 46,228,170,178, 24, 2,118, 76,156, 80,223,100, 26,154, 76,179, +247,202,236,105, 20,228,150,187, 44, 51, 71, 62,209,213,112, 54,137,233, 12,226, 43, 79,182,139, 6,101,169,129,250, 54,206,244, +150,201,152,121, 85, 34,163,192,135,128, 68, 34,181, 34,134, 64,239, 59,218, 77,139,139,142, 77,179,198,147, 90,218,222, 90, 86, +157, 77,247,216,246,201,221,238, 19, 89, 24, 46, 37, 98,131, 36,164,139,169, 21, 63, 84,237, 66,237, 54,241, 32,149,155, 53, 34, + 14,170, 26, 41, 2, 94, 40,182, 77, 79, 97, 36,133,140, 4, 23, 9, 33, 34,181, 76,222, 53,144, 42,187, 65, 18, 86,134,157,170, +222,160,255,224,247,228, 98,241, 79,211, 14, 63,203,199,193,156,131,201,132,233,225,148, 88, 26,166,166,162, 84, 6, 71,146,190, +221,246, 22,105, 91, 54,219,150,197,249,226,233, 32, 28,158, 16, 74, 24,149,112,122,196, 27, 71, 83,190,121, 56,226, 55,142,198, + 28,141, 21,239, 63, 92,127,242,218,173,138,148, 20, 93, 91, 35,103, 63,133, 81,157,128,141,245,140, 59, 35, 67, 24,149,244,103, +139,204,208,200, 30,240, 54,181,151, 68,200, 95,163, 76,237,120,225, 17, 65, 35,156, 71, 84, 10,164, 65,132,152,184, 9,126,203, +253, 71,107,142,102,154, 89, 57, 71, 8, 77, 23, 97,211, 59, 54,109,207,202, 59,182,214,241,225,114, 69,231, 45, 23,221,134,243, +126,197, 7,221,134,179,229, 57,114,213, 50, 63, 60,130, 16, 80,198, 16, 92, 36,246, 14,187,234,105,206,214,124,116,181,102, 25, + 60,157,136, 56,163,176, 34,242,208, 71,186, 74,211, 6,216, 32,208,133, 65,121,143, 49, 10, 35, 36,174, 44,145,198,160,165, 0, + 99, 88,233,130, 43,235,185, 50, 5, 97, 84, 35,141,161,200, 62,241,149,169, 40,117,193, 68, 26,222, 28,207,248,198,201, 93,190, +124,248, 2,111,222,122,129, 77, 1,237, 38, 98,138,164,136,102, 32,201, 39, 3,134,128,182, 14, 29,194,117,251, 62,181,230,143, +145, 52,215, 36, 24,129,124,110,102, 24,159, 53,207, 13, 1, 92, 79,108,182, 9,255,208,108,210,218,213, 26,155,233,204, 35, 83, + 49, 82,145,215, 71,154, 3, 31, 24,107,133,209,154,166,111, 56,174, 70, 92,132,192, 69, 36,157,139, 85,153,214,131, 23,136, 66, + 38,206,251,248,132, 63,248,189,127,203, 87,191,252, 26,135, 71, 53,101,169,105,214, 45, 62,108, 40,138, 18, 79,214,112,176, 22, +225,114, 97, 28, 4, 50, 68, 42, 97, 57,213,201,120,201,147,204,149,238, 59, 65, 35, 53,171,117,203,249,213,130,127, 60,255,152, +248,224,193,174,120,121,222,200,234,179,152,166,120,159, 37,178, 51, 53,181, 27, 24, 47,137,151,222,117, 22, 39, 36, 86, 12,179, + 56,207, 23, 75,201,151,181,196, 10,193, 76, 40, 90,173, 56,208, 53,125, 81, 82, 85, 99,222, 67, 51,153,207, 88, 72, 9, 71, 7, + 80,141,211, 94,240, 54, 83,222,114,102, 90,100,145,156,103,188, 31,241, 84, 80,175, 10, 56,190,157,104, 62, 38, 75, 21, 6,153, +230, 45, 49, 5,183,228,103, 46, 97,187,200,115, 72,151, 90,243, 93, 6,207, 13, 92,220,231,125, 44, 46,121,239, 71, 63,250,167, + 13,232,195,205,209,250,241,153,250, 48,155,188,238, 61,101, 85, 53,113,141,100,130,206,226, 47, 87,220,211,150,191,254,135, 95, +240,183,127,253, 99,126,254,227,159, 96, 31,158,239,184,244, 64, 49,210, 20, 82, 18,144,200, 8,125,219,167, 42,207,219, 4,136, +155,212, 41,200, 21, 89,216, 63, 59, 30,129,228,100,122, 68, 81, 84, 8, 4,101, 89, 96,116,193,217,253,251,112,177, 72, 1,240, +243, 28,222,194,103,119, 49,177, 83,105, 27, 90,240,106, 79,143,125, 0,194,133,152,240, 15,131,216, 79,200, 82,132,195,124,215, +186,157, 25,129,218, 75, 16,100,166,163,233,220, 46, 14,121,150, 62, 0,232,134, 64,231,243,235, 16, 62,243,230,227, 78, 72,195, +125,194,251,147,185, 26, 22, 25,239,160, 18, 0,209,150,138,227,122,130,136, 26, 79,199,166,109, 82,238, 98, 35, 77,219,178,217, +172,177,193, 33,240, 92,110, 55,188,191, 88,167, 74,176,239, 18, 72, 39,186, 79, 47,134,228,178,125,218, 40,163,197, 69, 62,230, + 6,231,167, 33, 25, 9,225,218,246, 87,213,146, 90,106,154,174, 3,231,115, 87, 57,105,110,143,181,100,166, 4, 90, 70,100, 16, +180,249,255, 99,231,114,245,151,199, 84, 33,215, 80, 42,175, 79,216, 73, 38,127,222,160, 62,158, 96,199, 37, 98, 54,162, 86, 21, + 86, 8,140, 20,120,169,216, 4, 16,209,211,187,192,207,207,182,233, 16,178,185,179, 85,229,222, 94,153,173, 34, 7, 21,201,227, + 99,222, 60, 61,226,219, 55, 78,121,101,126,204,216,148,220,170,107,102, 53,188,251,209,197, 39, 84, 54,164,174,132,202, 35,169, + 40, 83,167,108, 54, 70, 30, 28,240, 95,221, 56,230, 55, 15, 79,248,114,173,248, 94,211, 36, 34,189, 82, 89,193, 81,164, 2, 66, + 6, 68,187, 77, 24, 13,101, 32,170,164,112,150, 41,154, 34, 88,132,243,105, 47,201,154,216, 53,252,227,213,138,218,120, 26, 7, + 54,106, 58, 34,143,250,158,171,174,229,106,211,224, 4, 60, 90, 47, 88,249,158, 38, 10,164,136, 4,169, 57,239,183, 44,206, 23, +212, 86, 34, 99,164,191, 76,250,237,205,217,138,247, 63,126,200, 59,155, 5, 75, 28,189, 49, 44, 66,100, 29, 5,157,128, 94, 9, +162,146,184, 66, 83, 35, 40,181,102,235, 29,141,143,156, 26,205, 66, 42, 52, 80, 43,201,149, 11, 89, 96, 69, 35,141,162, 54,138, +224, 3,227,162, 32, 56,199, 68,192,239, 31,156,242,214,209, 13,222, 60, 58,230,246,244,128,147,209,156, 87, 79, 95,228,214,205, + 35,198, 55, 15,185,156, 76, 49, 40,116, 52,152,222,163, 99, 72,254, 34, 90,161,133, 64, 27,205, 75,191,255, 91,252,214,191,250, + 54,239,255,240,251,123,192,185,180,215,196,175,110,245, 60,255,140,181,110, 39,197,218, 88,124,219,211, 41,193, 68, 41, 14,162, +229, 11,227, 57, 70, 74,182, 93,195, 68,107,214,193,113,223, 59,206,107, 67,172,139,164, 89, 48,159,194,180, 66,212, 19,168,102, +188,245,141,223,226,213,147, 91,220,185,123,152,140,209, 10,205,118,177, 96,219, 45,209,122, 76,101, 42,180, 20,216,222,226,131, +165, 42,167, 84,101,133, 86,130,117,111,185,108, 87, 64,160, 87, 37,231,162,228,222, 38,242,254,217, 5, 15,175, 46, 88,244, 29, + 31,174,175,114,155,198,254,106, 26,230,103,217,110, 58,251, 99, 12,194, 82,248,157,163,102, 22,152, 18, 34,123, 92,100,253,144, +127,165, 34,175,104, 77,140,130, 40, 37, 94,107,130, 50,196,162, 32, 42,131,169,107,110,205, 14,121,235,240,152, 87, 38, 35,190, +122, 56, 69,142, 20,139,160,240,155, 62,117, 60, 7,224,111,255,124,234,201,112,175,119,189,106,153,196,111, 0, 66,103,243, 6, + 79, 98, 13, 97,177,222,189,129, 34,207, 9,201,213,156, 41,118,200,221,255,216, 31,215, 51,245,103,180,224,187,103,252,110, 12, +172,191,255,206,227,200,104,178, 60,108,159, 17,253, 66,210,135,128, 18,146,198,237,169,129, 13,207, 17,114,160, 51, 25,193,108, +179,222,112,173, 88,116, 45,186, 54,140,138, 10, 98,224,193,197, 85,162,189,225, 62, 63,101,201,229, 85, 88,200, 93,111, 45,228, + 27, 24,179,165,223,208,146, 31, 42,244,161,242,206,146,181,248, 61,109,233,125,253,230, 32,119,191, 59, 84,225,158, 29, 94,162, +207,143,207, 48, 47,222,123,158,235, 36, 74, 62,221,106,255, 85,239,229,218,180, 40,166, 4, 98,185,101, 89,151,124,108,206,184, + 53,191, 65,187,134, 66, 43, 30,245, 45,211,106, 66,227,182,172,109, 75,239, 90,206,183,107, 70, 90,103, 11,183,161, 99, 96,159, +125, 94,253,230, 87,249,131, 55,190,194,229,250,146,159,252,217,159,239, 81,169,100,122,238,206, 67,185,135, 11, 40,196,174,163, +240,228,230, 89, 54,220, 15, 29, 69,244,212, 82, 97, 2,212, 49,210, 92,231, 93,158,145, 16,140,138,200,184, 80,124,180,241,232, +218,208, 53, 57,217, 17,185, 67,224,179, 32, 77, 17,118,116, 63,177, 55,139,127,214,136,233, 73, 4,212,254,124, 48, 4, 38, 99, +131, 17,146, 7,222, 18, 28, 76,235,154, 70, 72, 86, 4,106,105, 80,101, 65,121,235,128,110, 93, 37,112,226,102,149,124, 14,164, + 78,235,160,205,143,183,222,130,214,188, 54,159,112, 48,158,227,128,201,104, 12, 69,203,201,244, 34,181,205, 99,183,163, 48,198, +240,196,117,119,160, 38, 9,135, 51,170,210, 11,108,151, 32,111,242, 71,163, 41, 47, 31,222,192, 16, 48,245,152,255,252,141, 13, +255,253,213, 50,177, 71,132, 72,201,114,151,169,137,179, 99,104, 22, 73,153, 76, 8, 98,244,196, 32, 8, 69,133,167, 69,248, 2, +161,122,112, 13, 81, 58,194,106,193,255,248,195, 31,243,199, 95,182,156,110,206, 56, 60,184, 73,208,154, 77,112, 8, 17,136,206, +177,240,142,166,247, 28, 25,195, 88,150,200, 24,233, 8,220,243, 27,126,242,238,247,184,251,209,156,187,245, 1, 49, 4,150, 93, +195,125,215,112,105, 20,177,186, 69, 17, 60, 99, 20, 86, 66, 85, 8,172,139,168,210,224,189, 37,170, 4,232,155,234,130, 96, 91, +238,175,215, 28, 72,201, 74,105, 46,235,146, 19, 33,216,216, 64,239, 60,194, 24, 92,140,152, 16, 57, 40, 12,213,100,196, 29, 51, +231,166,214,148,194, 80, 0,117, 41, 49, 82, 48, 81,130,155,197,203,252, 54,183,249,195, 91, 75,214,205, 10,239, 35,139,230,146, +224,123,218,118,203,119,239,159,241,198,180, 4, 34,127,247,203, 11, 52, 63,161,218, 76,177,199, 22,233, 92,166,188, 61,223,140, + 37, 60,177,172,196, 19, 95,175, 63,182,109,250,220, 20,240,240,130, 7, 55,142,240,243, 17,191,109, 74,108, 76,182,197, 91, 31, +104, 66, 96,163, 5,161, 39, 37,100,163, 2,209,247,144,145,245, 71,102,202,203,167,183,208,133,164,109, 91,148, 80,172, 87,107, + 58,219, 98,132,161,210, 26, 99, 74, 84, 47,217,148, 27,156,243,116,182,167, 46, 43,140, 48, 72, 25,120,180,241,172,195,150, 35, +113,147, 27,167,167,220,169, 74, 46,214, 91,254,254,254, 61,126,182,188, 72,227,227, 27,135,105, 45, 62, 20,136,216, 37,252,192, +147, 45,248,231,181,226,181,126,186,213,237,246,168,220,195, 57,167,117, 2, 76, 11, 11,141,134,106,192, 12,165, 98,238,102, 93, + 80,133, 12,141, 39,209,249,188, 16,148, 66, 33, 67, 90,189, 18, 0, 0, 32, 0, 73, 68, 65, 84, 76,133, 82, 5, 5,146,178,170, + 56, 86, 5, 86,151,252,142, 80,188, 57,170,249, 15,135, 35, 30, 60,218,164, 89,123,187,218,141, 8,247,164,154,227,115,103,234, +151,103,132, 91, 47, 82, 24, 67,143, 73,104, 93, 35, 9,189, 75,122,191,171, 85,170, 78,135, 57,106,116,185,117, 25, 62,191,201, +202, 63, 53, 88,238,211,102,161, 58,255, 78,208, 79,247,158,134,116,103, 82, 82,206, 43, 42, 85, 64,244,196,172, 42,182,123,140, +204,113, 28, 2,251, 32,206, 63,184,132, 69, 88,111,215, 84,198,176,217, 88,148,134, 69,179,205,129,242,215,189, 96, 46, 43,142, + 13, 1, 54, 87, 70,131, 81,192,254,195, 15,115,221, 97, 49, 63,121,173,202, 98, 15, 13, 63,152,222,228,191,177,125, 62,144,217, + 89,177,178,159, 48,236, 61,135,149, 59,128,218, 39, 9,165, 60,121,239, 68,230,148,123,145, 64,128, 77,199,163,237, 22,207,199, + 76,203, 25,203, 54, 80, 21, 53,109,215,115,222,174, 9,177,231,188,217,114,119, 58,231, 39,239,190,151,109, 11,179, 71,184,205, + 9,166,206, 55,122,160,245, 45,155, 20,208,207, 30, 60,254,220,165,220,157,106,206,166,214,112,204,116, 1,235,118,110,106, 82, +160,240,148, 74,227,109,100,162,253,181, 56,247,180,132, 62, 68, 70, 67,135, 72, 64,141,192, 17, 49, 72, 14,203,200, 85,227, 41, + 10, 65,223,199,107,145,149,235,192,222,231, 36,194, 15,236, 4,118,216,137,200,227,192, 69,246,112, 18,143, 25,170,164,100,243, +162,117, 92, 85, 61,166,168,120,179, 26,177,245,129,121,161,184, 93, 22, 80,107,126,122,214,225,166,227, 20, 56,199, 53, 52,147, +212,105, 82,185,251,118,152,125,158,111, 30, 2,240,161, 11,156,122,199,188, 30,177,142, 9, 85,254,115, 49,130,187, 55,179, 64, + 71,158,151,219, 38,113,112,135, 57,189,206, 20,216, 81,150, 9,181, 29,152, 41,244,158, 18, 69,235, 61,186, 44,185,180, 61,247, +228, 56, 29,192,219,188,222,218, 85,214, 84,128,232, 54, 8, 89, 37,198, 9,128,169, 9,177,133,190, 69,148, 18,175, 29,201,203, +203, 19,131, 33, 72,139,235, 44,127,254,131,159, 80, 77,198,124,245,246, 1, 7,163, 41,211,201, 49, 94, 73,180,237,152, 22,134, + 64, 75,140, 21, 94,168,164, 18, 38, 53,141,235, 89,232,130,127,247,241, 47,105,253, 59,220, 85,138,169, 72, 9,238,120, 60, 71, + 53, 51,162,168, 17, 46, 80, 58,207,184, 44,105,125,164, 12,142, 66, 10,164,139,212, 74, 96,163,134,178, 64,245, 13,139,222,114, + 82, 4,218,135, 87, 60, 82, 42,205,134, 77,133,236,122,122,165, 57,174, 12,115,231, 57, 42, 74,102,133,100, 60,170,208, 94, 16, + 60,232, 40, 24,213, 6, 23, 3, 39, 58,210,183,150, 23,102, 71,248,241,148,109,223,162, 14,142,216,174, 86,152, 99,205,159,190, + 96, 9,182,131, 16,249,227,155, 11,198,122,204, 95,254, 73,228, 7,139, 43,238,125,188, 66,108,214,233,108,216,174,247,230,241, + 79,207,101, 3,207,159,213, 62,133,239,161,135, 51,203,217,162,228, 63,224,120,125, 62,101, 90, 86, 52, 4, 62, 34,226,115,130, + 47,149, 36, 56,203,100, 50, 99,235, 35, 7,186,228,141,201, 41,135, 71,167,104, 96,185,106,104,150,139,196, 32,235,122, 92,238, +222,105, 81, 32, 10,197,184,168,177, 46,205,227, 93, 8, 24, 85, 50, 42, 39,156,140,239, 48, 26,157, 82,141,231, 28,206, 11,188, +240, 28, 90, 5,116,185,109, 77,106,251, 31, 29,164,222,253,213, 26,161,214,169, 3,173,158, 0,166,150, 69, 6,196, 13, 2, 90, +123, 1,127,112, 68, 30, 18,237, 46, 51,120,186, 39,227, 79, 46,150,108,159,215,114, 65,215, 58,238,107, 79, 21,224, 5, 41,177, + 58,160,133,196, 75,197, 10, 65, 39, 13,133, 41,241, 66, 82, 32, 40, 39, 19,188,210,160, 75,250,224,185,121,224,121, 16, 11, 68, +223,130, 60, 76,230, 98, 0, 23, 23,169, 8,242, 22, 97,219,103,204,212,173,131,209, 4, 68,106,213, 17, 21,170, 40, 18,191,174, +207,173,151,245, 58,101,245, 42, 62,157,195,133,248,207, 75, 99,251,181,231,240,123,222,225,215, 1, 43,238, 60,164,111, 30,242, +214,171, 55,185,115,112,192, 23, 79, 79, 56, 28,141,185,236, 27,182,157, 77,128,143,109,159, 5, 11,212,227, 8, 20,124,214, 36, +214,215,109,254,109,116,108, 93,199,102,211, 18,109, 6,140,100, 32,196,231, 31, 57,228, 3,221,100,196,110,200, 96,110, 53,112, + 30,213,238,103, 3, 53,237,121, 20, 8,145,233,105,206, 63,238,154,229,195, 78,100,199,231,121,167,217,227, 92,135, 12,126,203, +163,154,235,118,250, 32,123,250,228,122, 24,168,135,207, 90, 39, 3, 22,194,199, 68,225,216,108,177,214,177,180,158,179,237,150, +243,109,195,131,245,146,181,107,121,240,209, 25,139,179, 75,250,224, 57,251,229,199,169, 37,232, 92,162,202,181,155,235, 0,124, +109,247, 58, 0,250,154, 13,103,103,107,184,119,111,119, 45,116, 86,212, 27,212,239,204, 96,137, 40, 82,203, 46, 88, 16,146,209, + 48,197,136, 73, 30, 82, 33,169,164, 36, 34,152, 86,130,109,155, 80,240,133, 16, 76,132,160, 18,146, 82, 72, 60,176, 33, 85, 99, + 83, 69,146,161, 53,130,198,250, 93, 22, 25,124,222, 83,236, 84,255,180,120,220,229,110, 96, 16, 12,159, 3,102,226, 73,183, 52, + 37,161,168,137,227, 26,111, 12, 95, 51,154,219,147,146, 73, 97,152, 20, 37,117,140, 92,161, 40,203,154,149, 22, 68,163, 96, 92, +241,173,249,156,201,168,230,168,212, 76,235,154,182, 52,248, 34,105,183, 63, 16, 2,107,198,212,178,100,105, 3, 15,125,228, 47, +122,155, 70, 21,211, 58,181, 84,235, 42, 29,158, 78, 36, 60,133,218, 51,126, 10, 38,143, 97,178,147, 95,173,249,176,174, 56, 84, + 21,107,161,121,216, 88,254,175,197, 34, 21, 13,171, 77,154, 25,146, 57,189, 33, 37,146, 66,237,113,136, 67, 50,129, 17, 82,165, +100, 80,120,162,211,217,249, 44, 16,188, 38,120,135, 15, 2,219,247,124,240,104,193, 47, 30, 46,248,201,251, 31,227,101,203,173, +170, 96,109, 91, 42, 1, 54,122,148, 84, 68, 4, 93,102,106, 60,180, 45, 63,109, 59,250, 40,121, 20, 5, 11, 41,240, 81, 34, 70, + 35,182, 14, 54, 50, 73, 63,203, 82,179,234,193,107, 65,139,196,118, 62, 77, 25,250,192,185, 75,244,182, 90,105,214,174,165,107, + 90,138,174,165,245,142,105,215, 34,156,101, 29, 60, 68,207, 77, 34, 50, 6, 70,193,115,208, 5,198,198, 96,140, 65, 8,137, 48, +201, 22,212, 55, 29,218, 5, 74,173, 40,163,199, 40,201, 44, 66,129,224, 96, 52,166,234,123,102, 74,115,247,228, 46,135,229,132, +187, 7, 55,153,160,121,101, 60, 99, 90, 21,220, 60, 40, 57, 62,158,115,223,133,228,103, 97,178,194,227, 51,206,132,103,241,220, +159,213, 36, 18,251, 0,178,174,227,131,203, 53, 75, 21,249,229,178,225,103,109,203,125,235,120,100, 61,181, 73,254,244, 65, 42, + 74, 97,232,189,163, 42, 10, 14,202,212, 1,170,234,130,224, 60,190,183, 28, 11,149,196,124,164, 78,115,242,124, 22,117,237,150, +214,181, 52, 93,139,144,129, 82, 75,148,212,124,233,139, 95,225,173, 47,222,226,133, 91, 83,156, 11,184,182,101,187, 89,241,211, +243,143, 88,186,212,114, 23,190,231, 15,142,143,249,234,201,156,175,221, 60,226,167, 93,158,135,111, 87,215,227,190, 84, 88,100, +155,102, 23,174, 19,202,199,180, 33,158, 44,134,194,243,207,102, 49,140,214,250,164, 40,121,207, 59, 94, 19,138,211, 66, 97,133, +162,146,145,165, 52,108, 77,197,123,202, 96,131,167, 82, 5,163,202,224,156, 69, 41,201,170,107,153,148,117, 82,254, 35,208, 76, +103, 80, 23,188,122,122,147,171, 73,205, 23,111,223, 69, 31,205,217, 72, 13,162, 64, 68,123,125, 63, 51, 79, 93, 39,222,172, 46, +144,179, 41,135,147,138,173,239, 40,141,225,133,195, 9,203, 77,147, 14, 79,223,165,202, 98, 0, 81,197, 12, 78,250,255, 67,235, +253,179,130,235, 30, 75, 71,247,200, 33, 90,162,110, 28,242,133,211, 27, 28,141,166, 8,169, 41,141,161,150,134,251,143, 22,176, +220, 38, 47, 95,155, 91,167, 3, 69,141, 62, 27,151,144,218,153,209,239,108, 77, 93, 6,165, 53,109,250,217, 16,124,126,237,113, +131,218,155,205,202,157,189,168, 12,187,121, 59,159,208, 10, 31,244,248,133,222, 33, 83, 7,217,215,161,125,175,242,123,244, 46, + 3,231,220,238, 58, 10,118, 62,196, 3, 40,234, 73,127,119,153,219,250,195,235, 24,126,102,178,203, 92,161,211, 92, 74, 85,153, + 62, 37, 19, 86,227, 60, 39,145, 23, 87,208,116,116, 31,159,165, 86,236,106, 3,171,203,140,109,112, 41, 0,119, 93, 58,244,227, + 32,115,251, 68,192,235,250,116,223,246,175,133, 12, 9, 23, 50,188, 23,155,109, 78,251, 28, 60,124,234, 66, 89, 37,137, 54, 50, + 83, 17,163, 12, 70,169,132,237, 83,201, 9,111,170, 19, 8,178,212, 18,239, 2, 90, 68,180, 80,196,224, 57, 18,130, 86, 66, 25, + 21,133,132, 71,157,163,148, 18, 59,236, 33,177,135,141,136, 89,194,214,103, 45,247,225, 62, 12,238,130, 33,238, 2,250,112,178, + 74,145,240, 12,195,232, 99, 50,130,113,205,183,234,146,131,210, 80,233, 34,255,151, 32, 10,201,105, 85,112, 97, 3,189,209, 40, + 93,242, 95,158, 28,163, 11,195, 87,167, 51, 94,153,159,242,226,168,230,214,104,204, 5,130, 38,235,226,159,201,146,159, 8, 73, +135,226,163, 24,248,102,125,192,116, 52,162, 46,167, 44, 76,153, 42,241,186, 78, 96,199,241, 8, 14,143,146, 2,227,124, 14, 47, +156,192,205, 99, 56,152,229, 89,125, 2, 12,189,173, 75,254,161,115,188, 61,236,163,205, 50,119, 70,178,102,252,208,114, 50, 69, +178,162,214, 10, 38, 19, 68,111,179, 70, 70,204, 1, 29,136,150,232, 83,130, 27,133, 32, 72, 75,240, 17, 79,139,119, 61,190, 89, +225, 55, 13,143,174,122,230, 99,141, 11,142,149,247,105,164, 80,214,184, 24,233, 99,196, 70,199,207,187, 45,247,109,196,134, 72, + 48,154, 82, 87, 84, 85,137,143, 10, 39,116,214,132,143,108,162, 72,213,121,161,105,123,143,147, 2,219, 71, 2, 30, 25, 2, 50, + 6,150,192, 44, 8,108,179, 37, 10,137,246, 29,173,237,120,232,122,198,170,224,170,107,208, 8, 78,138,146,109,211,112, 56, 30, + 99,172,199,117,150,222,246,108,150, 13,205,106,139, 80, 18, 25, 60, 90,165,253,166,173, 69, 70, 40,164, 64,216,158,170, 44,153, +140, 38,200, 16, 41,116,137, 86, 9, 7, 84, 10,197,152,200,188,168,168, 75,195,237,113,197,237,155, 71,232,131, 25,231, 49,161, +182, 99, 84,136, 66, 94, 87,161,226, 57, 85,186,248,196, 66,195,179,184, 92,113,177,217,178,186,108,217,110,123,204,124, 76,107, +251,196,185, 23,176,117,142, 73, 61, 38,184, 4,110,156,152, 9,133,146,188, 60, 46,184, 83, 24,122, 23,121,233,240,128,224, 60, + 23,222, 99,148,192,123,143, 11, 61,235,229, 58,123, 68, 8,170,170,100, 92, 76,185,123,247, 5, 78,143,198,180,157,231,195, 15, + 47,120,255,253,123,188,255,224, 30,255,112,249,113, 94, 75,129,175,207, 15,249,198,108,202,171,227, 99, 94,153,158,240,218,164, +230,123,203, 62,117,142,252, 54,123, 64, 20, 41,150,177,199,126, 25,198,146,195,121,166, 63,155,197,184, 8, 33,159, 71, 1,235, + 3, 45, 34, 41,123, 35,248, 32, 70, 26,163, 88,203,130, 51, 93, 49, 47,106, 74, 4,194, 7,148,210,120, 31,168,180, 97,217,183, + 32,193, 41,205,157,162,224,119,142,143, 57,156,204,249, 55, 71, 55,184,115,114,131,215,166, 51, 78,111,221,228,157,135, 15, 96, + 60, 69,116,201, 5, 81,113,252,133,239, 48,174,160, 24,163,238,220,224,180,154,242,141,187, 47,115, 88, 87,220, 28,143, 9, 34, +208,201, 64, 95, 23, 41,131,185, 56,223,129,121, 2,255,178, 42,244,231, 5,245,129,214,165, 36, 20,134,151, 94,187,197, 23, 78, + 94, 68,171,132,188,157,212, 83,100,132, 43,183,101,251,224, 44,169,198, 57,118,252,112, 57,248,118,103,145, 27,225,179,169, 73, + 22,218,240, 54, 85,146, 49,236,132,250,127,173, 96,206, 14,196, 37,247, 42,235,152, 27,104, 49,235, 22,199,248,233, 28,240,100, +142, 20,131, 82, 30,113,231,164, 55, 84,249,170, 72,149,186,235, 51, 80,196,239,124,210, 7,245,180,103,129,188,134,128,222,239, +129,215,170, 34,211,229,246, 90, 96,186,206, 45,248,172,143, 44,115, 23,164,219,164,107,230,187, 4,136,178,118, 7, 26,177,109, + 6,251,181,105, 3, 41,185, 75, 52,158,236, 68, 8,241,244,181, 24, 50,114,138,236,247,154, 77,138, 6,160, 92,182,127, 36, 68, + 70, 70,210, 91,152,142, 36,129,192,204, 72,148, 74,192,163, 40, 4, 42, 70,148,143,140,149,202,183, 39, 82, 74,201, 50, 4, 70, + 8,150,206,225,124,224,164,212, 44, 93,192,134, 44, 19,123, 45,216,148, 49, 28,110, 24,223,200,148,104,239, 3,207, 76,110,209, +203,189,170,125,160,222,201,108,170,164, 10, 78,166, 5,191, 49, 29, 37,203, 16, 9, 82,168, 36,217, 47, 53, 49, 70,206,163,228, +202, 59,254, 85, 61, 97, 90,143, 57, 40, 19, 40, 73,232,164,175,239,164,100, 29, 4,107, 83,226,101,210,208,126,179, 26,241, 82, + 89,243, 70, 57,226,112, 82,112,219, 24,238, 78,102,220,119,158, 70,155, 20,124, 77,145,130,187, 34, 7,246, 57,212,211,164,164, + 86,142, 18,168,180, 30, 37, 64, 92, 81,165,170,222,231, 49,134,206,236,131,211, 35, 56,152,195,237, 91,240,210,203, 48, 31, 39, + 5,179, 81,137, 32,173, 53,209,219,244,183,109,159,174, 65, 93, 19,157, 79,183, 74, 65, 36, 16,100, 32,108,219,107, 58,151, 15, + 61,206, 74,222,221, 56,222,238, 44, 63, 95,116,160, 60,115, 9, 94, 68,214,221,134, 95,118, 45,127,189,233,112, 62,226,180,162, + 48, 5, 85,161, 83, 34,107, 84,178,142,168, 52,222, 90,130, 8, 20,186, 96,221,121,138, 66,225,251, 64,235, 2,227, 90, 33, 67, +228,188,235, 41,219, 22,215,111, 89,119, 29,135, 66, 18,251, 13,155,108,151,252,151,151, 11,180, 52, 88,223,177,218,180,148,165, +161, 82,154,198, 59,206,182, 91,214,235, 37,163,224, 88, 54, 43, 46, 23, 75,198, 69, 1,206, 82, 6,144, 74,161, 70,163,100, 56, + 37, 64, 27,131, 12, 1, 51, 30, 35, 11, 67,236, 44, 82, 72,124,215, 19,162, 67, 16,168, 99,228, 70, 85, 51,175, 43,230, 82,242, +165, 27,135,204, 71, 37,167, 39, 51, 62,242, 50,221, 39, 15, 20, 50, 25,233,236, 7,114, 83, 93, 43,159,137, 33, 41, 55, 89, 46, +251, 73,108,144,207, 50,196,182,199,159,111, 32,251, 35, 56, 27,136, 82, 19,157, 99,166, 21,117, 81, 35,108,195,235,199, 7,220, +172, 13,194,104,238,206, 70, 68, 41, 16,163, 49, 87,162,166, 52, 83, 80,138,182,185,226,170, 89,114,177,217, 18,133,199,132,228, +150,119,114,227,132,211,195,154, 66, 71,222,189,247, 49,255,221,223,253, 61,247,126,244, 54, 60,122,148,206,177,202,240,159,221, +188,201,216,140, 57, 24, 79,169, 71,147,164,237, 63, 86,188,127,209,164,115,121, 48,123, 26, 58,183, 66,166, 49,156,214,187,121, +249,224,255,190,223,225,251, 85,182,199, 60, 97,174, 19,225,172,135,191,223,182,172,140,230,255,232, 61, 27, 17,248,113,151,220, +222, 14,138, 2, 45, 37,198, 40, 20,146,222,247, 52,206, 18,131,165, 17,145, 62,104,222, 56, 56,228,203, 7, 71,188, 57, 59,225, +100, 50,225, 11,211, 25,186,158,224,123,199,139,119, 95,194, 23,176,157,207,241,219, 30,197,173,175,127,167,120,253, 53,126,251, +173,183,184,125,116,135, 47,156,188, 64,223, 59, 94, 56,189, 65, 64, 81, 98,120,245,228,148,113,169,120, 24,186, 68, 73,217, 54, +255,241,228, 96,127, 29, 16,221,116,156, 14,154,224, 30,159,167, 40, 9,163, 89, 82,207, 67,177, 80,130,163, 81,205,141,195, 91, + 40,101,232,251,150, 85,211,176,108, 59,150, 87,219,212,150, 85, 50, 85,121, 74,102, 26,160, 73, 65,170,168,118,104, 93,153,179, +187,144,171, 48,235, 19, 55, 58,248,207,247,250,149,206, 7,162,201,128, 46,191, 11,164, 82,114,109, 24, 48,160, 56, 62,109, 7, +101, 8,132,215, 78, 65, 50, 7, 16,151,186, 1, 34, 39, 38, 67, 75, 91,102,231, 62, 33,115, 64,205, 63,123, 86, 2,161,116,174, +162,195,238,112, 24,218,243, 67,139,182,172, 82, 21,237, 99,146, 53,141, 3,207,222,237, 56,243, 3, 72,103,176,253, 29,222,219, +190,225,201,190,205,235,245, 33, 19,158, 47, 97, 44,179,175,177,200,221,148,114,143, 22, 41,228,206,233, 45, 66,105, 20, 69, 5, + 93, 23, 81, 82, 33,133,160,146,208, 33,216,246, 9,253,174, 68,162, 25, 85, 34,153,236,180, 49, 80, 10,201,202, 5,106,145,230, +139, 23,214, 17,163,160,243,123,140,132,152,105,145,131, 85,163,202, 38, 61, 46,236,128,144,131,221,192,181,244,236, 94,151,201, +101, 33,160,152, 16,231, 91, 83,241,133, 81, 65, 97, 12, 18,129, 86, 26, 45, 21, 13,129, 82,105, 30,118, 29, 7, 90,243,202,100, +130, 64, 49, 46, 42,150, 33, 82, 86, 37,202, 20, 56,153,146,138,119, 35, 68, 93, 66, 89,242,133,162,226,165, 81,197,100, 50, 98, +102, 10,122, 37, 17, 40, 42, 93,242,158,203,199,152, 41,178,225,209, 24, 85, 77, 41,170, 9,245,193, 45, 94, 46,199, 92, 84, 99, + 40,199, 9, 40, 37,242,186, 48,227, 36,105,171, 10,168,102,233,251,131, 23,224,240, 5, 24, 31, 65, 49,129,249,141, 68,241, 57, +190, 1,163, 26, 49,171,225,248, 48, 89,179,222, 60,129,131, 3,152, 77, 18,204,231,197, 91,137, 20,114,122, 66,220,110,137,243, + 83,130, 13,196, 62, 5,247,224, 37, 65,234,252,189,103,217, 71,182,177,195,227,104,125,224,123,203,134,181,237,241, 2,188, 20, + 72,105, 48, 90, 51, 46, 74,180,144,140, 43,133, 8,129,210,104,202, 66,177,218,108, 40,100, 74,152,124, 38,216, 92,173, 59, 2, +142,166,105,241, 93,195, 68, 8,164,181,172,187, 13, 74,105,238, 89,203,125,107,217, 70,197,205,131,116, 48,247,117,205,187,235, +158, 63, 59, 95,208, 24,193,195,102,203,155,243, 49, 87,237, 6,169, 37, 63, 95,109,184, 88, 47,144,222,163,187, 6, 89, 24,108, +187, 69, 42,133, 44, 74,162,115,148,213, 24,161, 13,161,233,145, 38, 17,219,250,174,161,247, 61, 93,223, 80, 41,131, 65, 50,142, +130,163,106, 68, 41, 37,243,170,102,164, 21,175, 31, 79,169,199, 5,151, 85,141,215, 21,200, 42, 85,239, 93,198, 56,248, 44,165, +170,117,186, 71, 36,208,173,144,123,238,156, 3,216,246, 9, 74, 28,219, 22,150, 75,196,163, 21, 8,193,111,191,242, 26,175, 31, +159, 82, 11,152,106,193,173,217,140,211, 73,205,205,233,136, 94, 73, 84,169,233,181, 66,141,107, 86, 62,237,233,174,239, 88, 55, +107, 54,109, 75,244,158,217,104,194,168, 26,113,124,116,202,104,100,184, 92, 55,108, 87, 27,254,230, 7, 63, 66, 60,120, 23, 54, +107, 68,212,112, 60,231, 95, 31,157,114,115, 58,197, 34,105, 16, 84,245,136,251,206,243,174,137, 9,201,239,251,199, 99,129,179, + 59,134,207,126,251,125,120,255, 70,239, 24, 71,159, 96, 57, 46,246,207, 64,161,192, 40, 30,181, 14,154,158, 51, 7, 75, 23,104, +117, 96,170, 75,166, 82, 98,144,201,249, 45,128,247, 73, 74,183, 21,130,186, 48,188, 94, 79,208, 74, 81,141,199, 76,234,138,178, + 48, 76,198, 21, 91, 97,240,245, 4,239, 37,119,230, 7,232, 89,141,226,139,255,250, 59, 95,188,251, 34, 47, 31,189,128, 41,106, +166,147,138,211, 27,183,210, 65,160, 74, 78,143,143, 9,189,101, 82, 22,188,113,114, 19, 89, 22,156, 15, 85, 89,215,253,203, 9, +234,197, 46,227, 39,232,164, 99, 61,124,212, 73,171, 29,163,210,108,112,219, 80, 77, 43,110, 31,223, 68, 75,205,178,109, 88,181, + 45, 23,155, 13, 27, 23, 19, 79, 93,202,116,240, 22,249, 48,214, 58, 37, 5,131, 83, 79,204,183,212,250,236,207,219,165, 25, 75, +223,124,190,215,111,116, 10,118,131,115,208,224,165,190,111,217, 39, 7,112, 88,120,218,138,243,147, 40, 43, 3,189, 75,136,132, +172, 31,146, 29,231,118,146,167,125,150,160, 29,156,246,244, 30,207,251, 89, 45,254, 65,138,118,160, 77,117,109,202,238, 7,219, + 94,159,223,147,235, 82,181,172,179,231, 59, 89, 31, 89,100,209,155,144,129,153, 90,237,172,128,159, 21,160,165,120, 60,160, 15, +137,195, 53, 46, 32, 60,141, 40, 31,232,127,168, 52,203,142,153,194, 55,140,100, 50,136, 74,201,200,177, 74,122,219,189, 23,140, +181,196, 75,208, 8,188,134, 34, 36, 97,156, 81,136,108, 0, 35, 69, 22, 49, 12,212, 82,112,238, 28,189,143, 40, 37, 65, 4,156, +144,248,193,181,238,122,110,158,120,173, 41,232,229,228, 74,239,129, 31, 7,223,250,161, 13, 47,242, 97, 51,140, 49, 68,154,168, + 81, 26,142,198,134,137, 22, 4,161, 81, 49,160,149,160,140,146, 69,240,124, 28, 34,183,116, 65,109, 20,149, 80, 56,146,252,104, +140, 73,116,197,122,152,143, 70,108,187,158, 11, 83,242, 39,245,136, 27, 85,193,164,210,172,123,201,214, 58,166,245,152,117,231, +169, 10,205, 54,194, 66,170,228,163,173, 52,255,230,224,152,215,170,146,111, 30, 28,240,166, 81,188, 80, 87,124,105, 52,199,171, +130,243, 8, 20, 35, 48,163, 68,133, 53, 89,196, 67,104,168,231,188,121,122,147,163,106,204,241,244,152,249,193, 49,186,154,178, +173,166, 41,176, 76, 15,161, 62, 64, 40, 5, 55,110,165, 81,195,104, 12,167,119,136,211, 10, 78,239,192,241, 65, 18,105,185,243, + 42,193, 89,226,184, 78,129, 60, 42, 66,232,137, 69, 73,208,154, 16, 36,182,119, 60, 90,116,188,211, 90,126,126,177, 98, 11, 4, +231, 9, 74, 16,140, 33,104,195, 72, 43, 42,169, 56, 25,149, 28, 9,137, 38, 48, 17, 18,235, 60,181, 86,184,222,179, 70,208, 90, +203,213,118,131, 13,145,179,117,131,116, 45,139,190,229,253,205, 21,219,118,205,165, 11, 60,176,150,183,215, 27,154,168,249,210, +141, 99,238, 93,109,153,215, 21,203, 69,139,168, 38,220,170, 43, 30,246, 17, 99,106,230, 37, 28, 77, 39, 60,104,123,126,210, 57, + 54,120, 86,214,178, 45, 12, 86, 21, 68,173, 89,109, 27,150, 2, 58,103,209, 74, 35, 59,143,154,142, 8,157,163,109, 55, 4, 17, + 89,119, 43,130, 76,107, 78,132,128, 82,138,224, 29,138, 72,161, 12, 81, 73, 70, 82,115, 50, 26,241, 27,243, 9,119,199, 21,191, +125, 50,230, 7, 61, 41,217,234, 35, 4, 71,172, 70,185,179,146, 71, 88,213, 52, 37,250,133,222, 25, 67, 61,167, 45,143, 77,221, + 2,198, 51,254,248,183,190, 65, 93, 40,230,227, 17,139,245,150, 55,142,142, 41,140,102,153, 3,171, 55,154, 86, 10, 30, 88,205, + 58, 10, 54,125,160,117, 93,202,113,125,143, 23,142,113, 89,115, 58,191,193,203,175,190,200,201, 97, 77, 45, 37,239,190,251, 1, +223,255,127,255, 38, 89, 94, 15, 32, 95, 23, 24, 29,140,121,161, 24, 19,202, 17, 93,132,183,155, 13, 63,107, 60,231,146,164,175, +210,248,199, 99,129,220, 59,251,134,226, 97,168,202, 93, 62,131,162,218,157, 97,241, 87,119,171,133, 78,166, 66,148,114,135,153, + 81, 58,119,153, 34, 91, 45, 57,235,183, 28,102, 7, 58, 31, 44,141,107,233,189,103, 19,123, 30,181,158,111, 30, 30,225,163,224, +104, 50,167, 11, 1, 93, 26, 58,161, 18,188,100, 92,211,134,136, 42, 39, 24, 89,114, 88, 77, 81,188,249,251,223,249,189,215,191, +204,209,209, 9,179,217,132,233,108, 66,111, 29,227,113,205,100, 58,162,107,122, 14,142,142, 24, 79, 38,152, 40,185, 49,157, 50, + 25, 21,124,100, 52,209,171,164,237,203,191,128, 22,124, 33, 19, 66, 93, 10,184, 90, 39,137,215,161,202,157,206,211,194,204, 51, + 63,124,228,226,189,251, 92,200,200,197,122,137, 66,114,182, 89,208, 57,199,230,193,249,206,241,202,103, 91,197, 34, 43,110, 21, +106, 39,116, 51,208,192, 66, 62,120, 67,191, 19, 98,249, 92, 84,189, 12,112, 25, 68, 13,134, 92,112,255,241,100,230,134,235, 79, + 65, 67,213,185,253, 60,120,113, 15, 45, 92, 37,211,124, 91,102, 14,186,205, 74,103,215,214,187,195, 28, 93,236,253, 94,120, 54, + 48,110, 8,172,131,150,252, 16,144, 7,249, 88,149,147, 15,153, 65, 42,195, 11, 27,213,233,223,213, 36,139,227,100, 85, 55,181, +247,250,158,156,113, 13,216,128,253,160, 62, 84,218, 62,211,173, 76,158,227, 15,191, 51,184,221,105,177,167, 83,111,216,167, 68, +140, 84, 74,114, 52,130, 88,106, 54,109,224,184, 20,180, 34, 82, 72,197,170,207,147, 22, 37, 48, 49, 82, 75,133,138,176,138,201, + 86, 17, 34,193,129, 22, 73,203,122, 25, 61, 5,130,101,235,119,246,198, 98,111,138, 41,213, 94, 96, 79, 38, 51,215, 72,222,107, +250, 98,254,155,225,186,135,176,115, 99,243, 30,164,230, 3, 47,249,210,216, 48, 50, 5,165, 84,120, 17, 81, 18,190,223, 88,254, +177,177,212, 33,112,168, 53, 70, 21, 8, 20, 74, 9, 36, 18,165, 20,198,104,222, 89,182,220, 11,112, 74,224,229,170,224,120, 92, +225, 81, 20,218,112,102, 29, 42, 66, 85, 22,172, 28,104, 93,242,190, 77, 35,159, 47,215, 99, 94, 80,154, 23,103, 51,164,210, 24, + 35,153,214, 53, 72,197,121,103,121, 80,142,211,107, 53, 38, 85,226,101, 1, 66,113, 52,155,242, 71,163,154,175, 29,141,249,210, +141, 41,119, 70, 37, 47, 21, 48, 42, 43,222, 9,192,120,150, 70, 46,186,128,178, 66, 84, 19,168,103, 48, 57, 1, 41,121,235,198, + 75,172, 17,152,241, 33, 95,120,225, 37, 30, 58, 7, 71, 71,196, 66, 18, 15,230, 68,165,136, 62, 18, 75,157,116,185,133, 36, 10, + 79,104, 91,226,122, 73,116,145, 96,123, 66,136, 4,109, 8, 74,224, 68,100,164, 53,115, 41,185,173, 21, 19, 83,114,144,249,241, + 83,169, 8,222,226,130, 37, 90, 79,211,247, 68, 68,234,230,245, 45, 15, 58,199,229,118,197, 89,211,208, 70,193,134,142,191,189, + 90, 98,189,167, 87,146,208, 91, 94,158, 79, 88, 49,101,227, 29, 71,117, 65,148,138,141,247, 84,101,193,119,207, 22,252,163,215, +188,189, 13,244, 40,222,241,130, 86,106,182,227,130,179,224,184, 52, 5,110, 90,113,229, 97, 89, 22,116, 93, 11,227,146,208,246, +116,161,167,151,146, 15, 86,231,132,232,104,162,163, 68, 16,242,248, 69,106,131, 15, 1, 23, 61, 49, 4, 70,198,240,178, 54,188, + 88,140,120,101, 58, 99, 41, 5,183,106,195,219, 54,173,179,104,202,108,190,228,136, 62, 32,234, 41,136, 36, 45,139,172,242, 30, +206, 22,198,207,233,224,138, 32,249,218,183,191,206,235,183, 95, 65, 2,117, 53,226,195,135,247, 64,150, 72, 33, 57, 29,215, 44, +156, 99,237, 60, 31,108, 61,223,181,145,247,122,203, 86, 68,150,214,129, 48,232,140,111,154,234,146, 27,199,167,220,120,225,152, +182,179,172,215, 29,255,203, 95,253,123, 46,222,126,251,241,100,194,247,188, 43, 12, 7, 19, 69, 39, 74, 46,189,231,111, 87, 29, +255, 24,243,121, 98,178, 80,215,229,122,167,136, 58, 36,243,214,238,102,233,195,207,135,194, 33, 10, 30, 67,174,126,146, 95, 67, + 85,236,180, 2,148, 74, 8,118,145, 71,136,203, 53,157,150,172,156,165, 16,150,232, 45, 11,219,240,209,182,101,105, 29, 47,141, + 12,135,101, 69, 89,142,152,215, 37,173, 20, 68,161,233, 99,224, 96, 84, 16, 98,164,151,130,135,157, 35, 20, 53, 50, 42,212, 27, +191,251,167,223,121,237,133, 23,185, 88, 52,156, 28, 30, 98,125, 96, 54,175, 48,133, 70,169,196,179, 11, 62, 50,158, 84, 24, 85, + 18,188,160,144,134,155,227,154,135,210,167,142,107,111, 63,149, 58,218,103,245, 6,254, 92,195,102,253,156, 57, 71,204, 60,242, +190,217,153,207,107,157,170,161,186, 78,224, 54,193,206,255,122,189,102,117,209,210,207, 71, 60, 88, 44,176,209,243,232,193,121, +146,118,149, 49, 29,178, 82,236,132, 96,194,192, 63,222, 67,147,135,144,126, 63,180, 73, 3,217,121,144,159, 19, 3,144, 91,186, +215,126,221,136, 12,198, 11, 79, 35, 50, 63, 77,142, 37,247,105,103,123,224, 16,173,210,130,179, 62,221,211,129,234, 49, 8,149, + 96, 51,152, 45,111,224,231, 25,167, 12,254,229, 58,207,220,219, 46,253,219,229,205, 20,179,233,204, 53,154, 95,239,161,231, 67, + 58,188,135, 77, 51, 24, 7,145,239,161, 28,228,136,229,227,111,118,216,116, 79,221,251,184,179, 18,134,116,191, 10,181, 11,252, + 65,103, 25, 46,177, 19,229,201,215,199, 86,134, 50, 70, 28,130, 82, 70, 14, 20,120,165,153, 32,121,100, 5, 66, 36,211, 23, 31, + 4,165, 2, 31, 99,202, 93,128, 62, 70, 52,130,101, 72, 45,114,161, 5,155, 16, 88,109,193, 23,114,135, 91, 24,238,229,254,235, +189,238, 20, 12, 82,192,236, 76, 39,246,157,157,134,185,158,247, 57,137,137,169,163, 82,149, 8, 19,121, 96,123,124,176,124,216, + 58,174,154,134,239,247, 14,108, 71, 47, 52, 47, 21, 10,225, 61, 83, 93, 82, 41, 5, 8, 98, 8,116,206,241,160,143,252,204, 89, + 94, 50,134, 49, 18, 29,160, 67, 98, 16, 28,205, 42,130, 23,233,182, 73,193,251,155, 45,103, 25, 7,240, 71,243, 49,163,178, 98, + 99, 29,133,210, 20, 85, 69,219, 71,124,244,152,122,132,136,145,139,152,109,144, 99,128,170, 6,173,248,173, 73,197, 43,227,130, +162, 50, 92, 89,201,172,214,180, 81, 48, 53,146,195,162,224,189, 62,166,185,188,150, 96,234, 44, 89, 91,242,237,201,132, 63,190, +117,130,139,146,111, 30, 30,112,211, 20, 40,109,184,115,112,202, 47,157, 39,206, 78,211, 65, 90,150,112, 56,205, 9, 88,145, 80, +224, 85, 10,114,209, 67,108,151,217, 57, 14,226,166, 35, 78,107,208, 26,129,224,229, 82,112, 36, 36,135, 33, 82,196,192, 17,130, +121,132,146,136,244,150, 14,203,184,144,244, 77, 79,239, 59,162,132,202,109,209, 74,225,109,199, 13,233, 41,188,199,246,150,211, + 74, 80,198,142,159,246,146,219, 35,205,182,179,140,234, 57,103,125, 79,223,119,188, 48,159,243,209,118,203,172, 26,113,217,181, +204,171,138,217,116, 78, 81, 22, 56, 96, 77,193,249,232, 0,135,228, 92, 22, 52,101,201,251, 27, 75, 51,169,185,208,138,243,174, +229, 35,165,248,165,119,124, 40, 2, 15,164, 38,120, 79,167, 52,147,232,177, 82,208, 59,135, 21,130,222, 59,130, 86,156, 72,131, +145,134, 90,105,130,212,156,154,130, 94,107, 46, 10,195,133, 0,186, 44, 79, 43, 69,234,156,217,237, 53, 13, 86,168,228,194,118, +141,173,121, 18, 85,175,117,114,166, 83,240,240,157,247,121,237,141, 87, 9, 4, 54,171, 75,254,183, 31,255,128,159, 63, 58,231, +141,249, 33,247, 55, 91,108,148,252, 98,225,248, 65,227,248, 97,103, 89, 72,201,153,179,156, 11, 40,202,146,136, 66, 72, 73,173, + 75,142,166, 7, 28, 29, 79,136, 17,238,191,255,136, 63,255,179,127,151,198,194,123,144, 26, 97, 29,244, 29, 63,235, 28,127,223, +181,252, 48, 68, 46, 84,145, 94, 63, 49,159,105, 89,149,115,219,165,138,122,168,204,149,126, 92,245,242,218, 44, 76,164,243, 63, +202, 79,198, 44, 93,203, 78,231, 98, 76,155,212,221, 22, 58, 43,210,229,162,230,252,156,245,170,229, 61, 31,233,218,134,101, 12, +244,222,113,175,107,208, 1, 94,170, 39, 28, 84, 37,231, 65,114,179, 42, 89, 57,203, 65, 85, 98,165,100,209,121, 62, 92, 59,182, + 65,210,224,153,212, 21,106,250,149, 63,252,206,171,183,110, 51,155, 28,226, 36, 8, 41,168, 42, 67,232, 2,101,165, 81,198, 96, + 10,133,144, 2, 23, 2, 2, 73,215, 37,203,152,182,107,184,218,118,233,208, 9,225, 41, 27,185, 79, 67,147,248,164, 4,224,179, +205,156,229, 14,120,244, 36,136, 97, 64, 35,218, 39, 36,101,101, 14,228,202,236, 42,208,135,139,204, 53, 92,209, 93, 92,208,109, + 58,182,151,203,212, 62,143,195,156, 37,183, 99,188,203,146,168, 67,192, 30, 60,171, 99,202,110, 93,159, 52,226, 67,158,195,200, +207,158,167, 60,230,150,117,125, 85, 28, 59,227,150,207,249,152,207, 74, 30,226, 19,226, 45,251,247,115, 95,165,239,121,152,138, +161,130, 46,139, 93,149,236,135,106,221,239,181,245,115, 5,122, 61, 23,207,242,196,131, 48, 11, 34, 3,194,114,160,234,114,107, + 94,237,241,232,131,125,188, 98,223, 15,110, 49, 38, 33, 32,111,119, 96, 61,185, 39,203,170,196,222,224,107,112,148,203, 27, 47, +219,205, 74,157, 64, 79,117, 37,169,181,160,183,112, 80, 37, 9,220, 46,130,172, 20,109,198, 66,110, 92,164,148, 17,147,177,131, +125, 4, 65,164, 19,130, 16, 60, 65, 10,156,247,148, 82,177,201,220,247,232,194,174,175, 30,247,241,198, 97,247,189,205, 64, 76, +177, 87,165, 15,244,203, 33,240,239,191,255,144,213,234, 26,203, 89,227,121,212, 56,222, 91,182,124,180,105,249,160,181,201,109, +209, 91, 58,235,232,188,231,141,217,140,177, 80,105,154,130,196, 72,205,195,118,203,119, 55, 75, 26,111, 89,219,158,223,156, 79, + 24,149,138,211,113,141,174, 18,144,208,247, 62,187,106, 6,254,194, 38,241,159,223,171, 13,167,166,192,199,192,188, 52, 44,179, +229,175, 85, 10,147,131,203, 61,235, 89,198, 12, 92, 52, 6,188,231,246,184,230, 37,163, 24,155, 18,139,160, 50,146,141,247,232, + 50, 1, 42, 23,109,199, 90, 73,182, 62,166,100, 64, 3, 66,241,214,124,194,215, 15,198,120,161,121,121, 90,112, 22, 13, 55, 75, + 77,101, 12, 31,184,136,158, 76, 88,186,152,198, 98,179,227, 84,213, 31, 28,103, 21, 72, 65,236, 33, 78,103,208,183,196,110,147, +153, 60, 45, 49,122,196,170, 5, 35,120,177, 48,124, 81, 4, 14,149,198,216, 45, 19, 4,211,232, 41, 98,224, 32, 68, 76,112,156, +120,199,204, 57,110, 8,203, 76, 9,198, 49,224, 67,154,153, 76,243, 89,227,148,230,134, 22,156,245, 61,151,155,142,190,235,248, + 97,223,243,155,199, 39, 84,117, 65,107, 97, 86,215, 92, 54,150, 82, 74,130,150, 28, 85, 99, 30,110,183, 92, 5,135, 21,146,195, +241,132, 88,150, 76,141,226,223,175, 59,190,120, 56,225,127, 63, 91,242,230,233,156,247,130, 98,189,109,185,168, 70,156, 69,201, +185, 46,120, 20, 20,151,133,100, 93,141,208,125,203,131,162, 36,218,158, 54, 68,214,118,139,149,146, 18,152, 20, 21,181,128, 32, + 4,165, 76,202,142,149,208,132, 66,243, 75, 41,105, 11, 13, 66, 19,251,204, 32,177, 54, 87,235,201,131, 66, 20,131, 24,138,127, + 26,187, 50, 25,167, 17, 73, 89, 33,108,228, 31,222,121,135,127,216,158,243,163,159,191,131,248,249,251,216,251,247,249,222,197, + 21,127,119,254, 17,151, 54,240,151,219,134,135, 49,119,212,188,205,243,104,201,178,235,185,138, 32,116,137,142,130,153,174,232, +172,103,185, 92,241,224,236, 17, 63,251,233,219,169,197,255,100, 12,242,185,189, 46, 69, 18,135,201, 73,191,112,109,146,153,136, + 49,237,151, 24,147, 90,219,117, 16,183,233, 12, 27,176, 66,195,156,221,217, 92,120,248,103, 83,119, 31,195, 19, 13,184,156, 44, +171, 45, 50,219,198,147,228,144, 99, 62,159,180, 73, 95,183, 13, 87,214,115,222,245,156,181, 13, 29,145,143,154, 14,240,220, 54, + 37, 19,173,169,202, 18, 81, 20,136, 0,203, 16,105, 4,124,188,245, 44, 66,143, 20,146,206,123,212, 75,223,250, 79,190,115, 52, +153,208, 52, 61, 74, 74,230,227, 17,158,200,168, 42,240, 46, 34,181, 32, 34,112,155,158,174,181, 68, 21,113, 25,104, 38,133,162, +215,138,205, 53, 15,181, 74, 72, 81,165,161, 40, 16,166, 72,154,195, 85,226,133, 11, 41, 16, 82, 34, 66,248,212, 85,186,248, 44, +213,236,147, 82, 9,207,188,224,250,233,120, 22, 67, 70, 65,106,184,218, 36,173,243, 1,124, 84,150,169,106,172, 50, 16,174,205, + 64,183,206,165, 27,147, 37,187, 49,185,194,235,250, 84,149, 58,155, 4, 69,162,206,179,195, 92, 29,154, 44, 41,251, 28,158,232, + 83,173,113,246,102,221,196, 92,221,102, 31,224,207,203, 36,148,251, 10, 38,207, 32, 90,254, 58,211,148,225,154,151, 38,155,115, +200, 93,165, 94, 21, 41,211,143,121,129,203,172, 75,175,247, 56,162, 74,166,217,221,112, 47,101,222, 72, 46,238,180,211, 33,121, + 14,136,231,184, 2, 94,163,240,243,107, 41,138, 44,212,147,193,133,200, 93, 66, 1,169,107, 80, 12, 20, 49,149,174,171,146, 72, + 37,121,169, 86,244, 2,162, 84,220, 80,130, 72,164, 12, 18,167, 53,151, 93,138, 3, 70, 8, 60,145,222,197, 36, 83,160, 4, 91, + 23,104,165, 64,100, 52,123, 31, 2,107, 34,150, 72, 23, 50,200,125, 0, 80, 14,116, 64,246,131,116, 76,239, 25,247,184, 57,207, +117,101, 31,119,137,222,179, 80,184,146,116,240,108, 92, 18,134,233, 50, 42,121,209,166,206,154, 8, 44,188, 99, 42, 3,239, 44, +214,172, 99, 75, 27, 28, 15,182, 43,254,231,243, 75, 26, 2,116, 91,188, 86,124,169, 44,209, 74, 48, 19,169,122, 17,125,210,218, + 47, 74,193,127,115,113, 9, 49,112,199, 68,156,212,220, 45, 53,165,142, 44,188, 96, 36, 35, 74, 72,148,214, 4,231, 48, 85, 65, +225, 61,239,185,184,147,202,173, 12,127, 50, 41, 57, 40, 19, 55, 57, 40, 65,244,129, 32, 21,203,198, 81,149,154,131, 74,243,161, + 13, 44,132, 72,107, 1,205,237, 66,243,173,121,197,214, 71,180,150, 60,116,112,107,172, 89, 59, 24,213,134,210, 40,222,147, 37, +219, 16, 19,208,238,255, 99,238,189, 99, 61, 95,243,251,174,215, 83,190,237,215, 78,155, 51,103,214, 69, 66,164, 0, 0, 32, 0, + 73, 68, 65, 84,230, 78,185,125,247,102, 91,108, 92, 18, 82, 12,137, 73,140, 67, 81,148, 40,144,200, 18, 36,161, 8,146, 16, 16, + 2, 36, 4, 1,139, 16,100,197, 40, 10, 37, 18,130, 72, 38,160, 68, 72, 17, 9,144, 4, 41, 9,113,130,133,141,157,141,189,235, +189,190,187,183,151,185,211, 79,251,245,111,121, 26,127, 60,207,247,252,126, 51, 59,115,119,238,238,218,230, 39, 29,253,102, 78, +253,150,231,251,124,218,187,184, 16,109,165,203, 42, 94,199,193,110, 52,152, 17, 33, 34,236,173, 39, 24,147, 88, 28, 81,247, 64, +212,142,217,168,228, 5,233,153, 52, 53, 19,173, 25, 56, 71, 30, 28,165,119, 20,193,115,205,123,246,124,224,102,112,236, 8,197, +208, 7,156,119, 12,115, 69,200, 20,165,132, 34,203, 25, 2, 94,107, 42,165, 9,153,164,173, 27,156,177,188, 62, 63,227,115,131, +146,169, 5,153, 23, 12,203,140,133,135,157,224,153, 5,143,237, 28,183,219,154,145,173, 97, 52, 97, 55, 87,124,109,209,240,219, + 14, 38,252,141,227, 5,255,244,141,125,126,177, 9,236, 6,135, 27,143,120,104, 28,203, 97,197, 42,215, 44,101,206, 45, 23,199, +132,167,229, 24,233, 13,247,178, 10,231, 59, 78,100,212,104,111,133, 98,207,123, 50,149, 69, 81, 20, 17,253, 10,102, 66, 82, 75, +133,206,179, 24, 60,170, 42, 74, 28,251, 16,247, 52,145, 0,102, 93, 11,170,138,160,179,124,152, 48, 29,253,152,171, 76,108,136, +152, 8, 10,225,160, 94, 19,110, 63, 72, 82,217, 49, 14, 48, 59,135,243, 21,167,119,239, 67,102,226, 24,204, 16, 11, 45, 37, 97, +181,138,123,133,206,168,145, 28, 27, 19, 45,107,235, 6,230,167,184,249, 49,191,117, 8,203,231, 46, 49, 27, 14,241, 87, 14, 17, +105,116, 40, 18,151, 94, 44,154, 4,184, 53,113, 92, 42, 99,114, 44,188, 71,200,164, 44,105, 72,248, 30, 30, 45, 14,122, 32,113, +143,229,233, 37,178,249,132,121,122, 15, 92,237,237,177,101,210,107,200, 84,234,108,203,248,245,190, 99,216,166,228,194,116,136, +186, 23,113,138,251,230, 29, 31,120,117,144, 49,145,154,135,139, 5,123, 85,116,199,155, 33,184, 51,183, 60,112, 29,109, 16,100, +206, 69,187,143,211,231, 62,255,227,151,202,138,195,131, 67, 6,229, 8,135,199, 7,137,150, 1, 93, 42, 2,208,206, 91,172,247, +120,225,113,235, 14,141,226,206,201, 9,185,206, 41, 21,156, 88,139,171,202,120,162,163, 17, 20, 5, 66,231,209,202, 85,102,136, +106,132,144, 57,232, 18,145, 43,196,213, 27,136,253,125,100, 94, 33, 28, 48, 25, 35,140,185, 8,246, 79, 21, 58,120,156,227,220, +183,128,159,166, 96,246,164,205, 78,203,167,183, 6,234, 58, 62,208,125,160, 80, 58, 82,112,132,220,136,238,228,121, 20,159, 41, +210,220, 60, 43,162,127,186, 46, 54,180, 30,151,204, 66,170, 49, 76,118,226, 53, 25,237, 69, 32,145, 73,173,170, 62,170, 60, 62, + 99,207,116, 18,213, 16,155,143,109,192,198,246,174,253,237,210, 9, 47,226,121,143,152,223,250,189,246,187,128,143,232,187, 38, +219, 51,170,162, 55,129, 9, 27, 4,125,159,193, 56, 31,175, 77, 31,216,117, 58,255,158,178, 21, 18, 77,207,233,212, 22, 79, 51, +177,240, 12,162, 71, 89, 30, 17,245, 89,226,122,155,176, 65,146, 95, 20,197, 50, 38, 22, 58,221, 59, 29, 91,102, 1,193,168,144, + 92,150,154, 67, 4,121,174,153,120,201, 82, 75, 86,193,209, 5,104,130,136,185,137,128,206, 75,108, 8,172,141,199,164,189,175, +245, 1,129, 96, 37, 2, 93, 23,112, 34,224, 2,184,222, 25,206, 37, 26, 98, 15,150,115,102,115, 28,201,170,242, 66, 57, 80,111, +105, 62,245,244, 54, 17, 30,101, 46,108, 39, 54, 38, 13,226,235, 38,182,150, 23,203,248,251,151, 77,244, 69,151,112,107,182,230, + 94,103,248, 96, 93,243,230,116,202,187, 93,236, 80,209, 52, 96, 27, 94,203, 51,180, 23,140,139, 12, 39,192,123, 75,103, 58,132, +107,249,169, 91,183,224,107,191,196,247, 95,191,194,155, 45,252, 96,174, 40,108, 71, 71,193, 78, 14, 50, 72, 22,173, 37,195,227, +139, 40, 39,253,150,177,156,118,169,114,146, 57, 88,199,107,195, 18,109, 3,186,210, 40, 31, 88,121, 65, 41, 64,105,137, 8,158, +185,151,236,123,203,187, 93,236,128, 77,114,201,203, 90, 48,206, 51, 4, 30, 39, 21,131, 66,210,248,136,155, 80,206, 83,150, 57, + 39,141,225, 60,203, 8, 65,243,252,225, 46,115, 36,175,142,198, 92, 59, 60,228, 65,107,216,201, 10,218,178,138,215,120,111,130, + 24, 14,162,163,152,105, 17, 34,130, 91,229,210, 96, 51,193, 11,133,102,108, 61,185,183,236,134, 24, 12, 14,188,167, 12,142, 75, +193, 83,233,130, 1, 2, 33, 36,101, 94,177, 14, 22, 33, 20, 70,231, 72, 1, 51,175, 25, 20, 57,173,177,172, 58, 71,174, 37,187, +202,115,189,148, 88, 27,104, 92,203,126, 57,226,111,124,252, 1,191,233,232,128, 51, 35, 25,105,193,199,171, 5, 55,139,156,135, +235, 37,165,202, 88, 26,195, 48, 47,176,133,230,181, 76,241, 15,141,224, 55,168,192, 3, 27, 88,218, 64,145, 43,188,214,232,206, +226, 70, 21,109,107, 57,169, 6,140,188,141, 12, 4,233,185, 63,152,144,117, 29,247,117,134, 51, 29, 58,120, 14,178, 44, 2, 66, +181, 98,233, 61, 43,169, 56,115, 14,165, 52, 7,163, 49,214, 24,206,117, 18,181,170,235,216,241, 25, 14,226, 51, 94,175, 17,197, + 8,225, 26, 24,143, 35, 66, 62, 47,147,186,102, 2,118, 10, 9,181, 65,180,230,201,243, 65,215,197,103,124,186,138,254, 32, 85, + 74,238,215, 75,132, 18, 49,192, 59,135, 72,180,213,147,182,230, 11,162,225, 48, 56, 70,174,227,123,247, 15,120,173, 42, 56,204, +161, 46, 11,236, 78, 73,123,235,254,102, 12, 40, 2, 98, 54,139, 69,149, 14, 49,200, 6,127,145, 28, 11, 64,104,129,104,252,198, +180,170,237, 30, 21,159,113, 46, 97, 64,196,183, 40, 28,251,238, 90,162, 67,170, 84,196, 20,169,253,222,123,167,248, 84, 56,218, + 16,227, 73, 82,181, 20, 89, 14,243,121,188,110,214, 65,215,225,181, 69, 4, 79, 7,188, 61,157,114,110,225, 87,206, 86,124,195, + 71, 83, 93,141,167, 53,142, 44,120, 84,120,229,251,126,252,104, 88, 48,202,115, 26,211, 65, 80,228,121, 70,103, 44,166,115, 44, +151, 53,133,214, 72, 2,243,243, 5,157,111,105,234,142,209,100,200,124, 49,231,116,185,194, 9,137, 32, 80,141, 71,152, 76, 71, +138, 82, 53,224,249, 43, 99,174, 28,237,113,138, 70,148, 57,159,251,236,117, 78,171, 9,191,245,229,171,124,241,250, 62, 55,110, +220,224,133, 23,143,216, 57, 26, 80, 29,237, 51,187,123, 26,105, 18,233, 66, 61, 18,216, 7, 35,184,113,149,193,171,215,241,151, + 47, 17,130,100,255,243, 55,168,171, 10, 22,233, 2, 93,208,144,194,147, 85,128,158,198, 81,223,166, 6,109,223,164, 30, 20,145, +229,241,226,183,201,212, 64,138,184,104, 85, 6,195,138,157,231,174,240,210,245,155, 28, 30, 94,102,255,240, 50,167, 90,198,108, +108, 56,102,116, 48, 65,151, 25,197,168,160,235,173, 60, 85,111,174,146, 90,190,125,197,158,109, 43,221,109,117, 30, 68,223,122, +214, 91, 85,221, 54,114,251,219, 13,236,114, 43,194,219,239, 78, 64,239,121,232, 61,149,172,105, 55,124,250, 71,164, 78,179,152, +173, 42,155,252,217,187,216, 21,233,205,102, 92,194,105, 52, 46, 5,175, 52,127,178, 93, 82,126,115,155,204,249,147,132, 33,100, +228,171,146,244,129, 34, 32, 70, 36, 3, 28,145,114, 26, 21, 3,102,136, 78, 75,253, 61,184, 52,200,216, 19, 32,165,196, 75,129, +242, 2,145,197, 54,186,117,129, 54, 72, 10, 41,233, 66,192, 38, 49, 25,151, 38, 5, 42,128,113, 2,227, 33, 47, 36,211,149, 99, +156, 5, 58, 43,104, 3, 27,231, 54,182,170,117,159, 54,188, 94, 58, 86, 36, 4,188,176, 41,153,217,106,195,251, 20,216,123, 41, +217,167,113,102, 31,255,156, 75, 88, 9,124, 84,137,236,186, 40,247, 58,175, 99,224, 63,153, 70,113,164,147, 41,180, 6, 95,106, + 6,101, 78, 33, 20, 70,120,166,181,225,254, 98,193,195,213,138, 91, 93, 3,187, 7,220,245,128,169, 57,238, 26,180,204,184, 82, + 66,112, 14, 47, 2,123,133,198, 18,216,213,129,251,235,134,159,175,155,205,102,234, 13,131, 34, 99,224, 28, 59, 58, 10,148, 8, + 39, 40,114,197,178,131,221, 42,218, 87, 22,120,190,186,114, 76,187, 88,225,151, 18, 62, 87,198,103, 97,175,202,168, 77, 32,211, +138, 69,109, 25, 8, 88,104,141, 86,130,155,133,102, 55,211, 76,148,224,185,209,128,171, 18, 6,227,146,145,128, 23,181,230,174, +147,180,137,154, 41,202, 17,248, 22,177,183,131,144, 25, 12, 74,196,106,133,176,134,121, 11,147, 81,198, 16,176,198, 32,157,229, + 57,160,178, 29, 99,161,145, 2, 50, 93,144,101, 37,186, 31,237,229, 5,133,138, 73,104,208,146,113,166,105, 17, 60,236, 28,151, +170, 44, 90, 11,120, 27,231,190,206,112,125,178,207,207,127,244, 54,159,219, 29,178,108, 21, 95, 62,189,203,251,243, 41, 39, 54, +240,222,114,202, 81,174, 49, 42,103, 60, 26, 97,144, 8,227,120,223, 9, 94,112, 29,239, 53,150, 60,207,105, 8,228, 85,193,170, +109,249,184,241, 12, 27,131,215,130, 27, 93,203,221,172, 96,108, 45,239,101, 35,110,168,192, 89,174,160,109, 89, 42, 77, 27, 76, + 82,225,243, 44,157,163,201, 10,166,192, 90,130, 80, 25, 50,196,209,128, 2, 78, 36,136, 50,131, 32, 17, 62, 89, 6, 27, 27,139, + 27, 9,162,168, 18,189, 55, 61, 99,174,139,235,218,153, 68, 91, 53, 79,239,190, 58, 23, 43,254,118, 13,183,238, 66,115, 22,139, + 35, 43, 16, 66,129,206,162,193, 15, 22,161, 20, 63, 58,169,216, 41, 42, 94, 27, 12, 9, 69,201, 85,145, 81,238, 93,101,112,237, + 69, 14,242, 9,239,200, 22,206,102, 17,176, 26, 98, 1, 37,188, 68, 12,203, 24, 42,164,142,232,244,144, 70, 65, 26,200, 20,194, + 6, 68,219,196,125,225,162, 99, 40, 55,202,163,125,108,121,218, 51,151, 12,189,200,147, 16, 88,111,112,209,218,184, 55,214,109, +108,185, 23, 9, 25,239,100,194,114, 37, 64,114,109, 17,227, 81, 82, 30,141,157,197, 7,199,115,222,235, 12,191,180, 88,240, 86, +103,248,149,217, 57, 31,187,150,105, 91,227,148, 70, 91, 67,158,231,212,205, 10,133, 63,250,241, 59,193,115,117,103,140,119,158, + 92,122,150,211, 25,214, 7,206, 78,103,228,185,196, 5,207,124,186, 64,229,177, 53,217, 57,195,116, 57,103,109, 91,156,240,248, + 16,168, 84,204, 96,126,203,149, 29, 86, 78, 50, 40, 74,214, 94,242,112,225, 24, 12, 11,254,169, 87,174,240,206,220,243,153,195, + 35,190,231,230, 53,170,114,196,205,171,151,121,225,218, 21,118,138, 9, 26,201,135,173,138,173,156,208,123,125,235,104,209, 87, + 14, 96,239,128,207,188,122,133, 23,246,247, 56, 26,143,249,204,243, 87,152,228, 37,121,165,153,154, 0,139,122, 35,230,209,143, +156,241,207, 30,212,121, 74,181,115,225, 5,222, 70,212,162,105,226, 2, 80, 58, 6,139,221, 61, 62,115,120,133,113, 57,224,234, +254, 97, 18, 16, 8, 76,155,154,124, 56,100, 82,229, 28, 14,247,208, 82,131, 46,105, 93, 20,102,136, 51,248, 52,247,245, 91,157, +129,167,233, 57,245,173, 32,177, 69,221,122, 90,235,245, 89,231,234,189, 36,162,181, 27, 78,253,119,250,202,242, 24, 44,157,219, +104,202,247,221,134,190, 58,247, 9,123,208,251,102,251, 44,206,222,116, 17,245,200, 67,114,109, 19, 41, 9,146,230,209, 57,149, +243,113,206, 37, 68,162,202,125, 11,197, 60,159,152, 8, 33, 9,190,248,176,209,175, 87,125, 64, 76, 74,128, 9, 60,151, 75,201, +149, 44,224,149, 66,132, 64, 41, 21, 34,147,200,214,162, 69,228,188,214, 46,144, 73,193,210,165,241, 19, 73,168, 71, 6, 58, 98, +176,215, 66, 50,235, 28,251,165, 96,218,121,132, 80, 81,255,189, 7,202,185, 45,201,101,159,230,235, 93,136,227, 0,195, 38,160, +123,187, 1,220, 94, 88, 10,247, 35,249,176, 17, 61,250, 52, 52, 70,159,240, 14, 93,172,202,105,214,177, 74,154, 47, 98, 37,214, + 56,234, 97,201,238,112, 68, 45, 84, 84,250,106, 91,222, 94,157,241,141,211,227,184, 57,133, 54,254,188, 84,180, 93,203,171, 90, +113,169, 42,208,222,146,123,139,177, 29,235,166, 37,152,142, 91,203,154, 59,205, 42, 38,102, 54,118, 90, 76,240,236, 11, 23, 59, +118,157,163,212,154, 81, 6,227, 76, 80,119, 1,137,231,108,109,248,242, 42, 49, 71,130,165, 20,129, 87, 39, 57, 89, 8,212, 54, + 80,230,146,186,181, 28,142,114, 30, 58,201,158,136, 90, 2, 15, 87,134,135, 94, 48,169, 10,126,102,217,241,249,157, 10,227, 61, +107,231,185,167,114, 6, 2,166,198,199,128,164, 52, 98,180, 27, 55,226,241, 8,225, 90,184,113, 3,121,124,134,220,155,112,251, +225,130,135, 18,118,139, 28,101, 44, 89,107,184,162, 20,121,240, 20, 58, 39,136,140, 78,120,178,162,164,149,154,165,212,204,242, +140,214, 89,100,145,211, 41,197,188,131,188,208, 52,105,162,210, 9,133,203, 53, 70, 73,206,231, 39, 8, 89,240,225,236,156,111, + 44, 78,104,186,150,198, 59,186,213, 57,214, 59,238,170,140, 35, 33,216,203,115,198,147, 33, 93,145, 83, 56,203,219,171, 53, 7, +163,146,247,215, 29, 7,185, 98, 97, 44,120,193,243,149,226,171,181,227,121,215,113,191, 40,184, 92,175, 57, 41, 42, 94, 20, 53, +191, 18, 10, 46,249,142, 51,159, 71, 91, 88,165, 57,183, 13,194, 89,230, 42, 34,227,167, 8, 92, 86, 97, 69,236, 72,246, 30,111, +153,210,156,133, 4, 94, 93,214, 8,159,244,210, 69, 74, 56,139, 10, 17,210,243, 95,183, 17,152,236, 92,178, 12, 53,207, 54, 86, +117, 17,185,206,233, 41,156, 45,225,228, 46, 66,198,145, 17,193, 35,112,252,216,254, 46, 71, 90,113, 73,105, 66,150, 81, 27, 19, +105,155, 7,151,232,148,164,243,146,243,197, 49,243,227,211,248,247,186, 14,145,233,232,236, 23, 98,146, 32,178, 12,145,101,124, +166, 42,249,129,225,132,239,219, 25,113,121, 84,241, 97,211,193, 98,141,104,235, 88,100, 94, 20, 80,225, 81, 23,204, 79, 74,164, +123, 86,144,202, 19,107,200,167,234,191, 77, 32, 96,210,190,159,168, 74, 33,141,133,219, 68, 33, 54, 53,162, 72, 99, 72, 27,147, + 34,187,110,226,179,185, 88,196,235,106, 26,192,178, 12, 48,117, 14,154, 21,139,229, 20,197,240,198,143,163, 53,171,188,229,189, +211, 19,186,110,205,170, 94,178, 88,206, 25,100, 37,139,229,156,118,213,144,149, 25,117,179,166,110,107, 58,211,210,212,134, 7, +235, 57,157,141,252,220,178,200,184, 57, 26,112,175,243, 72, 33,184, 57,172,184, 84,150, 84,227, 49, 47, 14, 7,220,237, 52,207, +141,246,249,220,165, 93, 46, 29,238, 33,244,128, 60, 31,176,172,225,218,209, 37, 6,229, 46,191,225,218, 30,183,145,100, 71, 67, +218, 51, 3, 42, 82, 88, 68, 57, 97,242,202, 33, 47, 31,236,115, 48,218, 97,111, 48,228,112,119,143,241,104,204,225, 96,192, 45, +187,198, 28, 47, 99,150,247,248, 60,245,105, 23,252,241,215,211,132, 90,250,141,175, 87, 47, 19,105,243,151, 10, 10,205,100,103, +143,107, 59,251,232, 92, 68,109,230, 60, 71,105,205,195,102,201, 40,215, 28, 14,118, 81, 85, 73,145, 21,100,153, 98,106,218,168, +144,214, 75,154, 90,191, 21,212,213, 39, 13,193, 55,224,177,237,238,130,248, 54, 85,253, 60,223, 12,178,250,110, 4,244, 30, 87, +208,219,121,170, 36, 98,225, 92, 2,191, 36,227, 27,111, 35, 55, 93,248,232,179, 45, 4, 84,217,102, 68,162, 19,133,174,179,155, +108,183, 75, 52, 26, 29,185,216, 40, 25,103, 79,223, 74,194,177,111,122, 8,183,145, 93,237, 43,245, 30, 97,174, 19, 61, 80,101, + 23,151,246,160, 82, 49,121,150,154, 66, 4, 26,235,201,115,133,176, 30,163, 99,219,253,196,120,134,153,162,243, 62, 61,144, 34, +101,248,241, 60,140,243,136, 16, 88, 58,129, 34,208,132, 4, 16,236,250,121, 91,182, 25, 37,244,163, 6, 69,194, 16,244,237,119, +185, 65,228, 7,191, 9,236,166, 79,254,122,189,130,111, 35,193,235,193,133,230, 9,206,129,133,132,157, 93,142, 39, 19,238,250, +192, 7, 93,203,237,174, 97,213, 52, 48,155,194,249, 60,178, 58,164,143, 96,164,182,230,195,206, 82,154,150,113, 48,204,218,142, +179, 85,205,213, 76,242,191, 61, 56,227,157,243,135, 73,167, 33,206,235, 9, 14,218, 53, 15, 77, 96,228, 26, 14, 16,100,193,225, + 13, 52,173,103,191,128,197,178,227,221,181,231,225,114,158,128, 70,154,182, 53, 12,218,142,231,138, 28,147,148,251,118,114,201, +131,149,225,249,161,166, 70,114,123, 29, 55,249, 99,149, 49, 53,142,239, 29,228, 76, 91,143, 44,163,166,196,170,181, 84,185,230, + 76,228, 72,173,227,101, 46, 7, 48, 60, 64,116, 43,216,191, 18,167, 95,135, 59,136, 92, 35, 77,203,202,192,187,167, 11, 74,233, + 25,229, 25,151,124, 64,133, 16,193, 75, 66, 18,202, 17, 11,192, 8,201,188,200, 57, 15,129,121,145, 99, 58,143, 85,130,221, 34, +167,238, 2,115,235,201,116, 52,241,176,222,211, 5,133, 10, 2, 45, 44,185,107, 25,218,134, 35, 12,106,181,166, 11, 30,235, 44, +222,180,124,102, 56,162, 44,135,156,173,107, 58, 27,104,138,140, 97, 89, 96, 3,136, 76, 99,165,228, 82,161,201,141,225,235,181, +229, 75,149,226,174, 13, 28,212, 75, 78,138, 1, 59, 77,205,219,162,228, 53,209,114,203,105,174, 20,146,115,151, 49, 51,134, 74, + 6,238, 16, 48, 93,199, 90, 69, 96,180, 19, 30,167,114,156,240,180,222,209, 56, 79, 14,100, 69,193, 92, 9, 66,145,131,174, 16, +203, 6, 81,175, 99, 65,214,196,103, 84,244,242,225,109,253,116,134,204,179, 96,166,154, 85,148,133,158, 30, 35, 76, 7,133,100, +183, 26,113, 40, 5, 55, 39, 21,166,109,240,214, 80,230, 25,109, 8, 24,103,184,187, 94,115,239,252,132,175,188,255, 17,194, 73, + 68,231, 99,101,222, 69,193, 28,177,182,136,221, 1,162,200,249,220, 96,192,111, 59,188,204, 75,163, 33,135,229,136, 93, 41,169, +131,227, 65,211,196,174,172,138, 93,232, 56, 7, 79,178,197,189,246,198, 39,137,123,109, 7,253, 44, 75, 21,120, 29, 11, 23,111, + 19,215,189,215,154,207, 54,117,156, 78,154, 28, 69, 1,164,113,116,103,146,158,135,139, 90, 31,237, 58,106,165, 44, 22,176, 90, +131, 89,227,108,203,108,189, 98,229, 12,138,234,218,143, 51, 95,176,250,232, 1,237,170,227, 36,147,124,124,114, 31, 47, 61,211, +245, 25, 67,157,241,112,113, 70,103, 60,245,122, 77,231, 28, 15,166, 51,130, 2,211,116, 56, 23,233, 6, 90, 74,172,212,104,165, +185,185,179,131,214,146,115, 39,121,249, 96,143,198,105, 46,143,247,249,236,243, 71,140,247,118, 17, 33, 99, 60, 26, 32,100,198, +254,222,144,114,144, 51, 28, 87, 56, 49,228,114, 85, 49, 81, 57, 31, 45,150,201, 28, 69,161, 94,185,202, 43,187, 19, 46,141,247, +120,238,202, 33,121, 86,161,164, 38,211,154, 60, 83, 28, 86, 35,222,237, 44, 44,231,207,102,105,250,164,192,254,137, 65,161,111, +161,244,193, 84,199, 10,202, 43, 76, 89,178, 55,170, 24,230, 21, 32, 25,228, 21,139,122,206,173,143,239, 83,211,113,249,224,136, + 16, 60, 66, 42,230,203, 53,171, 46,192,226, 52,182, 91,218,100, 55,218, 31,179,122, 26,230,191,167, 81, 36,179,145,199, 3,185, +148,191,190,114,189,125, 80,205,212,134, 59, 31,182,132, 81, 66,106,201, 27,226,249,246,109,113,225, 99,149,222,227, 35,212, 99, +247,196,121,144, 46, 58,192,133, 46,174,250, 50, 79,201,208, 86, 39, 96,187, 99,241,120,128,239,231,251, 23,109,235,176, 81,108, +147, 91,216,130,222, 4, 38, 5,228, 74, 75,198,121,148,124, 85,193,179,212,138, 29, 68,148, 8, 16,129,153, 9,204,131, 99,148, + 43,230,157,143, 46, 98, 58,141, 51,186, 68,147,233, 81,238, 66,160,144,216,158,182,102, 98, 62,131, 74,157,136, 11,237,247,109, +128, 92,234,188,169, 45,133,187, 94,237,175,175, 20,122,122, 99, 38, 54, 73,222,119,178, 14,244,150,110, 65, 63,158,217,219,131, +201, 36,105, 12,196,141,134,102, 13, 39,103,240,224, 1, 76,167,112,182,138,115,251, 0,116, 29, 31, 55,107,190,182, 92,242,141, +197,130,119,231,231,252,163,217,138,245,244, 20,104,227,172,190, 91,166, 68,162, 77,109,217,142,165,183,140,125,195,201,186,101, +136, 67, 89, 67,179, 92,240,206,210,241, 75,211,227,120,124,245, 10, 86, 51,232, 58,202, 44,167,109, 59,158, 47, 74, 74,239,184, +189, 50, 92, 25, 40,140,241, 88, 23,131,237,137, 9,236,201,168,168, 39,149,228,221,206,177,155, 41, 68,107,184, 84, 40,154, 92, + 19, 28, 12,164,160,214, 69, 66, 59, 7,198, 7,215, 48,206, 82, 12,118,240,121,133,152,159, 34, 71, 35,228,116,129, 8,158, 59, + 65,177, 50, 45,101,221,113, 35,203,241, 90, 99,164,192,102, 26,151, 21, 60,208,138,133,146,156, 16,112, 66,178, 20, 1, 13, 44, +141, 67,100,130, 70,150,212, 66,176,176, 22, 87,140, 8,182,137,213, 62,142, 44,147, 92,151,146,231,188,231,149, 92,243,170,146, + 92,111,106, 14,149,229,103,151, 43,174,231, 3,230,109, 67, 94,150,220,152,148,152, 65, 73,176,142, 61,165,168, 67,164,151,221, +211,154, 87, 69,224,163,181,225,200,183, 76,199, 35, 70,139, 5,205, 96,192,117,183,228, 45,167,184, 26, 60, 43,161, 25,200, 22, + 67,198, 87, 90,184,164, 28,247,179, 44,178, 59,164,196, 7,129, 64,226,132,160,243, 14,165, 20,101,158,161, 5, 28,230, 67,230, + 74, 97,125, 2, 23,170, 28, 17,146, 40, 87, 16, 81,213, 77,248,167,232,114,232,111,201,187, 21, 59, 59,112,249,185,168, 33, 34, + 36,204, 27,132,143,129, 53,175, 74,110, 12, 71, 92,173,114,246, 29, 4, 17,232,218, 14,103, 12,239, 47,167, 60, 88, 28,243,149, +135,247, 88, 26, 71,176, 14, 33, 4,194, 69,148,190, 12, 1,161, 2, 66,103,136,178,228,247,222,120,142, 27,195, 9, 74,105,218, + 0, 59,249,128,145,146,124,117,118,134,104, 76,242,140,176,177, 99,156,165,194,226, 91, 5,244,237,174, 98,239,125,231, 83, 37, +222,123,115, 8,159,104,189,114, 83,181,203,180,135, 6,153,152, 59, 2,130,137, 99, 14, 82,181,223, 39,225,161, 15,240,117,236, +104,180,150,112,255, 62,254,228,180, 55,116, 73,175,186, 38,220,123, 8,147, 1,243,229,154,211,217,154, 15, 86,103,172,156,227, +206,249, 25,171,182,230,225,114,206,188,233, 56,159,173, 65, 8,202, 74,199, 44, 53, 56,174, 12,135, 8,114, 66, 48,116, 40,174, +142,247, 25, 21, 57, 71,123,251, 84,101,197,238,238,144,253, 97,137,211,154, 97,158, 83,230,138,241, 78, 69,166, 11, 70, 85,198, +100, 92,208, 90, 73,240,146,231,143, 46,241,238,201, 41, 88,205,228,242,132, 47, 61,119,149,203,123, 59, 88,231,168,134, 21, 77, +107,144, 34, 74,152,238, 78,134, 24,223,240,240,227, 89,204, 98, 62, 77,251,241, 73,122,229,223, 52, 31,241, 27, 78, 33, 50,141, + 72, 20,120, 67, 40,135,236, 15,135, 40,161,201,179,136, 40, 61,155,207, 56,153,206,161, 94,145, 15,198, 4, 41,153,175,214,152, +160,168,103, 11, 56, 59,137, 27,183, 79,148,184,237,106,249,137,213,122,216,208,237,250,121,164,148,143,190,255,122, 6,245, 94, +184, 71,176, 89,244,143,207,214,165,120, 20,113,126, 33, 10,148,197, 5,170,179,141,245, 40, 36,250, 96, 58,175, 96,146,139,220, +150, 88,139, 20, 27,141,251,109,113,156, 39,169,198,245,178,182,189, 26, 91,143,105,232, 33, 5,253, 72,227, 66,120, 38,178, 52, + 70, 42,144, 73,133,204, 51, 38, 94, 98, 18,143,123, 25, 2, 66, 9,156, 15,212, 70,210, 6,183,169,178,123,157,249,237,164, 81, +203,136,172,182,108,216, 18,189,118,127, 8, 91,247, 53, 5,117, 41,158, 78, 78,232, 63,231,229,166,130, 87, 9,112,167, 30, 51, +177,249,180, 93, 22,173, 34,171, 32, 75, 6, 31,206,193,243, 55, 97, 56,138, 1,189,231,238, 26, 3,247, 78,226, 12,222,218,141, + 89, 78, 99, 98,208, 54, 62,182, 9,235, 38,138, 83,157,157, 71, 37,178, 69, 29, 13,145, 76, 7,231,179,152,168,174,151,224, 58, + 76,187,230,227,206,114,167, 91,242,230,123,223,224,117,114,190,114,122,194,157,197,113,236,146, 53, 11,104, 82, 50, 32, 28,211, +249,130,223, 49, 41, 88,172, 27, 10,165,216,145, 14,237, 3,183,151, 29,135, 10,126,110,218,240,182,245, 20,109,203,213, 65,193, + 73,231,216,215, 18,233, 2,119, 28, 76, 6, 5,101, 16, 28, 40,207,181, 65,133,149,138,203,185,230,197, 65, 65,238, 2, 47,238, +237,114, 86,119, 88,161, 17,163, 61,196,236, 1, 98, 60, 64, 24,143, 88,175, 56, 57, 95,240,102,169,121,174, 51, 52,194,227,138, +146, 7, 4,238, 10,193, 42,207,153, 6,201, 76, 10, 86,169, 45, 29,165,129,193,203,130,198, 24,222,247,158, 60,175,112, 1,202, +172,164, 69,227, 8, 84,197,144,129,247, 76,138, 2, 35, 53,138, 64,169, 5,178,238,216,209,112,210,156,115,165,136, 30,228, 39, +179, 6, 68,142,113,158, 97,149,161,172, 99, 26, 20,215,218,154,147,160,216,105,151,156,148, 3,118,166,231, 44,202,146,172, 89, +243,150, 44,121, 77, 54, 44,100, 70, 97,150,204,173,166,202, 61,149,133, 55,169,144,139, 51, 62, 18, 57,121,183,160,201, 74, 22, +237, 10, 47, 64, 32,162,254,188,247, 76,242, 1,147, 92,145,133,128, 31,141, 88,233,132,137, 89, 27,132,176, 96,171,136, 98, 23, + 32,116, 21, 91,233,143,206,253, 54,115,230, 39, 5,247, 44,231, 71,255,153, 31,225,135,127,243,111,226,149,107,215,120, 99,177, +224,210,171, 47,242,155,190,240,253,212,206,114, 54, 63,231, 67, 37,120,185,136, 94, 5,213,122,205,121,215,210, 90,195,237,213, + 25, 63,125, 62,103,209, 26, 76,221,197,110,139, 3,145, 41,100,208, 72, 47, 16, 33,142,212, 68, 85,240,242,206,144,107,163, 93, + 74,157,225,164,192, 19,184,179, 94,242, 13, 27,229, 92,133,105, 54,147,208,158,174,247,172,207, 87, 15,210,131, 8,178,201,178, + 24,132,139, 98, 19, 79, 66,194, 21,245, 64,226,222,148, 75,217,132,210, 79,238,132,242, 49, 42,113, 15, 64,118,169, 51, 58,159, +197,103,105,181,120, 44,168,247,175,243, 69,164, 28, 52, 53,204, 87,180, 77, 71,119,231, 14,139,182, 99,181, 88,179,246, 14, 39, + 97,109, 29,133,200,200, 52, 92,159,236,166,226, 66,130, 40, 56, 28, 77, 40,117, 9, 66, 49, 40, 75,124, 16,148, 69,197,120, 82, +144, 11,141, 46, 36,185,206,169,202, 12,165, 37,133,206,185,127,182,102, 60,169,168,215,150,229,170,229,189,245,156, 16, 96,103, +111,196,141,201, 4,169, 20,229, 96, 68, 8,129,162,200,144, 82,162,242,140,224, 61,205,106,201,135,167,171,104, 15,251, 29, 85, + 43,143,173,179,190, 74,223,174,214,251, 74,201, 72,152, 47, 56, 81,158,165,105, 88, 52,115, 30,204,207,249,120,185, 34, 28, 47, + 97,113,204,162, 49, 44,100,193,170,113,172, 87,107, 56, 63,131,102,186, 1, 69, 61,158,241,169, 45,181,162,222,226, 20,243,232, + 92,125,251,166,246, 0,191, 95,207, 42,221,152, 77,224,238, 93,215, 92,162,167,245, 98, 51, 61, 21, 77,138,180,112, 19,218,189, + 23,120,208,249,134,222,209,163,194, 93, 2,143,249,190,165,159,109,180,223, 73,137, 85, 16, 27,254,188, 20,223,172, 77,208, 43, +252, 93,180,220,229,150, 96,156,222,100,202, 23, 24,133, 88,173, 58,231,233,188, 96, 55,147, 72,173, 88,135, 16,213,183,164,226, +204,153, 40, 90, 34, 21, 11,239,112,253,239, 17,114, 11,145,158, 64,124,189,251,157,148,155,234, 61, 79, 0,153, 92,197,207,245, + 0, 69,169, 54,128, 79, 31,122,140, 76, 58, 23,177,105,226,244, 20, 55,122, 42, 32, 49, 64,110,111, 60, 23, 27,100, 9,187,123, + 49, 0,127,210, 61,204,213, 70,132,135,116,188,229, 40, 50, 55, 38,147,228,183,238,162,134,117, 91,199, 17,210, 98,145,174, 41, +241,221, 38,167,188,102, 5,243, 21, 44,215,176, 92, 65, 51,131,179, 57,204,207, 96, 49,219,108, 64, 15,103, 49,121,163, 23,206, + 49,145, 51, 78, 32,204, 78, 99, 85,190,154,193, 98, 26,141,125, 22,231, 96,107, 70,193,208, 53, 75,190, 54,159,242,165,157, 93, +190,122,255, 30,129,140, 15,206,166, 28, 73,248,219,181,225,246,249, 9, 47,155, 26,231,224,174, 9, 92,223, 29,226,114,141,237, + 12, 7,147, 1,243, 69, 77,174, 53,161,200,208,198,209, 0,135,133,226,182, 11, 92, 31,104, 22,139, 53,217, 96,194,103,117,224, +238,114,138, 24,237, 34,234,101, 76, 70,198,195,152,191,158, 28,243,122,166, 41,155,142, 51, 5,247,133,165,214, 25, 15,189,101, + 46,162, 43,222, 89,235,145, 90,178,104, 37, 83,103, 80, 46,240,139, 1,106,173, 9, 50, 71, 7,143, 47,134, 72, 12,131,225, 1, +187,190,161, 26,237, 97, 28,228, 90, 35, 84,134,149, 25, 82, 11,180,119,156,215, 29,109,187,166,198,209,214, 13, 39,117,205,123, +139, 37, 95,110,226,109,184,238, 13,111, 4,201, 75,120,206,148,230,200, 52,156,150, 67,246, 2, 44, 60,188, 20,214,188,229, 75, +246,154, 5, 75, 61,100, 20, 26, 26,167, 25,102, 48,182, 43,222,206,118,185,181,156,241, 1,154,118,126, 70,109, 5,132,142, 73, + 94, 80,200,140, 66,106, 10, 25,169,121, 95, 24, 12, 57, 84,129, 87, 43,197,221,214,210,117,150,235,255,216, 23,152,220,184,196, +252,206,233, 70, 91,253,137, 1,189,151, 72, 76, 27,110,177,173, 99, 81,241, 79,254,142, 31, 34, 43, 74,170,178, 34,180, 43,126, +248,251,254,113, 94,124,233, 42,135,229,136,215,255,222,207,224,131,229, 43, 65,242,188,109,248,216,118, 52,182,227,141,249, 9, +175, 47,151,220,239, 58,108,103, 32, 4,180,130,203,153,230,181,113,198, 97, 46,120,185, 42, 24,102,146,105,215, 34, 3,188,116, +249, 18,151,171, 49, 78, 73, 36,112,102, 45, 31, 47,214,124,216,212,113, 93,158, 77,163,227,154,181,136,158,142,108, 62,197,126, + 43, 28, 23,202, 81, 38, 68,153,242,182,141,231,107,125, 26, 69,102,177, 64,241, 73, 35, 30, 19, 71,146,157,217,236,151,150,141, + 59,102,207,127,239,247,181,199, 18,249, 39, 7,245,254,101, 82, 22, 62, 95,196,247,182,141, 45,179,218,226, 0, 93, 13,241, 82, +242,252,164, 98,214,193, 32, 83,152,160,168, 84,198,164, 44, 25, 14,114, 6,101, 73,103, 61,227,113, 69, 89, 72, 84,166, 25,143, + 50,180,206,201,181, 38,203, 20,135,163,156,218,120,118, 70, 57,247, 78,107,242, 66,161,133,226, 82, 89,114, 26, 60,151,171,156, +203,147, 33,151, 15,247,201,116, 70, 83,215,100,213,128,206,117,232, 32,152,173,102,156,175,150,124,124,190,136,179, 6,241,132, + 13,254,211,112,184,183,214,218,133, 19,221,133, 2,155,221,180,107, 73,153,150,177,180,214, 48,111, 29,171, 69, 77,104, 13, 76, +143, 47,220,197,194,218, 19, 22,211, 72, 21, 58,189,183, 9, 84, 79, 3, 89,248,173, 54, 75, 31,176,122,160,198, 54, 77,172,159, +195,252,255,161, 74,239, 81,220,125, 64,223, 78, 58, 92,156,133, 94,160,188,149,220,146,133, 5,172, 74,224,186,132,109,232, 18, +152,205, 54,209, 94, 53, 81,149, 98,208, 45,184, 48,177,239,171,239,222,198,180, 79,110, 50,189,201,146, 51,189,153,157,171, 68, +147,203,179,216, 17,241, 91, 1, 83, 19,171,209,212, 17, 41,148, 64,151,154, 90,194,185,243,140, 81,120, 4,199,174,163,146,138, + 22,207, 50,120,100,208, 92,108, 91,109, 66,242,247,107,165,200,211,188, 60,209,230,122,139, 90,147,196,120,250,174,131, 74,146, +195,189,160, 69,235, 55,222, 1,189,127,122,216, 10,234, 23, 70, 48, 9, 96,163,253, 70, 88,231,113, 0,143,183,159, 28,208,203, +100, 64,228, 21,148,137,163,223, 39, 39,210,193,229,195, 40,209,154,229, 73,201,175,142, 85,217,106, 25,209,243,189,138, 88,127, + 49,251,249,188,183,113, 67,183,221,230,255,219,235,218,216,248,181, 85, 29, 19,134,222,209,176,141,237,120,206,231, 17,129,127, +239, 54,156, 78,225,248, 12, 30,158,130, 11,116,161,133, 7,103, 96,107,222,152, 79,121,216,118,188, 59,187,207, 29, 7,111,204, +206, 88,205,207,192, 26, 78,101,244, 65,120,161,138,231,119, 74, 96,183,200,200,188, 99, 80,106,186,206,179, 43, 3,115, 29,169, + 92, 15,219,142, 10, 79, 94,100, 12,132, 2,103,200,117,198,157,144, 70, 72,222,192,238, 40, 6,171,206, 18, 60, 52,237,154, 55, +230, 53,167,198, 50, 83,130,169,107,176,153, 70, 42,197,251,117,203, 88, 11,124,200, 88,219,142,129,202,248, 27,157, 97, 21, 34, +234,126,222,181, 44,138, 49, 57, 1, 89,236, 48,212,154, 73, 54, 36, 83,138,188,218, 33,132,128,149, 25, 66, 6,140,214,184,188, + 96, 25, 44, 43, 93,114,111,109,121,216,174,120,184, 94,210, 9,137,111, 87,228,182,163, 54,150,207, 75,193,173,224,185, 92,175, + 56,174,198,236,173,166,204,144, 12,240,220, 86, 5, 47,179,230,196,107, 38,210, 80, 59,197, 80, 26, 22,157,195,232, 33, 52, 83, +234,225, 46,221,106,198, 44, 43,112,237,154, 73,166, 24,120, 71,165, 50, 70, 89, 73, 41, 4, 47, 9, 65,165, 53,101,240,140,133, +224,102, 33,248,229,198, 49,127,227, 29, 22, 31,221,142,227,201, 44,123,172,224,240,124,179,134,181,140, 40,240,155, 55,227,154, +114, 14, 20,236,223, 56,228, 96,103,143,249,124,202,123, 15, 31,240,249,207,190,200,120, 88, 32,164,231, 23,126,246,231, 17,179, +115, 40, 5,191, 60,155,241, 43,171, 53, 95, 93, 76,249,160,235,152, 37, 54,135,176, 32,130,163, 0,174, 15, 37,215,130,224,122, +158,113, 45, 83,188, 88,229,124,190, 44,153,250,142,175, 52,158,225, 64,227, 69,198,185,247,124, 56, 91,240, 15,154, 46,106,149, +244,207,208,114, 5,227, 33,131,223,248, 26,166, 53, 81, 95,254,153, 1,169,125, 98, 46,210,236,220, 38,234,106,114,105,202,212, +134,174,171, 82, 66,159,103,233,185, 72, 96, 94,177,213,197,235, 85, 63,125, 82,170, 11,201,171, 99, 43,209,248,228,160,254, 36, + 48,153,115, 17,241,106,193, 9, 73, 86, 22, 24,162,104,129, 71,115,115,156,211, 57,201,112, 56,164,208,154,172,172,168, 74,201, +238, 32,167,200, 75,170, 44,103,152,107,138, 66,178, 55,208, 12,135,154,224, 5,231, 43,203,188,117, 52, 77,131, 16, 2,157, 9, +102,211, 53,227, 60, 99, 55,207, 24, 15, 71,236, 76,134, 4, 41,217,153, 12,177,198,226,172,199, 99, 57, 62, 61,227,193, 98,206, +241,157,227, 40,247, 39,210,220,226,211, 58,201,105, 54, 85,185,125,194, 92,221,250,141,168,135,210, 41,121, 72, 52,171, 58, 1, + 26,234, 22,234,105,156,119, 36, 51, 3,234, 25,212,115, 88, 46, 30, 13,102,159, 22,208,212, 11,236,108, 1,166,127, 77,170,244, + 94, 78,247, 66,130, 87, 63,186,137,123,183, 65,161,103,122, 35, 52,211,211,206, 50, 21, 1,109, 50, 75, 21,113,207, 17, 77, 82, +177,222,166,192,214,165,202, 89,108, 2,122,150, 50,212, 11, 3, 5,187, 17,180,185,152,187,139,173, 17, 68, 66,138,247,179,244, +254,251, 82,179, 35, 58,220,109,117, 69,250,177,128, 78,234, 51,169,109, 30, 4, 92, 41, 36,115, 3, 7, 69,129, 11, 30, 43,161, +144, 18,237, 92,100,202, 11,193,220,137, 56, 79,239, 1,126,190,159,161,245, 65, 90,110, 85,162,108, 42,118, 82,117,155, 37,238, +124,145,228, 96,149,218,120,169, 39, 36, 62,153,120, 52,145,203,182,100,137,101, 90, 27, 23,226, 53,225,217,129,143,187, 71, 49, +104, 95, 58,140, 78,103,123, 7,241,239,181, 93, 74,138, 21, 92,218,131,157,253,141, 16,146,202,226,189, 57,157,198,164, 85,203, +141,229,237,183,227,220, 88,232,152,196,229,122,115,252,214,193,170,139,188,122,211,197,251,179, 94,197,247,166,129,121, 18,231, +152,173,224,236, 12,230,211,120, 47,143,239, 68, 33, 19, 41, 96,126, 12, 82, 34,164,231,104,114,137,194, 26,118,139, 12,103, 61, +185,119,204,189,164, 8, 22, 33, 5,167,198,243,126, 23,165, 92, 95, 25,230,252,242,131, 5, 82, 73,158,203, 36,239, 47, 86,188, + 58,168,184, 55,159, 69,151,185,249, 49,100,154,224, 60,161,243, 4,161,241,245,130,179,149,225,227,214,243,110,103,121,177,144, +220, 53, 53, 87,164,228,107,157,103, 97, 13, 3,169,248, 74, 8,204,179, 18, 92, 71, 32, 64, 89, 97, 93, 96,169, 75,118,139, 28, +139,100, 52,222, 71, 42, 65, 53, 28,226,243, 28,161, 74, 58,149, 51,151, 48,117,138,135, 42,199, 56,193, 74, 71, 51, 22,175, 50, + 44, 6,231, 60,115,157,243, 57, 17,248,106,107,248,162,232, 88,150, 99, 14,204,140,243,209, 1,131,166,197, 22,154, 27,161,230, + 61,147,115,168,162, 46,209,176, 16, 44,150, 29,168,140,117,103, 56, 46,198,148,171, 25, 62, 43,113,235, 37,181, 86,148,235, 53, +215,171,156,177, 46, 41,165,228, 72, 43, 6, 58, 39, 88,195,174, 82, 52, 30, 20,142, 43,185,231, 77,227, 19,180, 63, 21, 87,223, +180, 38,182, 91,238,125,242, 91,240,252, 23, 94, 97,118,214, 69,161, 36,107,120,255,141,183,248,242,207,253,191,124,237,157,143, + 56,195, 51, 18,134,213, 98,202,151,223,126,157,135,175,223, 2,105, 16,211,105,252,125,117, 29,237,120,219, 22,209,118, 73, 84, +198,146, 9,120, 99, 58,215,121, 0, 0, 32, 0, 73, 68, 65, 84,161, 16,148, 33,176,175, 4,215,117,198,110,150,115, 41, 83,228, +165, 70,123,201,131,213,138,183,141,229,151,235, 37,175,215, 29, 31,154, 58,185, 95,134,205, 94,159,229, 20,175, 94,231,115, 7, +215, 57,203, 61,246,238,244,153,100,209, 31,109,195,167,185,155, 76,115,244,158,206,219, 38,141, 14,181,253,125,105,175,243,253, +222,183, 69, 95,237,157, 37,123,230, 75,150,246, 54,185,121,230, 63, 93, 80,135,232,174,132, 74,148, 34,197, 11,151, 43, 38,121, + 65,235, 21,207, 13, 53,247,106,139,119,150,221, 66, 81,150, 67,134,101,198,238,168, 64,233,140, 97,153,115,237,176, 98, 50, 16, + 12,171,168, 45, 63,204, 21,109, 23,105,113, 81,225, 85, 32,133,143,182,130, 50,202,115,102, 2,206, 27,199,254,184,160, 26,150, +232, 60,231,228,120, 74,150,103,172,151, 51,100,240,252,204,215,223,143,224,157,126, 13,169,240,236, 85,172,222,210, 97,233, 43, +227, 94,213,205,251,111, 78, 50,123,234,129,177,241,130, 6, 31,219,131,245, 50,206,253,218,246,201, 0, 17,249, 29, 6,215,139, +196, 66,126, 50, 79,242,187,253,234, 41, 95,189, 7,122, 79,197,208, 91,114,188, 38,233,196, 91,183,161,115,108, 87,231, 90,197, + 74,149, 16, 3, 87,214,243,209,147,176,143, 49,169,130,139,226, 31, 23, 0,147, 62, 65, 80, 91,109,242,109, 32, 93,255,222,187, + 69,153,110,139,186,168, 30,165,126,201,236, 17,188,227, 35, 16,220,222,254, 52,209,239, 68,166,169,125,224,160,136, 60,221,135, + 78,177,151, 65,231, 2, 70, 72,242, 0,107, 41, 89,251,237,225,119,162, 84, 6,145, 90,240,169,122, 14, 79,160, 82,246,194, 19, +219,163,131,190, 52,247, 46,137, 29,165, 99,179,189,118,116, 47, 68, 20, 30,109,199,247,172, 12, 23,158,157,234,248,217,207,176, +115,227,136, 47, 94,127,129,207, 94,190,202,193,164, 98,111, 48,100,180, 55, 97, 58, 91, 70, 20,243,100, 2, 7, 99, 24, 95,226, +168, 44,121, 41, 47,121, 41,211, 92, 17,129,187,245, 50,130,228,124, 6, 7,123,176,179, 19, 29,175, 92,247,233,214,150,115,177, + 82,207,139,141,197,110,111, 35, 44, 84, 92, 11, 33,196,153, 99,211, 38,245,199, 38,126,172, 23,241,123,150, 43,184,127, 7,150, + 45, 76,231, 49, 25, 88, 45, 1,139, 9,130,171,194,114,207, 8,246, 84,180, 73,253,192,194,190, 14,236, 89,195, 91,198,243,176, + 54, 92,241,158, 3, 5, 31,118,158,151,117,148,240,157, 11,120,206, 89, 30,172,106, 94,174, 42,238,173,231,208,173,192,121,194, +124, 69,232, 12,190,200, 9, 90,226,219, 53,222, 91,124,187,230,227,198,113,164, 60, 15, 76,195,184, 80, 44, 87, 11, 58, 33,185, +107, 28,141,179, 4, 85,164,241, 75, 14,195, 29,130, 11,188,176, 51,100,164, 75,106,211,177,183,179,131,109, 44, 94, 15,240, 66, + 98,149,164,182,130,135, 30,206,144,172,242,130, 38,171,232,202, 1, 70,101,248,124, 4, 58,227,133,172, 98, 32, 37, 63,176, 59, + 98,237, 50, 14,204, 18, 91, 76, 24,155, 25,228, 67,178,174,225, 86,200,121, 49,119,172,140,163,202,162,214,142, 2, 90, 27,184, +151,101,200,213, 28,202, 17,147, 52, 67,191, 36, 21,167, 46,112,128, 99, 95, 72, 74, 41,185, 36,115,118,114,117, 33,136, 56, 84, + 25, 65, 8,206,157,225,235, 30, 56, 57,139, 34, 51,206, 60, 1,225,238, 31,107,197, 71, 53,207,217,233, 57, 44,167,143, 22, 41, + 58,137,127, 53, 29,239,191,115,155,175,255,242, 27, 60,252,165,143, 98,101, 43,227,158, 35, 86,171, 8,160,108, 29,162, 73,232, +118, 27, 41,146, 82, 10, 14, 66,224, 69,173, 57, 16,130, 61,169, 25, 40, 69,145,105,114, 45, 25, 72,193,204,123,102,235, 46,250, +184,247,163, 57, 33, 99,210, 37,162, 2,101,240, 30,123,231, 12,183,171,153,189,254, 46, 98,189,250,244,123,168,216,162,173,170, +212,189,236,131,114,175,176, 25, 32,250, 30,167,203,180,221,230,239,247, 48, 37, 34,128, 78,108,213, 86,129, 71,170,245, 79, 23, +212,181,222, 40,229, 20,146,163,215,118,248,248,173, 51, 6, 59, 25,135, 69,206,221, 58, 16,130,229, 82,169,104,125,206,115,135, + 67, 14,118, 75, 92,200,168,180, 96,127, 39,103, 50, 20,140,170, 28,239,147,228,102, 38, 49, 38, 90, 2,158, 44, 26,170, 66,225, +124,224,225,201, 10,219,212,228, 89,172,182,134, 85,129,247, 2,149,229,120, 31,184,116, 48,230,252,116,206, 98, 49,229,175,191, +119, 11,238, 78,227, 76,207,134,141,109, 39, 60, 91,245,208,239,203, 50,157, 95,106,219,125, 51,111,253,177,247,254, 63, 79,219, + 60,251,100, 65,242,221, 49,178,251,213,160,161, 61,203, 61,183,143, 38,214, 17,101,190,149, 88,100, 58,137,192,164, 64, 45,182, + 43,249,196, 41,239,101, 99, 67,136, 93, 14, 89, 93, 56, 41, 69,109,247, 46,205,200, 83,155,218,182,137, 54,152, 61, 26,196, 67, +216,154,169,139, 13, 8,174,179,143,242,213,123, 84,124,182,165, 92, 87,136, 71,121, 52,130,141, 96,145,202, 55, 82,144, 40,130, +119, 56, 41,105,131,140,167, 40, 21,181,151, 81,132,201, 64,166, 21, 75, 19,131,252, 69,192,118,225, 81,173,227,190,163,114, 97, + 79,107, 55, 85,122, 63,203, 15, 61,152,166,167,203,184, 71, 1,112, 50,141, 6,182,147,153,190,187,224, 83, 30,209,111, 8, 97, + 11, 68,248, 73, 70, 19,229,152,157, 27,215,121,245,224,136,113, 57,100,255, 96,159, 65, 62, 32, 24, 67,174, 20,235, 76,209,206, +215,176, 63,132, 75, 87, 57, 26, 12,120,181, 26, 51,214, 26, 45, 96,224, 59,180,111, 57, 61, 94, 69,156,195,100, 24,223,203, 28, +166,179, 79, 81,165,167, 57,106, 33, 35, 29, 32,139, 84,198,223, 48, 86,252,192,164,228,249, 82,241,193, 89, 27, 91,242,193, 63, +106, 17,220,175,125,147,230,147,109, 19,255,109,218,184,233,175, 18, 24, 15,207, 92,121, 90,169,120,123, 54,165, 53,130,251, 77, + 77,133,226,118, 16,212,171,154,214, 88,198,121,198,241,186, 99,100, 28,141,214, 28, 8, 48,171, 37,199,197,128, 87,114,201,219, +243, 37,235,122, 14,198, 16,112, 23,114,253, 97,246, 16,175, 6,120,229,241,109,139, 55,150,102,177,224,195,179,134,219,243,154, + 15, 79,167,220,111, 26,110,227, 35,157, 81, 15, 98, 48, 27, 31, 16,218, 8, 42, 29, 20, 21, 69,210,188, 23,163,138,243,117, 67, + 59, 24,144,103,154, 51, 47, 17, 82,115, 39, 8,110, 89,139,202, 43,150,121, 69,208, 89,244,186,207, 39,144,143, 40, 6,251, 92, + 43, 6, 92,157,236,130,200, 57,154, 20, 52, 89, 73,190,154,113, 76, 69, 22,106,138, 98,196,161, 52,220, 94,214,236, 23, 37,141, +177, 49, 87,178,129,219, 2,154,166,166, 40, 42, 14, 4, 12,149,230,185, 42, 67, 90,203, 43,227, 10, 37, 20,218,117, 28,170,140, + 61,149,145, 37, 48,104,147,196,151,156, 16,204, 3,124,109,185,140,207,129,173, 83,146,109,191,197,102,214,143,174,186, 39,235, +132,132,100,137,108, 82,146, 95,102,136,139,194, 34,126,143, 72,227, 29,129, 71,212, 77,164,204, 39,243,149,163, 74,114, 83, 72, +118,165, 38,151,130,137, 86,236,229,154, 12, 77,174, 36,135, 74,177, 11,204,188,167,113,118, 51,102, 18,177, 3, 23,178, 52, 66, +107, 91, 86, 31,222,137, 20, 50,239,163,104,205,167,217,127,251,209,147, 76, 64, 25, 45,226,154,101,171,144, 20, 73,116, 75,176, +225,253,135,237,107,145,246,191, 97, 21,181, 91,122,205,120, 69,220,255, 62,117,165,190, 45,253, 41, 60,228, 37,171, 44, 32, 86, + 29,211,181,229,222,210, 83, 35,184,170, 29,153,148,156, 47,151,188,124,117,159,162, 26,225,140,225,104,191,228,104,183, 96, 82, +169,200,231, 86, 34,250,119, 8,129,214,240,211, 95, 91,113,176, 3,171,218,208,218, 14,151,102,122,214, 88, 92, 16, 12,134, 5, +206, 5, 70,163,156,229,162, 35,207, 21, 77,211,114,182, 88,241,238, 91,239,197, 86, 96,109, 55, 96,178, 94,151,248,211, 4, 76, +191, 37,198,242, 29, 7,195,199, 80,119,223,205,224,254,204, 85,208,119,161, 59,208, 7,112,185,141,109,145, 27,113,159,222,246, +243, 66, 19, 89, 71,208, 86,166,226, 70,237,237, 6, 5,223,219, 25,170, 34, 1, 67, 68,156, 83, 74,145,130,119, 6,126, 29, 3, + 91, 89,110, 2,217,186,217, 82,164,235, 85,212,194,163,129,110, 59,160,235,100,222,162,229,198, 1,174,175,142,123, 81, 27,177, +229, 97, 78,226,150,247,246,165,200,152,249, 42, 69,161, 36, 51, 20,153, 16,248, 16,144, 42, 32,180,224,172,182,228, 90,209,110, + 75, 70, 26,255, 40,194,191,139,173, 59,218,232,149, 64,161, 31,173, 80,251, 4,167, 15,242,253,231,100, 15,186,179,155, 7,251, +113,166, 99, 95,173, 15,163,146, 87,228,245,187, 77,119,234,147, 42,245, 27, 55,248,226,205, 27,148, 89,201,225,222, 37,138, 60, +199,217, 14,107, 28,185,202,104,108,195,204,117,176,179,195,247, 29, 94,225,181,209, 37, 14,170, 1,141,181, 81,205,178,105,104, +187, 21, 15, 86,117,172,146,178, 4, 20,156, 47,227,115,248,105,170,244, 11,202,161,134, 50,231,218,176,224, 55,142, 11, 38, 42, +162,209, 39,165,228,195,217, 42,169, 42,202, 71, 85, 4,165,140,201, 88,153,197,107,161,100,220, 52,219, 52,207,151, 1, 86, 13, + 93,211,209,154,154,208,213, 44,156,195,205,143, 57,246,154,145, 51,236, 6,207, 73,219,113,108, 58, 20,130,155,227,156,176, 94, +131,214, 40,169,216,239, 26,238,173,107, 30,212, 43,172,169, 35,192,207,180,209,202,181,235, 8, 34, 39,172, 87,132,122, 77, 24, +148,120, 99, 99,176,119, 93,252,220, 98, 78,168, 87,132,233, 50,186,194,217, 6,116, 65,176, 22,198,187, 72,161,121,101, 52, 32, + 32, 56, 21,160,180,226, 65,158,211, 8,201, 87,140,163,203, 52,175, 11,141, 13,176, 76, 28,106,164,138,207, 80, 62,140,231,156, + 15,184,190,187,199, 36,203, 24,142, 70, 20, 8,206,157,102,156, 11,140, 46, 56,104,150,172,130, 66,248,154,115,163,121,126,167, +228,108, 89, 51, 25, 42, 22,235,192, 45, 33,120, 94, 40, 12,240,188, 18,236,141, 10,156, 23,220, 24,148, 28, 85, 21,227,108,192, +218, 59,174,102, 5,210,116,236,231, 57, 57, 2, 57, 40,169, 9,120,173, 88, 35,185,237, 29,111,218, 4,152, 60, 91,125, 50,150, +227,153, 71,190, 62,142, 52, 73,160, 48, 25, 69,150, 68,191, 71,167, 61, 78,116, 14, 97, 58,132, 18, 8,239,144, 62, 32, 21,100, + 82,112,128,228,178, 20,236,228, 25,149,148,220,172, 74,174, 22, 21, 87,138,156,163, 34,231,234,160, 98, 87, 75, 62, 92,119,180, + 18,130,210,132,196, 42, 10, 33, 2,154,195,178,133,179,179, 24,204, 71,195,232, 80, 39, 36,194,218, 79,103, 60,230,183,112, 39, +125,210,211,155, 48,245,202,155,193, 63, 74,195,237, 5,208,122,204, 82, 94,114, 97, 92,214, 39, 67, 91, 73,252,179, 7,245,158, + 58,165, 36,232, 97,148, 7, 60,158,163,158,159, 16,206,107,174, 95,175, 40, 50,203,135,115,195, 81, 41,184, 58,201, 9,162, 4, +111, 57,220, 31, 34, 69, 96,119, 32,216, 25, 22, 56,231,104,141, 67, 11, 88,119, 6,239, 4, 95,255,224,140,247, 63,186,195, 32, +207, 88, 45,150,204, 23, 75,214,171,154, 60,151, 12, 70, 21,121,158, 1, 10,103, 28, 69, 1, 77,227,112,193,241,254,253,251,204, +117,160,187,117,188,213,170,120,140, 42,246,105, 91,220,223,141,224,123, 1,172,243,159,152,160,254,170, 6,116,245, 93, 41,213, + 19,200, 73,110,141, 41,236,163, 25,202,246, 38,155,171,216, 38, 29, 12,145, 95,252, 44, 97,182,136,237, 81,231,160, 24,197,170, + 44, 36,250, 91, 16, 81,205, 43,171, 54,116, 47, 37, 55, 52,144,117,162,147, 92, 56, 36, 37,224,160, 44, 54,237,233, 46, 5,204, +109,103, 62,149,199, 68, 66,170, 13, 69, 48, 16, 91,181,170,167, 8,166, 81,128, 78,130, 57,201,122,148, 66,167,141, 34, 38,135, + 6,193,160,204, 88, 27,143,150, 34, 62,143, 38,144, 73,201,188, 55,108,184,248,251,126, 19,204, 93,136,215, 34,108, 81,250,182, + 91,240, 61,184,204,111, 85,250, 33, 41,205,117,110, 3,154,235, 85, 4,251,148,189, 99, 83,193,103,105, 3,232, 91,123,186,183, +139, 20,159, 72,115, 44, 94,122,137, 16, 44,215, 15, 14,201,243,156,206,116, 40,145,108, 72, 9,180,193,113,188,106,248,210,213, + 67,138,106, 55,122, 60,228,138, 65, 86, 96, 58,131, 20,142,135,179, 19,206, 62,190, 19,219,200, 75,147, 16,241,221,166,253,222, +107,100, 63,237, 25,236,191,222, 3, 63,117,129, 28, 14,248,157,151, 42,118,178, 28, 47, 4, 74, 64,215, 26,222, 57,111,146, 35, +152,217,172,181,190, 75,148,231,112,120, 53,174,177,174,222,140,204, 50,157, 68, 59,146,141,240,116, 30,175,213,131,187,169,117, +187,100,161, 52, 67, 60,210,117, 72, 2,133, 3,107, 45,227,193,144,206,116,248,229,154,157, 66,243,229,243, 57,206,180, 9, 39, + 99, 8,166,139,125,107, 27, 8, 82, 16,218,134, 32, 3,161,105,183, 93,182, 47,138,172, 96, 34, 88, 49,220,187, 15,195, 49,140, + 71,113, 45,234,104, 39,122,170, 51,188, 16, 92, 30,230,220, 91,117, 92,175, 50, 62,108, 45,151,180,230,190,243, 88, 36, 43,169, + 8, 34,128, 46, 19, 56, 42,138,232, 48, 28,115,105, 48,228,102, 38,121,241,112,135,182,181,168, 73,197,209, 32,231, 97, 23, 56, + 20,158, 85,174,105,219, 21,222, 73, 14, 10, 56,158,173,216, 27, 23,172, 59,207,185, 23,236, 2, 75, 33,201, 93,199,225,184, 96, + 71, 74,198, 74, 48,148, 25, 58,203,217,205,115, 14, 7, 35,240, 2,169,115, 86, 93, 67,200,114,234, 32, 88, 40, 65,155,101,220, +117,158,247,140,224,142,243,177, 91,178, 92,197, 81,152,247,143,219,108,125, 27,237,201,222,157, 49,205,155,125, 44,222,132,220, +224,124, 68,138,129,194,216,244,110,144, 34, 35, 35,160, 51,201,101, 45,217,209,138, 35,157, 49,210,154,129, 46,169,116, 70,153, +229,236,102, 5,198, 91,172, 53, 76, 21,212, 4,100, 94,224, 93,228,185,203,174, 35,172, 26,112, 9, 1, 63, 44, 35, 45, 78,134, +139,142,238,183,101, 27,254, 73, 64,233,139,175,251,205, 62, 96,211,124, 93, 37, 61, 13,107,226,216, 55,124, 26,244,251, 19,129, + 90, 9, 1,110, 36,131,207, 95,197,124, 56, 67, 93, 31, 96,131,103,250,238, 12,177,110,185,127,122,202, 7,203, 53, 59,250,156, +157,170, 64,229, 35,118, 70,146,163, 73, 69,221, 52,148,133,138, 0,145,206,197,153,185, 14,236, 13, 5, 85,149,209,186,142,233, +188,229,193,241, 3,140,119,104, 41,145, 89,198,100, 84,224,141, 97,185, 92, 81, 86, 37,211,243, 25, 93,211, 81,105,197, 27,247, + 31, 16, 86, 6,154,121, 82,183,106,191, 51, 77,244, 79,251,163, 23, 93,140,132,180,238,179,172, 39,217,168,249,111, 29, 67,191, +227,164,194,109,241,161,229,227,227, 19,249,232,199,183,188, 78, 9, 76,160, 83, 48,247,114,155,103,245,205,235,195,165, 69,169, + 50,194,206, 78, 68, 48,135,164, 38,167, 66,156,193, 22, 18, 66, 30,249,154,189, 87,124, 81, 36, 10, 88,153, 90, 81,126,179,128, +123,164,123, 79,147, 99,139,214,214,250, 71,145,213, 69, 30,129, 39,190, 23,131, 73, 21,253,182,211,153, 21,155, 74,223,187,168, +242, 36,185, 48,141,136,179, 52, 46,208,243,198, 57, 42, 41, 89,121, 8, 33, 32, 2, 44, 43, 25,171,101,221, 11,238,216, 77, 64, +207,213,134,146,231, 82, 50,164,244,133,132,236,197,245, 19,233, 30, 52, 41, 49,201, 68, 60, 72,151, 42,110,145,142,143, 45,111, +117,181, 21,220,243, 30,116, 19,175,247, 69,182,255, 45,198, 51,238,124, 73,117,245,136,138,232,243,160, 16, 12,134, 21,109,189, +198,250,142,186, 93, 50,204, 4,223,115,253, 38, 85, 85,177,146,138,194, 11, 36, 6, 92,199,241,114,198,215, 78, 78,225,193, 52, + 57,229,249,216, 6,116, 38,137, 3,145,186, 50,219,224,202,199,147,222,173, 17,138,146, 32,115,190,120, 56, 96, 47, 47, 24,107, + 69, 16, 18,227, 29,223, 88,183, 28, 79,163, 90,221,133,176, 80,191,110,123,187,231,213, 44, 2, 40,133,219,162, 7,110, 9,232, +180,233,231,219, 85, 52,179, 89, 45, 99,208, 41, 37,179,102,206,209,112,151, 83,211, 82, 8,193,165, 76,179,182, 29,187,206, 49, + 42, 43,254,254,195,227,152,168,180,179,200,181,183,109, 4,188, 42, 69,176, 38, 6,242,229,121,108,215, 58,247,104, 48,127,236, + 61, 38,170,115,194,217, 12,142, 14,211, 26, 43,200,117, 84,161, 84, 68, 13,251,179,214,114,181,140,250,235, 45, 30,107,124, 20, + 43,234,129, 83,147, 73, 92,115,121, 9, 50,227,112, 92,112,115, 50, 64,103,146, 44,203,233,148,164, 13, 48,145,138,187, 86, 48, + 86,154,219, 54,160,156, 99,218,121,148,119, 44,189,164,105, 45,149, 16,220,115,134,207,142, 52, 7,131, 10,225, 61, 59, 66,112, +165, 28,178, 18,130,177, 86,200, 16, 24, 13, 7,212, 1,186,214, 50, 42, 43,150, 72,214, 69,206, 84, 42,102,206,242,160, 17,204, +165,230,212,182, 56,103, 8,138,136,185,248,118,192,147, 79,220,134,108,194,219,116,143, 24,170,136,190, 5,191, 61, 81,115, 46, + 78,161, 36,232, 92, 49,146,138, 29, 41,184,146,107, 46,149, 5, 35, 85,196,173, 42,120,164,208,180,222,160,180,102, 41, 3,211, +186,102,156,101,212,214, 99,157, 97,164, 4,245, 98, 25, 19,186,243,121,212,134,207, 51,132, 22, 9,101,111, 35,229,237, 49,136, +206,167,126,189,112,141,253, 47,124,134,250,214,189,111,102, 65, 61, 30,232,219, 46, 57,133,118, 79, 28, 19, 63,209,222,236,171, +127,239,167,248,143,127,226,127,224,111,254,221,159,123,242, 1,172, 27, 24,148,172,223, 58, 69, 20, 26,119,107,193,186,245,136, + 28,126,240,251, 95,228,203,255,240, 1,208, 32, 41,185,123,118,159, 32, 53,207, 95,126,137,119,238,157,241,202,149, 9, 47,222, + 60, 98,181,106,121,231,131, 7, 96, 61,247,167, 45,139,117,205,221,143, 79,152, 45,215,156,181, 75,150,214,208,153, 64, 86, 72, +118,179, 33,167,199, 51,254,212,191,242,187,248, 63,127,238, 77,190,113,235,132,182,107, 57, 95,213,252,181,159,248,215, 81, 74, +226,211,188, 85, 74,137,148,130,201, 43, 63, 66,103,126,149,145,225,189,184,137,216, 70,193,109,251,180,127, 27,137, 65,127,131, +244,119,128,108, 87,143,189,111, 31,235,183,215, 3, 75, 7,148,192, 45, 79, 82, 84, 26,148, 23,235, 34, 2,158, 44,188,243, 97, +100, 74,168, 50,118, 79,124, 52,202,192, 38,138, 90,158,116,225,109, 66,138, 23,163,200, 36, 80,101,178, 7, 77,188,105,183, 69, +235,235,131,123,191, 14,117, 58, 46,107, 31, 61,199,124, 11, 64, 38,100,148, 28,246, 34,126,190, 87,108,235, 91,216, 89,186, 88, +193, 61,202,149,135, 11,117,184,117,202,152, 59, 31,232,130, 68,182, 2,143, 75, 35,137,116, 45,122,197,184,158,146, 7,177, 29, +220,177, 53,219, 79, 92,244, 32, 54, 93,132,254,107, 62, 89,173,246, 84, 55,107, 55,179,247,167,101,155,222,166,132,193,166,243, +121,134,219,217, 44,120,240,230, 71,148,159,147,156, 46, 87,188,114,245, 26,166, 61,163, 44, 52,160, 56, 24, 76,248,204,209,101, +202, 65, 9, 34,227,250, 96, 72,107, 28, 31, 62, 92,240,229,213, 20,191, 92,110,116, 7,214, 22, 6, 26,202,113, 60,134,198,197, + 64,223,175, 7,251,148,181,158, 0, 73,180, 29, 20, 57,215,247, 53,151,133, 96,234, 28,131,144,225, 68,224,107,181,225, 27,203, + 84,169, 60,105,253,150, 99, 56,184, 4, 15,239,108,198, 47,253,247, 93,172,207,173,117,177,110,128, 38,206,123,231,199,241,103, +190,248,121,102,139,251, 92, 26,236,178,240, 29,111,156, 47,249,222,157, 67, 36,134,166,171,185,150, 73,110, 55, 45,194, 68,117, +177, 48,157, 69,251,214,135,167,241, 25, 95,156,130,148,113, 62,254,216, 43, 60,233,255,235, 6,116, 3, 31,188, 9, 87,159, 3, +165,105,149, 38, 8,133, 73,157, 37, 45, 5,239,173, 26,148,132,171,121,193,109,209,224,154, 36,113, 76, 25, 25, 0, 89,122,206, +148,230,210,176, 36,228,177,187, 81,228,160, 76, 60,111,155, 43, 70,165,226, 23, 30, 46,216, 45,134,252,109, 19,216,149,150, 42, + 40,174, 54, 11,116, 57,166, 2,174, 41,141,195,177, 19, 60, 50,175,200,117,198,217,106,193,181,225,152, 78, 75,206, 91, 75,179, + 92, 51,153, 76, 88, 10,135,145,209,193,236,220, 90, 76,145,115,214,105, 78,164, 99,109, 58,118,243, 1, 39,229, 16,155,207, 96, +188, 15,237,253, 95,213, 45, 56, 96, 17, 90, 19, 82, 27,252, 98, 82,101, 45,172,107,234, 14,186,231, 52,107,167,152,183,134, 98, + 0, 54,116,104, 10,144, 26,227, 13,185,210,236,120, 79, 48,150,215, 6, 3,222,237, 26, 62,151, 59,222, 93, 59, 86,222,115, 77, +192,157,135, 39, 81,119,190, 53,132,176, 6, 27, 16,198,198, 46,204, 19,238,185,120,202, 26,120,234,235,195, 59,156, 73,241,244, +174, 86,175, 32,217,175,235, 79,240,187,248,166, 39,101, 56, 40,249,252,103, 95,224,231,127,241,141, 39,236,237, 54,129,228,146, +174,119,183, 2, 87,161, 94,221,199,191,125, 15,117,243, 26,191,240,143,238, 80,221, 40,169,178,146,159,125,231,152,207,220,104, +216, 47, 75,222,124, 39,231,232, 96,135,197,110,193,206,100,192,235,111,223, 98,186,152,177,110, 29,153,232,248,250,155,247,248, + 59,111,125,200,165, 74,178,183, 51, 68,134,152,253,223, 59, 55,120,235,216, 29, 15,120,238,112,135, 95,121,231, 22,239,221,123, + 72,161,115, 38, 85,201,143,254, 59, 63,201,255,243,238,251,240,254, 3,104, 22,252,249, 63,253, 39,121,238,232,210,175, 65, 64, +231, 9, 1,253,113,148,123, 31,108,248,100,239,243,222, 82,115,187, 10, 17,252,218,188,190,213,177,109,223,251, 39,253,187,216, + 50, 84, 41,199,169, 61, 38,162, 9, 75,207,197, 44,114,232, 68, 4,119,244,232,253, 97, 9, 77, 74, 60,180,220, 80, 51, 42, 29, +177, 17,217, 78,172, 96,237, 34,122,176,171, 60, 86, 76, 93,189,209,124,239,215,225,246, 2, 87, 9,132,114,145, 54,247, 85, 93, + 10,232, 93,242, 83,238, 82,224,191, 64,143,203, 77, 64, 52, 61, 42,117, 43, 65, 11, 36,212,105,128,208,225,253, 86, 85, 45,182, + 42,116,111, 55, 26, 6,164,249,111,149, 71,160, 79,112,143,242,216,189,221,252, 91,132, 77, 66, 80,234,216,222,253,164,246, 78, + 78,236, 72,101, 41, 49,184,118, 8, 31,222,223,200,222, 58,255,201,247,182,105,248,232,131, 59,140, 46,239,177, 51,205, 24, 23, + 37,171, 58,218,196, 30,237,236,177,119, 52,161,110,162,216,206,170,109, 88,180, 13, 46, 3,191,154, 65,151,180,167,243,173,107, + 4,113,148, 33,154,248,247,215,137, 13,225,158,226,121,111,211,215, 83,192, 13, 66,208, 4,143,246,129,247,186,142,179, 14,222, +169,211,207, 21, 2,230, 91, 26, 4, 33,174,181,252, 11,175,208,221, 59,251, 22,137,235, 99, 9, 95,159,144,246,246,150,239,188, +133,253,220,107,156,213, 53,132, 21, 72,197, 47,222,125,143,188, 28, 83, 9,193,108,126, 6,210, 19,154, 8,146, 19, 85, 9,171, +134, 32, 53, 60,124,152,152, 48,221,183, 8, 60,143,189,230,167, 96, 87,145, 45, 96, 1,149,211, 1,183,229,152, 35,215,226,170, +138,214,121, 94,173, 74,238,117, 29,206, 38,136,186, 77,244,217,178,188,120,142, 46,233,200,216,176, 66, 48, 46, 53,214, 5,116, +225, 81,121, 78,221, 90, 78,219, 64, 53, 44,121,195, 74, 14,133,160,238, 26, 68,107,120, 32, 38,236,153,134, 74, 72,174,236, 14, + 41, 77,141,148, 26,135,164,234, 90,118,118,119,185, 91, 55,228, 78,113, 56, 40, 24, 82,242,208, 7, 70,187,151, 56, 63, 62, 6, + 37, 88,171,156, 46,192, 10,144, 33,176, 18, 18,135, 36,232, 44,170, 16,142,151,176, 78,201,221,175,202,203, 62, 26,194,116, 79, + 51,142,235, 63, 8, 64, 26,110,157, 46, 81,151,225,197, 82, 51,109, 59,142, 84, 73,235, 28,173,179, 84, 42,231,196,116,212,193, +178,159,231,204,172,225, 32,215,172,154,142,151, 67,203, 7,179,154,251,103, 11,164,179, 4, 27, 63,132,141,231, 19,236,163, 88, +182, 79,188,231,207,242,122,255,246, 19, 18,215, 18, 6,195, 4, 16, 77,186, 14,166,123,166,208,148,246, 67,201,199,191,244,215, +144, 82,242,225,151,255, 42, 0, 95,250, 29,127,152, 15,110,221,229, 63,248, 19, 63,198,191,249, 47,255, 94, 14, 15,118,249,153, + 95,248, 26,255,210,191,255,103, 57, 62,155,241,195, 63,244, 61,252,143, 63,241,239,242,215,127,254, 23,249, 23,126,219, 15, 34, +149,226, 79,254,248, 95,224,123,127,224, 53,254,192, 63,241,155,185,124,184,207,159,251,171,127,139, 63,247,151,255, 47,254,232, + 15,125, 63, 82, 88,180,254, 62, 94,127,243, 35, 86, 77,199, 15,126,254, 5,190,231,139, 47,243,119,190,252,151,120,248,250, 91, +252,200,191,248,187,249,183,254,232,239,225,198,229,125,190,254,241, 61,126,236, 39,127,138, 95,126,255,109,238,254,165, 63,141, + 64,240,147,255,246,239, 3,224,143,253,217,191,204,207,190,253,141,216,253,156, 25,176, 53,255,252,239,254,173,252,190,223,243, + 67,124,207, 15,255, 17,126, 93, 95, 61,184, 65, 60,107,208,220,162,242, 92,180,152,121,118,141,225,103,237, 40, 60,237,111,107, +251,108,129,253,105,199, 93,150,177, 10,239,221,212, 84, 1, 86,199,207, 55,117,148,142, 29,148,155,227,200, 52,180, 73, 26,182, +136,150,138,145,247,223,198, 25, 41,117,148, 24, 85, 62,182,233,251, 42,221,177,161, 61,125, 19, 56,110, 11, 33,239,205,166, 53, + 29, 82,171, 90,166, 28,190, 15,232, 50,196, 68, 99,144,127,115, 75, 56, 35, 30,135, 77, 32, 65,147,170, 97,209, 87,228, 91,237, +124,177,245,248, 54, 9, 73,232, 83, 96,237,103,245,117,226,223, 23,217,214, 24, 32, 5,116,231, 82,162,144,254,118,174,210,239, +217, 10,148,166,217, 32,226,183,129,114, 90,196,121,113, 86,114,233,242, 1, 39, 15,103, 48,235,210, 40, 65, 38,239,132,173, 29, +102,123, 45,133, 21,100, 7,188,118,245, 38, 90, 58, 6,163, 17,174,169, 81, 74,179,127,120,137,178,204, 81, 69, 96, 58,111,168, + 93, 71,231, 44,199,245, 60,110, 44,139,117,252,176,102,179, 86,157,221,128,254,164,127, 74, 15,240,177, 53,185,181,214,239, 28, +175,120,126, 60,228, 78,211,128, 47,121,167,115,155,243, 21,114,147, 32, 92, 36,235, 53,221,219,239, 70,250,104,219, 61,161, 66, +127,108,221, 63,254,249,190,149,219, 76,152, 31, 31,195,184,141, 5, 75,178, 36,237,128,206,172,226, 8,193, 68, 14, 52, 64, 56, +153, 70,175,245,166,217, 84,255,197,147,157, 2, 63,113, 99, 95, 55,177, 61, 61,174,226,249,237, 94, 6,123,200,131,241, 78,212, +214,215, 37,239, 44,234, 77, 23,168,255,123, 66, 70, 4,246,112, 0,157, 71,101,158,202,121,156, 18,204, 93, 96, 80,102,152,198, + 96, 8,136, 66,179,178,158,147, 96, 41,131, 98,145,105, 6,114, 68,147, 91,196,116,206,160, 24,162,186,134, 82,192,104,178,203, + 14,130,105,211,161, 6, 21, 31,206,230,188,178,183, 71, 99, 13,171,214,113,234, 12,207, 15, 7,156, 19, 56,216,223,231,214,236, +156, 66,230,156,174,187,200, 0, 17, 48, 8,158, 70,107,180,206,112, 34,131,225,128, 32, 10,112,205,147,241, 61,219,157,206, 79, + 83,132, 93, 36,105,143,221,243, 94,175,201,123, 66, 90, 87,161,179, 4, 3, 31,157,231,252, 3, 47, 40,145,236, 23,138, 12, 80, + 50,103,233, 13, 74,106,238,172,107, 78, 9,104,165,144,206,162, 75, 77,214,193,229, 61,193,195, 85,234, 2, 52,117,106,121, 63, + 58, 90,249, 38, 12, 5,143,226, 91,191,109, 76, 65,145, 67, 89,196, 2, 72, 8,112, 42,225,109,252, 39,198,133, 71,102,234, 33, + 4,156,115,156,156,205,248,254, 31,249,215,248, 47,254,235,255,153,243,217,130,159,248,143,254, 13,126,251,111,254, 18, 63,250, +135,254, 61,254,204,127,245, 63,241, 99,191,255,119,241,165, 87,159,231,111,253,253,175,242,135,254,185,223,206, 23, 94,123,137, +255,242,191,249, 43,252,137,159,250, 43, 92,175,198,252,135,127,252, 15,242,191,252,181,159,230,143,255,103,127,145,143,166,199, +252, 39,127,228, 15,240,231,254,187,255,149, 92,214,124,254,133, 27, 76, 70, 67,254,238, 79,255, 60,191,243,183,124,145,151, 95, +184,202, 31,249, 79,255, 91,254,239,127,248, 14,127,242, 15,255,179,252,254, 31,249, 65,126,255,159,248,179,252,169,159,252,139, +252,150, 47,124,134,223,254,242, 77,254,234, 95,250,223,113,251, 59,116,173,225, 95,253,207,255,123,254,194,255,241, 15, 88,173, + 86, 88,103,120,227, 87,238,192,116,202,205, 23,174,242, 55,127,234,207,240, 7,255,216,159,230,205,119, 62,250,181,169,210,241, + 27,177,148, 39, 61,210,129,103,243, 40,239,129, 61,126,203,145, 43,244,173,216,239, 70,146,225, 63,217,114,246,153,125,212, 31, + 27,248, 95, 24, 28, 84,233,148, 85, 2,193,117,144, 87, 96,151, 49,130, 21,101,188, 22, 85, 1, 85,149,134, 93, 58,130,210,134, +131, 24, 64, 93, 74, 14,156,219,200, 32,154, 5,200, 50,166,196,222,196,160,218, 3,227,202,252,209,141, 64,234, 77,128,233, 9, +180,206, 37, 48,158,216,204,209,173,216,180,188,123,106,140,220, 66,196, 43, 25, 55,218,114, 16, 31,168, 94,198,214,218, 56, 79, +105, 76, 12,166,150, 77, 80,251,255,186, 59,243,216,202,174,251,190,127,206,114,151,119,223,198,101, 54,105,180,203,178, 36,203, + 82,237,120, 81,188, 1,110,155,218, 13,218, 24,112, 19,184,168,255,180, 83, 32, 64,209, 38, 5,130, 2, 6,138,180, 64,227, 46, +105,141, 26, 40,138,182,169,155,182, 6,154,216,109,224,164,177, 93, 27, 65,108, 3, 74, 17, 91,134, 20, 69,171,173, 37,150, 53, +210,140,102,134, 67,114, 72,190,229, 46,103,233, 31,231, 92,222, 75,206,140,228, 25, 73,142,209, 7, 16, 36, 31,249,222,187,203, + 57,191,245,251,251,126,235,232,169, 91, 36, 61,190, 35,175,176,190,119,189, 84, 36,138,112,157,156,234,129,102, 96,191, 34, 70, + 4,195,212, 33,232, 57, 76,118,209,239, 73, 87, 53,139,237, 69, 16, 52,106,103,228,137, 61,121,209,151,233,117,221,122, 74, 52, +119,223,247,118, 38,195,130, 99,227,117, 82,165, 25, 20, 5,227, 65, 65, 83, 55, 12, 70, 5, 94,104, 68,170,105, 28, 56, 28, 79, +109,109,211, 8, 9, 23, 46, 4, 10, 88,211,116,199,236,162,212,166,142,228, 49, 45, 81,149, 10,162, 76, 7,122,171,253, 62,161, + 86,113, 84, 17, 94,108, 96,203, 43,182,132, 15,193,138,139, 85, 20,235,130,194, 85, 95,200, 40,209,176, 88,118,204,145,237, 61, +234,143, 26,181,243,238,142,131, 65,114, 31, 75, 82, 45,195, 49, 14,179, 72,128, 20,143,115,123, 35, 16,222, 72, 21,232,105,181, +134,205,109,152, 14,195, 26,216, 62, 23,208,221, 89,250,170,153,250,149,177, 47, 13,204,150, 97, 31, 12, 70, 1, 27, 32,117, 28, + 9,171,194, 57,167, 49,168,107,215,133, 82,221,244,135,169,104,140, 99,109, 92,176,174, 36, 74, 73,246,106,143,148,130,165, 23, +156, 89,212, 44,113,204,107,139, 84, 10, 82, 77,227, 61, 78, 73,142,166, 41,141,148,220, 49,144,140, 17, 88, 47, 25, 74, 65,145, +103, 44,107,195, 90, 81,176,181, 44,241, 90,147, 41,201, 40,205,184, 96, 26,214,117,194, 5,107,184,101, 52,225, 84, 89, 50, 72, +161,170, 45, 53,130,165,173,216, 50, 13, 66,106,106, 83,117, 99,169, 91,219, 29, 51, 98,223, 97, 37,170,107,169, 93, 45,121, 81, +111, 13,137,120,111, 69,143, 30, 66,120, 31,116,212, 33,140,186, 57, 88, 36,138,163, 90,145,105, 73, 74,104,159,205,156,101,219, + 90, 46, 56,203, 2,129, 21, 30, 33, 4,210,251, 64, 75, 46, 37, 39,134, 41, 34, 81, 44,147, 1,216, 6,233, 65, 28, 2,199, 93, + 65,134,235,218,123,236,237,254, 77,211, 14, 84, 42, 68,216, 99,175, 2, 2,191, 36,158,126,239,187,238,229, 27,127,252,208,254, +239, 55, 92,119,148,191,247,137,143,114,251,253,127,155,243, 23, 46, 2,240,187, 95,125,128,143,253,205, 15, 66,185,199, 79,255, +165,183,240,111, 63,247,191,248,230,255,125, 2,117,251, 58, 27, 91, 23,249,250,131,143,240,123,143, 61, 70,189,156,115,246,249, + 77,118,102, 11,236,162,228,219, 79,158,231, 19, 31, 91,225,143,254,236, 73, 62,242,115,239, 71,107,205,135,126,229, 55,216,220, +216,227,216,218,136, 79,253,210,223,226,190,159,251,135,188,180,189,139, 51,154,175,125,235, 65, 62,249,177,159,133, 69,201,253, + 55, 93,207,215,190,243, 8, 79,109,158, 39,145,146,199, 47,206,200,178, 32, 50,161, 71, 5,191,243,217, 79,241,239,127,251,171, + 60,240,208, 19, 63,222,186,181,239, 1,176,250,229,119,119,149, 61,113,219,150,220,123,128,179,215,181,131, 96,174, 0,161, 48, + 63,106, 4,115,233,115,222,193,112, 26, 70, 7,163,100, 41,178, 9,229,114, 83,129, 30, 71,173,110, 7, 43, 3,152, 22,161,228, + 40, 36,140,178, 64, 6,147, 8,210, 36,167,102,121, 41, 97, 79, 50, 14,239,237, 0,105,186,158,125,109,186,126,122,107,200,197, +229, 90, 32,186, 3,149, 65,112,198,109,217,221, 68,133,188, 36,143,206,216,133, 13,212,146,187, 12, 90,227,145,192,162,233, 0, +136,137, 14,165,116, 45, 2,130,185,142,199,236,234, 46, 92, 23,135, 67,244, 24,168, 45,234,174, 50, 80,153,144, 69,215,241,127, +147, 94, 9, 63,139,206,223,134, 44, 60, 4, 30, 61, 71,116,224, 28,218,177,191,121, 55, 54,217,196,118,134,237,129,104,132, 12, +148,178,237,253, 94,191,137,227,171,235,104,169,217, 89,236,145,231, 57,171,249,144, 36, 79, 73,101, 26, 49, 89,134,201,116, 0, + 18,230,203, 5,183,140, 87,241,102,198,247,198, 67,216,220,233,174,107, 59,158,211,158, 99,139,177,168, 77, 36,102, 50, 87,118, +126,109,150,221,148, 48,111,129,156, 45, 72, 49,146, 7, 73, 21,112, 22,182, 60,152,229,183,159,173, 47,131,169,208,241, 92,205, +161, 62,187,190, 76,214,119,113, 22,152,245,210, 54, 88,216, 11, 96,186,202,192,169, 51,193,145, 22,121,144, 0,157, 47, 3, 59, +228, 43,100,232, 87,149,113,170, 37,252,249, 11,225, 60, 7, 41, 52, 11,152, 28, 15,253,104,107,160,148, 93,123, 72,200,174,244, + 26,191,167, 89, 78,125,238, 34,230,196, 26,110, 94, 51, 28,166,224,100,160, 76, 80,158,166,129, 97,150,176, 83, 53, 88, 37,112, +105,152,114, 88,120,207,170, 75, 56,147,228,164,110,193,221, 89,202, 66,192,145, 68, 65, 82,224,234,134, 65,154, 4, 21,100,161, +152, 11,199, 48,205,152,153,154, 19,163, 1,103, 22, 75,142, 15, 6,108,151, 75, 26, 26,156,183, 88,149,131,153,225, 26,131,202, + 71,152, 34,202,151, 14,199, 65,147,163,127,111,156, 60,152,189, 43,249,163, 87, 38, 15, 93,247, 3, 25,113, 79,176,208, 43,185, + 63, 94,232,154,146,229, 30,124, 77, 8,172,132, 66, 44, 56,150, 5,194, 35, 43, 5,115,165, 3, 75,164,245,104, 37, 24,106,205, + 0,197, 12, 65,158, 75,134, 72,142,100, 21, 79,178, 2,179, 57,126,209,224,125, 40,199,247,209, 46,254,208,207,175,205,100,155, + 32,109,188,175,191, 30,136,122, 94,237, 26, 93, 98,177,223,243,206,123,248,244,103, 63,191,255,251,135, 62,248, 46, 30,126,244, +233,125,135, 14, 48, 29, 21,156,223, 14, 36, 19,247,191,253, 78,254,201,103,254, 43,140,114,236,243, 23,120,251, 93,111,226,155, +223,126,146,157, 23,246,152,222,182,194,123,223,255, 86,190,253,240,247,112, 82, 51,190,110,192, 93,183,223,198,251, 86, 71, 76, + 71, 5,119,254,141,127,192,238,172, 98,116, 52,227,175,254,244,125,100,169,230,161,223,251,215,241,106,120,164,144,124,241, 15, +190,137, 7,222,115,223, 29,124,250, 55,126,139,157,231,126,176, 15,184,170,226, 92,241,175,255,242,199, 49,214,241,235,255,249, +127, 7,135, 66,253,198,250,115, 67, 40, 89,183,151,207,186,131, 78,197, 93,195, 29,237, 27,165,170,254, 49, 5, 38,230,218, 3, +135, 68,134, 50,187,237, 59,116, 31,174,191,175,162, 99, 95, 66, 54, 8,255,187, 50, 10, 32,170,149, 33, 89,150, 81,237, 85, 76, + 38, 3,202,210, 99, 91, 62, 99,116,200,202,171,101, 64,176,103, 61, 16, 90,157, 4,144, 83,109, 46,189,102,109, 73,190,229, 79, + 86,189,123,144,137,110, 57, 24, 31,126,247,209,193,139, 24,152, 16,203,244,101,236,135, 15,243, 78,188,196,187, 96, 92,117, 68, + 62,150, 38,150,200,155,208,251, 78, 85, 96, 95, 59,236,204,219,223,219,185, 83, 31,157, 85,105,194,235,124,204,238,211,126,159, +188,103,229, 92,203,104,101,186, 74,132,171, 35,213,109, 47, 72, 49,254,224,186,107,151, 97,227,122,216,205, 62,136, 51, 84, 52, +110,184,237, 36,179,106, 73,158,104, 50,149,178, 87,206,209, 8, 50,173, 81, 67,168, 23, 53,211, 35, 19,118,247, 26, 22, 85,195, +238,178, 66, 99, 40, 27, 56,178, 58,229, 66,185,132,151,202,144,173,239, 7,161, 38, 4, 33,210,117,125, 84,173,187,210,249,171, +225, 53,148,233,136, 56,218,160, 49, 21, 65, 4, 3, 96,135, 80,173,241,166,123, 77,223,192,239,115,255,167, 7,251,142, 2, 72, +167,112,235, 42, 60,251,220,101, 2,217, 58,242, 18,196,160, 46,199, 28,146,165, 0, 0, 19,212, 73, 68, 65, 84, 25,132, 15,187, +176, 13,213, 94,168, 68, 93,220,137,228, 74, 85, 88,131,197,235,212, 43,174,234,240,249,207,191, 0,199,214,122, 99,195, 50,220, +243, 74,198,209, 69,194, 40,103,108, 73,164, 66, 83, 11,184,213,212, 84, 58,225,135,103, 54,184,101, 60,100,161, 37, 59,101, 67, +170, 85,192,163,106, 25,240,186, 89,144,153, 93, 36,158,129,147,148, 90,145, 13, 28, 55,214, 21,168, 49, 27,222,146,121,199,197, +218,144, 36,154, 36,207,216,174, 42,174, 19,154,185, 55,228, 42, 65,226, 16, 73,138,179,150, 53,157,176,225, 26,106,149, 48, 73, + 60,167,155, 26,105, 75, 18,157,144,160, 40, 75, 19,156, 81,158,195,145,181, 96, 11, 90,109,132,182,197,213,199,175, 92, 77, 73, +122, 52, 13,247,231, 74,118,210,183, 83, 94,174,151,183, 24,240, 37, 75,169,248,242,210,114,231,177, 33, 43,118,193,170, 77, 25, + 39,193,103, 36,105, 18,114, 52, 33,240,113,124,104,168, 37, 30, 69, 35, 5, 43, 90,177,146, 40, 30, 17,138, 74,215,120, 83,226, +154, 6, 81,155,253,185,121,119,153,204,252, 53,149,225,189,129,157,157,176,119,165,123,213,126,250, 37, 78,253,150, 27, 79,176, + 58, 29,243,232,147,207,237, 63,119,116,125,149,189,217, 65, 18,129,143,252,245, 15,240,155,191,243, 85,110,187,253, 22, 70,195, + 1,143,253,240,165, 8,204, 17,124,224,254,123,248,231,159,251, 18,222, 59, 70,197,152,123,174, 63,201, 3,143,125,159,119,188, +253, 24,223,127,161,230, 45,183,223,192,167,255,251, 55,120,247,155,143,242,233, 95,254, 56,255,225,139, 95,226,241,103,182, 89, + 95, 25,243,149, 7,254,148, 95,248,213,207,226,189,197, 55, 30, 63, 47,241,245,156,155,111, 60,206,234,116, 20,142,203,214, 80, + 0,197, 4,134, 67, 62,124,255, 61,124,242,231,127,134,183,253,194,175, 6,231, 80,164,193,184,191,209, 64,185,125,159, 30,127, +232,247, 59,175,213, 89,190,161, 60,238,209,249,213,230, 42, 62, 71, 95, 33,203,223, 79, 9, 15,238, 72,161, 58,112,156, 34,128, +211,178, 20,142,142,195,232,206, 56, 35,215, 9,206,195,112,117, 66,109, 13,121,150, 34,164, 97,111,105, 72,144, 84,152, 72, 27, + 90,195,142,233,156, 49, 38, 34,172, 27,240,101,119,124, 66,135, 32,175, 53,222,135, 37, 75,219,254,185,142, 30,119, 63,203,238, +101, 64,237,107,219,146,246,230, 44, 56,146, 36,102,132,146,192,106,166,162,227,109,226,255,238,163,220,101,216,124,109,112, 32, + 35, 65, 19, 61,208, 99, 75,132,211,127, 93,155,229,183,239,153, 69,105, 88,161,218, 3, 63, 4,170, 59, 52, 30, 86, 19,156,222, + 62,102, 32,222,146, 54,232, 58,188, 7, 90,199,171, 82, 94, 58,117,154, 27,238, 89, 3, 96, 94, 46,209,137,192, 52, 13,206, 86, + 84, 75, 79,154,231,212,141,165, 24,103,156,218,188, 72,109, 26,110,212, 57, 85,230,185,119,120,130,167,202, 37,223, 91, 84,112, +118, 43,192,173, 91, 71, 87,155, 88,133,208, 93,133,162,117,232, 87, 2,206,181,207,215, 6,146, 26, 92, 26,239,109,188, 55, 69, +168,200,169,241,144, 19,169,227,244,198, 2, 22, 59,151,178, 8,238,247,221, 15, 33,225,189,129,249, 38, 60,187,121,249,236,218, + 52,112,113, 47, 8,215,136, 36,148,194,215,215,195,243,167,231, 1, 16,220, 24, 96,212,177,128,165,250,245,221,158,229, 30, 92, +104, 34, 67, 96, 92,135,131,149, 48,151, 94,214, 17,160,172, 88,115,142,147,131,156,117, 9, 79,204,151, 28, 79, 37,190, 42, 57, + 85,150,108,160,208,123,115, 40, 6,108,249, 0,144,195, 6, 37,192, 34, 81,108, 11,139, 51,176,240,150,155, 11,205, 81, 33,168, + 42,201,186, 20, 44,154,146,163,105,202,249,237, 25,183, 14, 37,167,231, 53,215, 37, 41,187,182, 97, 37, 73,217, 49,134, 66,105, +230,166, 97,168, 18, 54, 49, 52, 22,150, 77,195, 89, 39,176, 74, 50,119, 26,101, 5,165,143,129,126, 86,192,176, 6,113, 49, 34, +245,229,190, 62,249,126,217, 61,185, 74,251,103,221,193, 53,117, 57, 28, 67, 59, 69, 36,101, 32, 1,138, 69, 54,111, 12,126, 62, +199,169,138,167,206,195,201,105, 74,230, 3, 46,101,152, 15, 40,109,131, 80, 9,185, 86, 56,227, 81, 42, 16,242, 52,214, 82,232, +140, 92, 25, 6,192,155,110,204, 57, 83, 86,252,176, 44,249,225,102,133, 45,231,216,101,117,192,225, 58, 94,135, 76,125, 63,129, +138, 36, 94, 50,237,104,101, 95,225, 90, 29,168, 89,158, 56,186,134,181,142,209,112,192,120, 24,234,143, 79, 61,243, 60,239,123, +247,125,220,113,235, 13,164,137,230,159,254,163, 79,146,101, 41,191,253,251, 15,112,255,253,111,229,225,199,159,197, 8,141, 7, +110, 58,121,140,225, 96,192,159, 61,242,125,214,223,188,202, 75,223,123,153,119,191,237,205, 60,121,246, 69, 30,124, 98,131,119, +221,121, 19,207,189,180,193,191,251,221, 47,242, 75,255,236, 63,241,145, 15,190,147, 27,142,223,130, 83,154,199,158,125,145, 15, +252,212,221,252,212, 91,110,195, 27,207,234,116,192, 39,255,206, 95,161,152, 12,123,199,149,134,227,178, 26,180,230,186,181, 41, +159,255,212, 47,242,137,127,241, 95, 56,189,177,211, 33, 4, 61, 63,158,135,137,206,219,180,142,210,116,207,253,164, 61,132,142, + 97,164,190,182,128,160,159,161, 39,192, 32, 50,192,165, 61,135,162, 34,241, 75, 22,103,179,143, 29,131,233, 24,146,132,233,120, +200,209,188, 64,139,148,161,200, 72, 68,194, 80,101,140, 83, 77, 83, 65, 46,117,104,119, 15, 90, 93,239, 72, 20, 99,108,236,217, + 39, 81, 33,172, 12,159, 1,145, 94,244,240,174,214,221,119,213,203,104,247,143, 63, 58,116, 14, 85, 87,164,234, 50,228,246,222, + 46, 99, 38,218, 82, 56,150,189,209, 53,231,187,237,235, 76,231,192,196,161,173, 37,101, 71,108, 35, 99, 12,100,122,115,246,109, +118,158, 0,149,143, 1, 67,116,136,253, 17, 23,157,244,144,242,109,102, 31, 3,158,180,181, 90, 61,194,163,198,245,130,175, 67, +173, 22, 7,236,108,243,252,246, 89,150,139, 93,140,169, 88,238,237,210,152, 57,179,217,140,186, 90, 50, 95,204, 40, 23, 37,243, +221,146, 81, 42, 56,174, 83,164, 80,172,143, 39,156,222,221,101,146, 36,220,125,114, 21,142, 76, 46, 13, 26,138, 60,156,119,107, +228,132,238,233,174,155,203,103,171,125, 30,123,111,187,118,148,136, 68, 27,171, 99,110, 91, 41, 40, 6, 67,222,113,211, 42, 12, +198,161, 36,175,117, 87, 13, 56, 76, 19,140, 57, 24,144,182, 78,191,125, 77,235,244,219, 86, 71, 99,120,203,104,141,159, 95, 63, +198,199,111,189,149,147,199,215, 33, 31,118,193, 81, 53, 59, 8,116,187, 22,144,234, 37,191,247, 3, 80, 3,231, 78,195, 75,231, + 2,136,206,212, 48,219,220,151,220,188,217,214,220, 87, 20, 76,235,154,220, 58,222, 63,200, 25, 84, 13,105, 83,114, 82, 39,236, +108,189,204,185,237,243, 44, 94, 58, 69, 1,236,149, 21, 94,123, 84,166,216, 43,155,120, 45, 5,140, 50, 22, 66, 83,100, 9,201, +164, 96, 51, 79, 25,175, 76,216,170, 12, 71,167, 35,158, 63,191,195,177,201,144,202, 25,142,142,134, 24, 9,147, 65,202, 22,142, +245, 81,206,217,170,230,136, 82,172, 13, 52,153,214, 92,172, 23,204,141,161,196,211, 72,193, 18, 80, 58, 58,117, 37,225,232, 10, + 20, 43,113,223,246,170,155,182, 93,167, 28,172,192,189,154,205,221,221,185,100, 29,249,150,152, 37, 50, 42,134,178,187, 11,112, + 28,186, 47,219, 24,172, 41,177,187,123,156,186,176,203,119,247, 22,236, 85,134,178, 92, 98,170,134,198, 89, 26, 99,241, 17,232, +156, 41, 69,161, 21,215,105,120,239,100,157, 15, 29,191,142,247,173, 30,229,195,199,142,240,209,147, 39,248,240, 13, 43,232,181, + 53,244,100,138, 42, 70, 40,173,145,135,122,237,175,169,183,174,117,176, 95, 89, 18,190, 15,178, 75, 91,141,175,228,212, 31,125, +234, 57, 30,122,244,251,188,252,216,239,243,245, 47,124, 6,128,175,252,225,159,240,223,190,248,127,120,232, 15, 63,199,217, 39, +254,128, 55,221,118, 35, 31,254,228, 63,166,177,142,251,223,122, 39,223,121,244,233,125,117,173,247,188,237,173, 60,252,248, 51, +216, 44,101,227,145,151,185,254,196, 81,214,166, 35, 30,248,214,211,184,101,197,123,223,121, 23, 15, 60,248, 24,187,231, 23,188, +124,238, 34,127,255, 95,254, 22,255,241,215,126,145,181,233,144,175,255,201, 35,252,155,207,127,153, 47,125,230, 87,152,125,247, +243, 60,244,133,127,197,219,238,186,157,197,238,156, 71,159,122,250,224,113,217, 18,105,106,254,199,175,253, 93,190,240,173,239, +242,229, 63,254,211,168,102,227,130, 97,252,139,210, 23,255, 73,116,230,253, 50,142,141,223, 95,203,163,221,132,182,165,142,245, +193,233,166,209, 0,107, 19,144,239,217, 40, 32,134,135, 9,147,241,132,198, 57,102,198,179,158,165,228, 90,146,107, 73,162, 37, +198,193,106,158, 35, 83,201, 48, 77, 81,168,224,244,234, 72,176,160,211,142,243,189,237,187,245,209,206,251, 13,180, 86,214,245, + 10,216,129,182, 39,217, 58,116,149, 6,128,148,137, 14,101, 95,153, 73,116,217, 67,155, 81,247, 65,106,139,186,235,253,183, 36, + 49,109, 79,189,253,156,195, 34, 1,206, 35,147, 32, 59,140, 80, 93, 95,221, 69, 39,238,251, 65, 71,204,202,219,210,254,254,123, +244,116,231,171, 67, 56,129,125,189, 3,115,153,221,237, 66,255,210,201, 46, 24,242,161, 60,126,238,197,179,188,176,117,129,167, +206,158,226,236,222, 22,167,182,206,227,104,176,214, 35,156, 99,107,107,155,249,206, 54,236,205, 89, 25,229,172,166,176,187, 88, +210,120,137,200, 51,134, 73, 6,131, 60,176, 2,182, 89,152,141, 6,218,197,190,186, 49, 33, 16, 75,210,142, 25,240,138,176, 93, + 25, 89,178,124, 55,151,155, 8,210,241,128,119,140, 10,142,175,142,153, 20, 3,182,208, 28,185,110, 21,198,195,200,129, 32, 59, +103, 77,175,207,223, 86,114,250,173, 45,113, 25,163, 41, 91,125,130,140,159, 57,186,202, 61,199,215,184,107,186,198, 95, 59,121, + 3,156, 88,239, 70, 39,175, 53,240,191,210,244, 73, 31,193, 77, 47, 57,152,109,194,198, 38,108,157, 9,138,143,205,146,251,176, +164,206,163,235,146,235,181,162, 4, 42, 60,198, 4, 85,202,235,211,154,147, 74,162,235,146,205,122,143,239,124,234, 55,209, 79, + 63,204,169, 63,250, 10, 27,139,154, 18,137, 17, 33,192, 44,180,226, 45, 67,197,233, 65, 70, 54,202,208, 90,147,104,205,182, 46, +176,169,102, 52,157,176,181, 51, 35,205,242, 48, 48,130, 96,230, 61,185,144, 44,170,134,235,166, 35,150,120, 42, 15,203,218, 51, + 41, 70, 32, 36, 42, 25, 96, 61,228,105, 78,237, 91,106,228, 81,152,235, 31, 12,186,164,160, 61,215, 42, 78, 32, 44,202,171,179, +217, 87,250,223,120,253,124, 19,197,182,122,253,238, 86, 38,193, 18, 92,133,109, 74,236, 98,201,197,141, 57, 15,238, 46,104,172, +195, 53, 65,246,121,183,174,169,188,223,167, 96, 31,169,132, 99,233, 8,137, 96,162, 83,214,148,226,230,116,200,219, 7, 83,238, +152, 76, 57,186, 58, 64,173, 77, 80, 71, 86,144,147, 41, 34,201,175,158, 93,238, 74, 25,122,154,244, 52, 42,232,212, 18, 95, 97, +162, 73,112,252,253, 63,122, 94,155, 69, 22,176, 22,168,211,159,245,109,203,153,105,129,152, 45, 98, 22,209, 64, 62, 70,148,123, +161,167, 37, 29, 66,167, 97,211,103,145, 48, 35, 11,125,140,208,239, 12,136, 96, 95, 19, 70, 56,204, 28,127,165,136,184,136,139, +165,165, 47,173, 77, 48,106,243,249, 95,156, 83,255,113, 62,218,153,204, 55, 92,126,245,208,226, 41,162, 33, 74, 84, 96,115,107, + 29,133,146, 7, 23,163, 34, 24,221,149, 17,211, 65,129, 18, 9,133,150, 36, 90,177, 57,171, 89,207, 83,246, 26, 67,174, 37, 3, +173, 56, 63, 47, 81, 2,182,182,247,162,179, 43, 3,181,167, 51, 97,196,199, 87, 7,241, 6, 90, 31, 98,155,139,253,244,182,183, + 14, 29,171, 94,214,203,206,145, 29,240,196,212,145,171,254,112, 70, 27,203,228,253, 30,119,159, 80,198, 31, 42,253,249, 30,218, +122,159,253,226, 50,239,215,102,230, 94,116,217, 95,170, 34,133,172,138,200,108,209, 5, 23,165, 9, 1, 78,145,198,207,183, 29, + 18,218,247,112, 2, 45,136, 79,181,206,204,117,199,148,230,112,100, 5,214, 87, 96, 99, 27,206,109,134,247,200,199, 33,203, 30, + 14,201, 82,201, 48, 73,153, 14,114,110, 63,178,206,116, 56, 70,167,197,126,188,180, 53,219,101,148,101, 8, 47,169,109,195,139, +139, 25,152,138,189,114,198,243,155,115,120,121, 35,204,174,215,132,106, 74,191,223,221, 22, 12, 90, 37,189, 43,181,127,218, 94, +188,136, 45,135,181,105, 8, 24, 86, 71,188, 99, 50,230,104,154,146, 8,193,182, 41, 57, 63,175,121,102, 54,131,139,139, 64, 73, +186,108, 66,176, 37,155, 16,116,182,220,217,253,224,175, 45,201,246,217, 65,100,143,200,232,248, 9,238,189,247, 30, 62,122,231, +189, 12, 7, 25,137,183,252,249,185,115,124,229,217, 39,120,225,225,199,187,145,178,107,217,167, 87,218,159,175,244,183,201, 58, +156,188, 14,142, 28,131, 60,225, 29,235, 55,114, 75, 62, 98, 94, 47, 17,163, 9,121,211,176,215, 52, 36, 58, 97, 77, 55,108,205, +106,188,148,252,160,170,168,140,225,133,217, 38, 63,123,253,173,212,214,240,141,147,183,195,168,128, 92,161,156,228, 47, 31,201, + 72,128, 41,138, 29,231,185, 69, 67,179, 91,113,163,114,204,247,150,176, 40, 57, 41, 60,197, 64,161,117,202,233,178, 98, 85,107, +246,202,138,139, 42, 97,108, 13, 47,214,150,220, 90,158,156, 25, 54,202, 57,155,198,162,112,108,224,104,170, 10, 43,193,150,243, +208,174,152,111, 5, 5,205,141,141,208, 54,121,195,230,214, 15, 58,210,195,131, 37,226, 10,207,147,228, 76, 39, 25,239, 93, 25, + 33,178,140,193,104, 72,146, 38, 20, 89,130, 18,112, 68,103,220, 58,200, 89, 69,145, 72, 77,226, 45,206, 90,140,243,156,181,150, +199, 23, 59,252,207,153,161, 90,150, 52,101,131,169, 74,236,238, 46,118,177,196,197,192,194, 95, 11,120, 78,235, 32,222,114,248, +177,104, 58, 59,112,185,216,248,234, 84,218, 6,161, 79, 90,164, 1,244,212, 15, 96,133,128,201, 56, 8, 30,100, 41,194,217, 32, + 56, 80,238, 5, 3,178, 92, 34, 6, 69, 48,164,105,212,252, 43,210, 0,209, 79, 21,190,137, 36,247, 90,194,124, 23,106,139,119, +230,202, 99, 14, 77, 29, 12,126, 93,131,171, 66, 86, 88,215, 63,217, 14,189,149,115,237,143, 22, 93,235,251,136,168,106,181, 63, +198,245, 70,145,202,203,203,252,110, 66,175, 46,139,136,100,221, 91, 8, 58,170,157,173, 79, 32, 77,152,140,135,236, 46,107, 78, +140,135, 56, 43,177,222,113,253,100,202,172,170,152,102, 25, 90,194, 11, 23,247, 56, 62, 44,216, 92,204, 81,105,138, 45,203, 32, +163,153,233, 96, 20,204,188, 19,132,217,111, 90,197,113,168,125, 73, 86,215,161, 84, 90, 66,148,118, 7,181, 4, 45, 42,233, 52, +233, 91,174,116,223,206,136,251,206,240, 15,146,224, 28, 90, 69, 53,111,131,243,108,199,167, 90,128,157,107, 98,134, 44, 59, 56, + 76,235,208,247, 57,217,187,221,156,102,122, 31,196, 19, 2,145, 40,247,218,248,152,193,196, 81, 10, 33,163,206,178,140,215, 32, + 10, 21, 57, 31, 71,158,204, 65,112, 92,219, 94,112,102, 31,100,138,138, 74,109,211, 41,220,124, 34, 74,125,102, 65,128,197,197, +192,107, 92,128, 20,100,121,130, 22,146, 60,209,204,234,134, 92,165,108, 47,150,248,114,201,238,114,155,221,186, 97,103,185,192, + 59, 27,166, 16,133,194, 56,199, 51,198, 96,235,184,239,170,168,142, 6,161, 84,216,202,245, 38,145,219,189,137,162,207, 74,116, + 2, 64,253,241,179, 60,138,240,248,152, 30,217, 48,141,112,239,202,144, 60, 73, 24, 36, 9,169, 20, 88,103,121,100, 89,135,114, +107,227,187, 25,118, 41, 67,139,162, 24,114,252,216,152,108,144, 49, 25, 23,204,151,117,143, 67, 63, 94,119, 41, 46,229,165, 87, +138,217,250, 17,238, 88, 91,195, 57,203,204,122,126,120,113,151, 7,119,183, 97,119,113,237,226, 36,251, 12,145,241, 92, 91,170, +102,231, 94,121,207, 86,203, 48, 29, 50,208,188,115,178, 66,102, 27,134, 69, 74,166, 11,154,122,137,118,142, 65,146,161, 88,128, + 84,228,137, 96, 36,124,160,148, 21,150,243,203, 57,207, 93,120,145,231,245, 48,236, 73, 21,136,126,238, 58, 50,224, 54, 45,169, +149, 66, 11, 72,180, 70, 90,207, 88,193,174,245, 12, 16,172, 38,138,243,165, 33,215,138,212,212,172, 14,114,158,221, 43, 17, 8, + 10, 44,231, 44,220, 48, 74, 57, 83, 89, 18, 91,115,209,131,171, 75,172,144, 84,206, 81, 74, 25, 64,106,182,129,122, 47,234, 31, +208, 85,224, 84, 47,168,205,115, 24, 14, 99,165,204,189, 97,142, 29, 94,129,190,215, 25, 42,231,249,193,174,225,246, 97, 0, 32, +214, 73,144, 85, 94,211, 25, 55, 36, 25, 39,117,193, 68, 41, 20, 30, 37, 53, 74, 40,172, 51, 20, 58,225, 34,142,133,105,216,240, +224,132,199, 91,143, 55, 65,177,212,251,215, 96,155,219, 36,161, 21,154, 82,105,184, 78,166,126,197,247,252,209,157,122,145,199, +186,126,143, 25,171, 53,226,165, 13,243,198, 85, 13, 43,211,160,212, 36, 4, 44,107,196,104, 28,102, 90,179, 12,204, 2,210, 34, + 48, 57, 13,179, 48, 34,162, 85, 88,192, 38,150, 53,119,151, 1, 24, 44,204, 62,225,195,149, 65, 19, 54,114, 2,155,215,117, 81, +188,113, 9,111, 79,145, 75, 69,141,112,119, 13,220,200, 73,218, 25,192,246, 75,218, 55, 72, 44,198, 29,252,106, 3,173, 84,134, +146,115, 58,238,148,197,124,172,182,140,134, 32, 4,147,245, 21,118,231,115,110, 94, 95,197,227, 25,232,148, 65,146,114,113, 49, +103,109, 56,194,216,154,221,202,114,124,148,179, 93, 86, 12,179, 1,187, 59,123,241, 60,124,152,187, 54, 54,124,206,229,164, 68, +219,185,242,253, 67,213, 93, 54, 46, 98,159, 91,197, 56,164,157,245,222, 47,195,139,176,230, 90, 39, 47, 85,199,183,110, 76, 48, + 7,125,153, 84,227, 58, 96,157,111,117,225,117,156,213,238,197,254, 42, 58,226, 86,113, 45,254, 45,149, 2, 97, 5, 77,210,211, + 65, 87, 50, 42,210,133, 49,164, 64, 48, 97,195, 57,232, 52,140,243,101, 42,102,159,177,175,223,148,221,235, 91,250,217, 42,114, + 34,168,168, 18,167, 68, 24, 41,116, 4,228,113,166,194,154,217,153,195,133,205,240,247,100, 16,240, 11, 66, 34,149,100,154,165, + 8, 41, 81, 30,230,165,101,105, 44,139,170, 34,145,150,185,245,140,210,130,109,107, 80, 94,112,186,169, 56,101, 12,179,114, 25, + 69, 86, 8, 76,125,109,121,164,142,247,107,237, 72,192, 84, 20, 69,200,166,155, 42, 56, 42, 23,181, 0,250,247,180,229,249,111, +133,125,108, 0, 89,222,180, 58,224,142,213, 53,206, 47, 43,156, 16,236, 52,134,211,243, 24, 72, 72,122,220,247, 81, 63, 32,211, + 92,159,107,132,240,140,132, 98, 92,164,236,236, 45,123,169, 89,116,230,206,119, 14,190,105,192, 89,154, 44,229,251, 77, 77,229, + 36,207,205, 22,124,115,111, 23,202, 89, 0,209,205,103,215,150,165,247, 57,187, 47, 55, 39,191,223, 2,184, 12, 71,254,124, 15, +138, 49,119,175,228,220, 62, 24,240,131, 89,197,117,131,132,188,200,152, 59, 24,102,161, 68, 60,175, 96, 42, 44,210,129,161,100, +111, 89,114,174,169,195, 53, 58,127, 38, 36, 86,107, 55, 66,174,201,135, 25,133,150, 20, 94,160, 19,205,208, 5, 85,205, 60,211, + 12,133, 96, 69,194,142,177,172, 42,193, 29, 69,202, 98,144,243,204,214,140, 34, 21,204,235,134,179,198,225,157,227,133,237, 6, +211, 24, 54, 81, 24,215,176, 52, 22, 47,192, 72, 69,105,130,176, 77, 24, 71,109, 66, 16,218, 52,145,175,192, 68,129, 39, 17,240, + 10, 39,142,194,209,181, 80,117,157,207,223, 16,199,206, 43, 56,246,253,255,183, 22, 33, 28,167,140, 99, 61,209, 24, 37,113, 89, +202, 20,152, 74,184,115, 56, 33,149,138, 84,166,193,138, 75, 17,228,152,113, 92,108,106, 94, 50, 53,231,230, 53, 30, 17, 50,115, +169,194,169, 84, 21,190,119, 78, 87, 45,248, 34,130, 28,113,128,135, 68,190,247, 87,146, 85,190, 42,167,222, 26,149,150,168, 67, + 39,225,103,103, 2, 73,135,245, 1,165, 58, 43, 59, 69,170, 52, 82, 58,166, 42, 46,218,144,229,137, 36,137,253,207,208, 51,244, +139, 38,100,127,101, 21,141,150, 11, 11,242,255,167,135,212,189,122,143,132,213, 81, 88,228,230, 26,130,145, 86,116,164, 37, 65, +241,213,143,183,159,223,206, 9,103, 89,212, 59,142, 37,229, 36, 13, 64, 14, 31,130,189, 10,207,104, 52, 36, 85, 10, 45, 53, 74, + 72, 36,154,181, 98, 72,109, 29,169, 76,200, 82, 21,199, 72, 36,103,103,243,208, 15,171,203, 64,202,177,220, 5, 83, 94, 89, 66, +183, 37, 29,145, 34,244,166,181, 11,142, 93, 69,176, 98, 75, 12,228,125, 68,163,139,224,136,219, 44,218, 69,118,166,118,228, 75, +244,230,210,114, 29,202,223,202,119, 78,189,149,106,109,203,246,222, 29,252,210, 73, 20, 51,105,131,135, 46,234,178, 94, 96,165, + 36,181, 2,219,174,131, 50,182,161, 92, 79, 70, 54,213,225, 90,250, 38,204,205,187, 56, 14,103, 77,112,238,194, 7, 39,174,162, +243,107,127,110, 57, 19, 68,196, 61,180,206,171,137,125,238, 11, 51,216,190, 16,202,212, 74, 69,117, 60, 9, 69,130, 18, 18,131, + 64, 10,129,147,138,185,109,216, 90,214,156,218,217,226,166, 66, 49, 78, 20,149,113,148, 30,206, 88,195, 15, 76,197,178,149, 88, +141, 28,219, 44,102, 33, 16, 49,182,203,208,215, 87,187,192,102,217,132, 64,208,154, 46, 16,235,103,203,237,189,212,145,134,209, + 25,152, 55,156,105, 28,199, 82,203, 36,149, 92, 40,151, 60, 52, 43,195, 76, 62,190,107, 61,168, 46, 80,155, 38,146, 81, 34, 24, + 9, 65,130,160,178,134,157, 89,117,176, 18, 35,123, 32,196,182,157, 99, 45, 88, 65,157, 8, 94,172,150,156, 41,103,161,159,189, +172, 96,119, 30,214,228,213,238,211,214,145,183,194, 54,237,115,135, 51,246,125,114, 35, 46, 11,252,212, 3, 69,170, 37,119, 23, + 3,102,214,145,227,200,165, 68, 9,129,104, 12,235,153, 10, 36,135, 77,195,102, 99,120,112,231, 34, 44,103,241, 61, 93, 8, 60, +117,134,212, 5,199,134, 33, 33,184,113,152,147,106,129,208,146, 65, 34, 25, 72,193, 64, 8,106,235,185,176,177,160,180, 13,207, + 45, 97,167, 41,169, 61,236, 44, 13, 59,149,167, 49,112,174, 10,231,176,144, 32,241, 36, 54,136, 62, 13,156,197,154,134, 25, 1, + 48,233, 77, 29, 70, 94,157, 13,142,168,172, 67,229,109,177, 8,235,120, 50,134, 19,235,100,227, 34, 76, 46, 45,203,215,117,156, + 87, 92,133,179, 23,128,116, 14, 89,213,108,204, 74, 46, 84,158, 90, 8, 94,150,154, 60,151,172, 24,199,245,197,132, 34, 73, 16, +206, 82,232, 20, 39, 37,167,151,115, 78,217,154,239,206, 27, 42, 37,176,198,225,165,192,213, 53,190,113,120,107,240,175,133, 68, +204, 69,208,168, 45, 59, 33,151, 87,121,252, 63,200,142,135, 98, 79, 39, 83, 45, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index 28a54b20277..169443d855f 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -1615,7 +1615,12 @@ static int gpencil_area_exists(bContext *C, ScrArea *satest) static int gpencil_draw_modal (bContext *C, wmOperator *op, wmEvent *event) { tGPsdata *p= op->customdata; - int estate = OPERATOR_PASS_THROUGH; /* default exit state - not handled, so let others have a share of the pie */ + //int estate = OPERATOR_PASS_THROUGH; /* default exit state - not handled, so let others have a share of the pie */ + /* currently, grease pencil conflicts with such operators as undo and set object mode + which makes behavior of operator totally unpredictable and crash for some cases. + the only way to solve this proper is to ger rid of pointers to data which can + chage stored in operator custom data (sergey) */ + int estate = OPERATOR_RUNNING_MODAL; // if (event->type == NDOF_MOTION) // return OPERATOR_PASS_THROUGH; @@ -1722,13 +1727,18 @@ static int gpencil_draw_modal (bContext *C, wmOperator *op, wmEvent *event) /* standard undo/redo shouldn't be allowed to execute or else it causes crashes, so catch it here */ // FIXME: this is a hardcoded hotkey that can't be changed // TODO: catch redo as well, but how? - if (event->type == ZKEY) { + if (event->type == ZKEY && event->val == KM_RELEASE) { /* oskey = cmd key on macs as they seem to use cmd-z for undo as well? */ if ((event->ctrl) || (event->oskey)) { /* just delete last stroke, which will look like undo to the end user */ //printf("caught attempted undo event... deleting last stroke \n"); gpencil_frame_delete_laststroke(p->gpl, p->gpf); - + /* undoing the last line can free p->gpf + * note, could do this in a bit more of an elegant way then a search but it at least prevents a crash */ + if(BLI_findindex(&p->gpl->frames, p->gpf) == -1) { + p->gpf= NULL; + } + /* event handled, so force refresh */ ED_region_tag_redraw(p->ar); /* just active area for now, since doing whole screen is too slow */ estate = OPERATOR_RUNNING_MODAL; diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 28d0a9520b2..c646ec55506 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -108,7 +108,7 @@ int ED_object_add_generic_get_opts(struct bContext *C, struct wmOperator *op, fl struct Object *ED_object_add_type(struct bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer); void ED_object_single_users(struct Main *bmain, struct Scene *scene, int full); - +void ED_object_single_user(struct Scene *scene, struct Object *ob); /* object motion paths */ void ED_objects_clear_paths(struct bContext *C); diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 9b47e103f29..c7a1d860a63 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -214,7 +214,7 @@ struct uiBut { BIFIconID icon; char lock; - char dt; + char dt; /* drawtype: UI_EMBOSS, UI_EMBOSSN ... etc, copied from the block */ char changed; /* could be made into a single flag */ unsigned char unit_type; /* so buttons can support unit systems which are not RNA */ short modifier_key; @@ -307,7 +307,8 @@ struct uiBlock { void *drawextra_arg2; int flag; - char direction, dt; + char direction; + char dt; /* drawtype: UI_EMBOSS, UI_EMBOSSN ... etc, copied to buttons */ short auto_open; double auto_open_last; diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 85cc944f03b..4810b3fdf54 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -367,7 +367,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in unit= UI_UNIT_X*0.75; butw= unit; buth= unit; - + if(ptr->type == &RNA_Armature) { bArmature *arm= (bArmature *)ptr->data; layer_used= arm->layer_used; @@ -379,7 +379,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in for(a=0; aroot->block->dt, UI_EMBOSSN, UI_EMBOSSP)) { + boolarr= MEM_callocN(sizeof(int)*len, "ui_item_array"); + RNA_property_boolean_get_array(ptr, prop, boolarr); + } for(a=0; atype==NUM) but->type= NUMSLI; if(toggle && but->type==OPTION) but->type= TOG; } + + if(boolarr) { + MEM_freeN(boolarr); + } } } @@ -951,13 +962,14 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index uiBut *but; PropertyType type; char namestr[UI_MAX_NAME_STR]; - int len, w, h, slider, toggle, expand, icon_only, no_bg; + int len, is_array, w, h, slider, toggle, expand, icon_only, no_bg; uiBlockSetCurLayout(block, layout); /* retrieve info */ type= RNA_property_type(prop); - len= RNA_property_array_length(ptr, prop); + is_array= RNA_property_array_check(prop); + len= (is_array) ? RNA_property_array_length(ptr, prop) : 0; /* set name and icon */ if(!name) @@ -967,14 +979,16 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index if(ELEM4(type, PROP_INT, PROP_FLOAT, PROP_STRING, PROP_POINTER)) name= ui_item_name_add_colon(name, namestr); - else if(type == PROP_BOOLEAN && len && index == RNA_NO_INDEX) + else if(type == PROP_BOOLEAN && is_array && index == RNA_NO_INDEX) name= ui_item_name_add_colon(name, namestr); else if(type == PROP_ENUM && index != RNA_ENUM_VALUE) name= ui_item_name_add_colon(name, namestr); if(layout->root->type == UI_LAYOUT_MENU) { - if(type == PROP_BOOLEAN) - icon= (RNA_property_boolean_get(ptr, prop))? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT; + if(type == PROP_BOOLEAN && ((is_array == FALSE) || (index != RNA_NO_INDEX))) { + if(is_array) icon= (RNA_property_boolean_get_index(ptr, prop, index)) ? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT; + else icon= (RNA_property_boolean_get(ptr, prop)) ? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT; + } else if(type == PROP_ENUM && index == RNA_ENUM_VALUE) { int enum_value= RNA_property_enum_get(ptr, prop); if(RNA_property_flag(prop) & PROP_ENUM_FLAG) { @@ -999,7 +1013,7 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index uiBlockSetEmboss(block, UI_EMBOSSN); /* array property */ - if(index == RNA_NO_INDEX && len > 0) + if(index == RNA_NO_INDEX && is_array) ui_item_array(layout, block, name, icon, ptr, prop, len, 0, 0, w, h, expand, slider, toggle, icon_only); /* enum item */ else if(type == PROP_ENUM && index == RNA_ENUM_VALUE) { @@ -2745,6 +2759,25 @@ void uiLayoutOperatorButs(const bContext *C, uiLayout *layout, wmOperator *op,in uiItemL(layout, "* Redo Unsupported *", ICON_NONE); // XXX, could give some nicer feedback or not show redo panel at all? } + /* menu */ + if(op->type->flag & OPTYPE_PRESET) { + /* XXX, no simple way to get WM_MT_operator_presets.bl_label from python! Label remains the same always! */ + PointerRNA op_ptr; + uiLayout *row; + + row= uiLayoutRow(layout, TRUE); + uiItemM(row, (bContext *)C, "WM_MT_operator_presets", NULL, ICON_NONE); + + WM_operator_properties_create(&op_ptr, "WM_OT_operator_preset_add"); + RNA_string_set(&op_ptr, "operator", op->type->idname); + op_ptr= uiItemFullO(row, "WM_OT_operator_preset_add", "", ICON_ZOOMIN, op_ptr.data, WM_OP_INVOKE_DEFAULT, 0); + + WM_operator_properties_create(&op_ptr, "WM_OT_operator_preset_add"); + RNA_string_set(&op_ptr, "operator", op->type->idname); + RNA_boolean_set(&op_ptr, "remove_active", 1); + op_ptr= uiItemFullO(row, "WM_OT_operator_preset_add", "", ICON_ZOOMOUT, op_ptr.data, WM_OP_INVOKE_DEFAULT, 0); + } + if(op->type->ui) { op->layout= layout; op->type->ui((bContext*)C, op); @@ -2759,25 +2792,6 @@ void uiLayoutOperatorButs(const bContext *C, uiLayout *layout, wmOperator *op,in RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr); - /* menu */ - if(op->type->flag & OPTYPE_PRESET) { - /* XXX, no simple way to get WM_MT_operator_presets.bl_label from python! Label remains the same always! */ - PointerRNA op_ptr; - uiLayout *row; - - row= uiLayoutRow(layout, TRUE); - uiItemM(row, (bContext *)C, "WM_MT_operator_presets", NULL, ICON_NONE); - - WM_operator_properties_create(&op_ptr, "WM_OT_operator_preset_add"); - RNA_string_set(&op_ptr, "operator", op->type->idname); - op_ptr= uiItemFullO(row, "WM_OT_operator_preset_add", "", ICON_ZOOMIN, op_ptr.data, WM_OP_INVOKE_DEFAULT, 0); - - WM_operator_properties_create(&op_ptr, "WM_OT_operator_preset_add"); - RNA_string_set(&op_ptr, "operator", op->type->idname); - RNA_boolean_set(&op_ptr, "remove_active", 1); - op_ptr= uiItemFullO(row, "WM_OT_operator_preset_add", "", ICON_ZOOMOUT, op_ptr.data, WM_OP_INVOKE_DEFAULT, 0); - } - /* main draw call */ empty= uiDefAutoButsRNA(layout, &ptr, check_prop, label_align) == 0; diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index f7460e77030..8bce27e366b 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1188,7 +1188,7 @@ static void ui_block_position(wmWindow *window, ARegion *butregion, uiBut *but, uiBut *bt; uiSafetyRct *saferct; rctf butrct; - float aspect; + /*float aspect;*/ /*UNUSED*/ int xsize, ysize, xof=0, yof=0, center; short dir1= 0, dir2=0; @@ -1223,7 +1223,7 @@ static void ui_block_position(wmWindow *window, ARegion *butregion, uiBut *but, } } - aspect= (float)(block->maxx - block->minx + 4); + /*aspect= (float)(block->maxx - block->minx + 4);*/ /*UNUSED*/ ui_block_to_window_fl(butregion, but->block, &block->minx, &block->miny); ui_block_to_window_fl(butregion, but->block, &block->maxx, &block->maxy); @@ -1232,7 +1232,7 @@ static void ui_block_position(wmWindow *window, ARegion *butregion, uiBut *but, xsize= block->maxx - block->minx+4; // 4 for shadow ysize= block->maxy - block->miny+4; - aspect/= (float)xsize; + /*aspect/= (float)xsize;*/ /*UNUSED*/ if(but) { int left=0, right=0, top=0, down=0; diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 0f5bc5479a0..690d0fe4d6b 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -39,6 +39,7 @@ #include "BLI_string.h" #include "BLI_utildefines.h" +#include "BLI_ghash.h" #include "BKE_animsys.h" #include "BKE_colortools.h" @@ -53,6 +54,7 @@ #include "BKE_displist.h" #include "ED_screen.h" +#include "ED_object.h" #include "ED_render.h" #include "RNA_access.h" @@ -275,18 +277,28 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event) break; case UI_ID_ALONE: if(id) { - /* make copy */ - if(id_copy(id, &newid, 0) && newid) { - /* copy animation actions too */ - BKE_copy_animdata_id_action(id); - /* us is 1 by convention, but RNA_property_pointer_set - will also incremement it, so set it to zero */ - newid->us= 0; + const int do_scene_obj= (GS(id->name) == ID_OB) && + (template->ptr.type == &RNA_SceneObjects); - /* assign copy */ - RNA_id_pointer_create(newid, &idptr); - RNA_property_pointer_set(&template->ptr, template->prop, idptr); - RNA_property_update(C, &template->ptr, template->prop); + /* make copy */ + if(do_scene_obj) { + Scene *scene= CTX_data_scene(C); + ED_object_single_user(scene, (struct Object *)id); + WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); + } + else { + if(id_copy(id, &newid, 0) && newid) { + /* copy animation actions too */ + BKE_copy_animdata_id_action(id); + /* us is 1 by convention, but RNA_property_pointer_set + will also incremement it, so set it to zero */ + newid->us= 0; + + /* assign copy */ + RNA_id_pointer_create(newid, &idptr); + RNA_property_pointer_set(&template->ptr, template->prop, idptr); + RNA_property_update(C, &template->ptr, template->prop); + } } } break; @@ -404,10 +416,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str sprintf(str, "%d", id->us); - if(id->us<10) - but= uiDefBut(block, BUT, 0, str, 0,0,UI_UNIT_X,UI_UNIT_Y, NULL, 0, 0, 0, 0, "Displays number of users of this data. Click to make a single-user copy."); - else - but= uiDefBut(block, BUT, 0, str, 0,0,UI_UNIT_X+10,UI_UNIT_Y, NULL, 0, 0, 0, 0, "Displays number of users of this data. Click to make a single-user copy."); + but= uiDefBut(block, BUT, 0, str, 0,0,UI_UNIT_X + ((id->us < 10) ? 0:10), UI_UNIT_Y, NULL, 0, 0, 0, 0, "Displays number of users of this data. Click to make a single-user copy."); uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ALONE)); if(!id_copy(id, NULL, 1 /* test only */) || (idfrom && idfrom->lib) || !editable) @@ -2107,7 +2116,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe } else if(itemptr->type == &RNA_ShapeKey) { Object *ob= (Object*)activeptr->data; - Key *key= (Key*)itemptr->data; + Key *key= (Key*)itemptr->id.data; split= uiLayoutSplit(sub, 0.75f, 0); @@ -2319,10 +2328,11 @@ static void operator_call_cb(bContext *C, void *UNUSED(arg1), void *arg2) static void operator_search_cb(const bContext *C, void *UNUSED(arg), const char *str, uiSearchItems *items) { - wmOperatorType *ot = WM_operatortype_first(); - - for(; ot; ot= ot->next) { - + GHashIterator *iter= WM_operatortype_iter(); + + for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) { + wmOperatorType *ot= BLI_ghashIterator_getValue(iter); + if(BLI_strcasestr(ot->name, str)) { if(WM_operator_poll((bContext*)C, ot)) { char name[256]; @@ -2342,6 +2352,7 @@ static void operator_search_cb(const bContext *C, void *UNUSED(arg), const char } } } + BLI_ghashIterator_free(iter); } void uiTemplateOperatorSearch(uiLayout *layout) diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index f660dbb9edd..a3f56192cb5 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -143,7 +143,7 @@ int uiDefAutoButsRNA(uiLayout *layout, PointerRNA *ptr, int (*check_prop)(Proper if(label_align != '\0') { PropertyType type = RNA_property_type(prop); - int is_boolean = (type == PROP_BOOLEAN && !RNA_property_array_check(ptr, prop)); + int is_boolean = (type == PROP_BOOLEAN && !RNA_property_array_check(prop)); name= RNA_property_ui_name(prop); diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index f3db6ad11ae..e71f709f89b 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1557,7 +1557,7 @@ void init_userdef_do_versions(void) U.autokey_flag &= ~AUTOKEY_FLAG_ONLYKEYINGSET; } - if (bmain->versionfile < 258 || (bmain->versionfile == 258 && bmain->subversionfile < 1)) { + if (bmain->versionfile < 258 || (bmain->versionfile == 258 && bmain->subversionfile < 2)) { bTheme *btheme; for(btheme= U.themes.first; btheme; btheme= btheme->next) { btheme->tnode.noodle_curving = 5; diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index ec08bfccda3..4377fb03632 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -1449,9 +1449,8 @@ static int mesh_separate_material(wmOperator *op, Main *bmain, Scene *scene, Bas /* select the material */ EM_select_by_material(em, curr_mat); /* and now separate */ - if(0==mesh_separate_selected(op, bmain, scene, editbase)) { - BKE_mesh_end_editmesh(me, em); - return 0; + if(em->totfacesel > 0) { + mesh_separate_selected(op, bmain, scene, editbase); } } diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 9497370a4fa..eb6854d2548 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -1697,7 +1697,7 @@ void EM_mesh_copy_face_layer(EditMesh *em, wmOperator *op, short type) /* ctrl+c in mesh editmode */ -static void mesh_copy_menu(EditMesh *em, wmOperator *op) +static void UNUSED_FUNCTION(mesh_copy_menu)(EditMesh *em, wmOperator *op) { EditSelection *ese; int ret; diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index bfae101d38e..9ff2923f733 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -3895,7 +3895,7 @@ void MESH_OT_edge_rotate(wmOperatorType *ot) /* XXX old bevel not ported yet */ -static void bevel_menu(EditMesh *em) +static void UNUSED_FUNCTION(bevel_menu)(EditMesh *em) { BME_Mesh *bm; BME_TransData_Head *td; diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index fdb1b9dc549..2e44d4031c8 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -183,7 +183,7 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) } RNA_def_float_vector_xyz(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object", -FLT_MAX, FLT_MAX); - RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); + RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -M_PI * 2.0f, M_PI * 2.0f); prop = RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", ""); RNA_def_property_flag(prop, PROP_HIDDEN); diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 142c849eb7b..f0d1164f951 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -723,7 +723,7 @@ static void spot_interactive(Object *ob, int mode) } #endif -static void special_editmenu(Scene *scene, View3D *v3d) +static void UNUSED_FUNCTION(special_editmenu)(Scene *scene, View3D *v3d) { // XXX static short numcuts= 2; Object *ob= OBACT; @@ -1345,7 +1345,7 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event) DAG_ids_flush_update(bmain, 0); } -static void copy_attr_menu(Main *bmain, Scene *scene, View3D *v3d) +static void UNUSED_FUNCTION(copy_attr_menu)(Main *bmain, Scene *scene, View3D *v3d) { Object *ob; short event; @@ -1618,7 +1618,7 @@ void OBJECT_OT_shade_smooth(wmOperatorType *ot) /* ********************** */ -static void image_aspect(Scene *scene, View3D *v3d) +static void UNUSED_FUNCTION(image_aspect)(Scene *scene, View3D *v3d) { /* all selected objects with an image map: scale in image aspect */ Base *base; @@ -1693,7 +1693,7 @@ static int vergbaseco(const void *a1, const void *a2) } -static void auto_timeoffs(Scene *scene, View3D *v3d) +static void UNUSED_FUNCTION(auto_timeoffs)(Scene *scene, View3D *v3d) { Base *base, **basesort, **bs; float start, delta; @@ -1734,7 +1734,7 @@ static void auto_timeoffs(Scene *scene, View3D *v3d) } -static void ofs_timeoffs(Scene *scene, View3D *v3d) +static void UNUSED_FUNCTION(ofs_timeoffs)(Scene *scene, View3D *v3d) { float offset=0.0f; @@ -1753,7 +1753,7 @@ static void ofs_timeoffs(Scene *scene, View3D *v3d) } -static void rand_timeoffs(Scene *scene, View3D *v3d) +static void UNUSED_FUNCTION(rand_timeoffs)(Scene *scene, View3D *v3d) { Base *base; float rand_ofs=0.0f; diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 0fb7cf8b640..225e6e73563 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1402,6 +1402,20 @@ static void single_object_users(Scene *scene, View3D *v3d, int flag) set_sca_new_poins(); } +/* not an especially efficient function, only added so the single user + * button can be functional.*/ +void ED_object_single_user(Scene *scene, Object *ob) +{ + Base *base; + + for(base= FIRSTBASE; base; base= base->next) { + if(base->object == ob) base->flag |= OB_DONE; + else base->flag &= ~OB_DONE; + } + + single_object_users(scene, NULL, OB_DONE); +} + static void new_id_matar(Material **matar, int totcol) { ID *id; diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c index 6548bdb37a9..8910f101b01 100644 --- a/source/blender/editors/render/render_update.c +++ b/source/blender/editors/render/render_update.c @@ -60,6 +60,7 @@ #include "RE_engine.h" +#include "ED_node.h" #include "ED_render.h" #include "render_intern.h" // own include @@ -214,6 +215,8 @@ static void texture_changed(Main *bmain, Tex *tex) Material *ma; Lamp *la; World *wo; + Scene *scene; + bNode *node; /* icons */ BKE_icon_changed(BKE_icon_getid(&tex->id)); @@ -247,6 +250,16 @@ static void texture_changed(Main *bmain, Tex *tex) BKE_icon_changed(BKE_icon_getid(&wo->id)); } + + /* find compositing nodes */ + for(scene=bmain->scene.first; scene; scene=scene->id.next) { + if(scene->use_nodes && scene->nodetree) { + for(node=scene->nodetree->nodes.first; node; node=node->next) { + if(node->id == &tex->id) + ED_node_changed_update(&scene->id, node); + } + } + } } static void lamp_changed(Main *bmain, Lamp *la) diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c index 3effea296d7..4707baa279b 100644 --- a/source/blender/editors/space_console/console_ops.c +++ b/source/blender/editors/space_console/console_ops.c @@ -675,7 +675,12 @@ static int scrollback_append_exec(bContext *C, wmOperator *op) console_scrollback_limit(sc); - console_textview_update_rect(sc, ar); + /* 'ar' can be null depending on the operator that runs + * rendering with invoke default for eg causes this */ + if(ar) { + console_textview_update_rect(sc, ar); + } + ED_area_tag_redraw(CTX_wm_area(C)); return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index d4253495e97..4dd97c63d40 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -1159,6 +1159,13 @@ int file_filename_exec(bContext *C, wmOperator *UNUSED(unused)) return OPERATOR_FINISHED; } +/* TODO, directory operator is non-functional while a library is loaded + * until this is properly supported just disable it. */ +static int file_directory_poll(bContext *C) +{ + return ED_operator_file_active(C) && filelist_lib(CTX_wm_space_file(C)->files) == NULL; +} + void FILE_OT_directory(struct wmOperatorType *ot) { /* identifiers */ @@ -1169,7 +1176,7 @@ void FILE_OT_directory(struct wmOperatorType *ot) /* api callbacks */ ot->invoke= file_directory_invoke; ot->exec= file_directory_exec; - ot->poll= ED_operator_file_active; /* <- important, handler is on window level */ + ot->poll= file_directory_poll; /* <- important, handler is on window level */ } void FILE_OT_refresh(struct wmOperatorType *ot) diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 6736230e84f..d8be312cf39 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -602,28 +602,6 @@ short filelist_changed(struct FileList* filelist) return filelist->changed; } -static struct ImBuf * filelist_loadimage(struct FileList* filelist, int index) -{ - ImBuf *imb = NULL; - int fidx = 0; - - if ( (index < 0) || (index >= filelist->numfiltered) ) { - return NULL; - } - fidx = filelist->fidx[index]; - imb = filelist->filelist[fidx].image; - if (!imb) - { - if ( (filelist->filelist[fidx].flags & IMAGEFILE) || (filelist->filelist[fidx].flags & MOVIEFILE) ) { - imb = IMB_thumb_read(filelist->filelist[fidx].path, THB_NORMAL); - } - if (imb) { - filelist->filelist[fidx].image = imb; - } - } - return imb; -} - struct ImBuf * filelist_getimage(struct FileList* filelist, int index) { ImBuf* ibuf = NULL; diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c index 77c91b28a63..af99087b0b8 100644 --- a/source/blender/editors/space_nla/nla_edit.c +++ b/source/blender/editors/space_nla/nla_edit.c @@ -951,7 +951,7 @@ static int nlaedit_bake_exec (bContext *C, wmOperator *UNUSED(op)) return OPERATOR_FINISHED; } -static void NLA_OT_bake (wmOperatorType *ot) +void NLA_OT_bake (wmOperatorType *ot) { /* identifiers */ ot->name= "Bake Strips"; diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 848b037e1cb..274983fd316 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -1703,7 +1703,7 @@ void NODE_OT_link_viewer(wmOperatorType *ot) /* return 0, nothing done */ -static int node_mouse_groupheader(SpaceNode *snode) +static int UNUSED_FUNCTION(node_mouse_groupheader)(SpaceNode *snode) { bNode *gnode; float mx=0, my=0; @@ -2018,7 +2018,7 @@ void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace) } /* can be called from menus too, but they should do own undopush and redraws */ -bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float locy) +bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, int type, float locx, float locy) { bNode *node= NULL, *gnode; @@ -2033,7 +2033,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float return NULL; } else { - bNodeTree *ngroup= BLI_findlink(&G.main->nodetree, type-NODE_GROUP_MENU); + bNodeTree *ngroup= BLI_findlink(&bmain->nodetree, type-NODE_GROUP_MENU); if(ngroup) node= nodeAddNodeType(snode->edittree, NODE_GROUP, ngroup, NULL); } @@ -2054,7 +2054,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float } node_tree_verify_groups(snode->nodetree); - ED_node_set_active(G.main, snode->edittree, node); + ED_node_set_active(bmain, snode->edittree, node); if(snode->nodetree->type==NTREE_COMPOSIT) { if(ELEM4(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS, CMP_NODE_OUTPUT_FILE)) @@ -3069,10 +3069,10 @@ static int node_mute_exec(bContext *C, wmOperator *UNUSED(op)) for(node= snode->edittree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { - if(node->inputs.first && node->outputs.first) { + /* Be able to mute in-/output nodes as well. - DingTo + if(node->inputs.first && node->outputs.first) { */ node->flag ^= NODE_MUTED; snode_tag_changed(snode, node); - } } } @@ -3283,6 +3283,7 @@ void NODE_OT_show_cyclic_dependencies(wmOperatorType *ot) static int node_add_file_exec(bContext *C, wmOperator *op) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); SpaceNode *snode= CTX_wm_space_node(C); bNode *node; @@ -3323,7 +3324,7 @@ static int node_add_file_exec(bContext *C, wmOperator *op) ED_preview_kill_jobs(C); - node = node_add_node(snode, scene, ntype, snode->mx, snode->my); + node = node_add_node(snode, bmain, scene, ntype, snode->mx, snode->my); if (!node) { BKE_report(op->reports, RPT_WARNING, "Could not add an image node."); diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c index 15b1847ecf1..9f1029d58a0 100644 --- a/source/blender/editors/space_node/node_header.c +++ b/source/blender/editors/space_node/node_header.c @@ -64,6 +64,8 @@ static void do_node_add(bContext *C, void *UNUSED(arg), int event) { + Main *bmain= CTX_data_main(C); + Scene *scene= CTX_data_scene(C); SpaceNode *snode= CTX_wm_space_node(C); ScrArea *sa= CTX_wm_area(C); ARegion *ar; @@ -87,7 +89,7 @@ static void do_node_add(bContext *C, void *UNUSED(arg), int event) else node->flag &= ~NODE_TEST; } - node= node_add_node(snode, CTX_data_scene(C), event, snode->mx, snode->my); + node= node_add_node(snode, bmain, scene, event, snode->mx, snode->my); /* select previous selection before autoconnect */ for(node= snode->edittree->nodes.first; node; node= node->next) { diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h index d30322d469f..2939676d051 100644 --- a/source/blender/editors/space_node/node_intern.h +++ b/source/blender/editors/space_node/node_intern.h @@ -43,6 +43,7 @@ struct wmWindowManager; struct bNode; struct bNodeSocket; struct bNodeLink; +struct Main; /* temp data to pass on to modal */ typedef struct bNodeLinkDrag @@ -97,7 +98,7 @@ void node_tree_from_ID(ID *id, bNodeTree **ntree, bNodeTree **edittree, int *tre void snode_notify(bContext *C, SpaceNode *snode); void snode_dag_update(bContext *C, SpaceNode *snode); bNode *next_node(bNodeTree *ntree); -bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float locy); +bNode *node_add_node(SpaceNode *snode, struct Main *bmain, Scene *scene, int type, float locx, float locy); void snode_set_context(SpaceNode *snode, Scene *scene); void snode_make_group_editable(SpaceNode *snode, bNode *gnode); void node_deselectall(SpaceNode *snode); diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 857405aff4e..c76f4d1ef36 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -38,6 +38,7 @@ #include "BKE_context.h" #include "BKE_global.h" +#include "BKE_main.h" #include "BLI_rect.h" #include "BLI_utildefines.h" @@ -72,7 +73,7 @@ static bNode *node_under_mouse(bNodeTree *ntree, int mx, int my) /* ****** Click Select ****** */ -static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2], short extend) +static bNode *node_mouse_select(Main *bmain, SpaceNode *snode, ARegion *ar, const int mval[2], short extend) { bNode *node; float mx, my; @@ -94,7 +95,7 @@ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2] else node->flag ^= SELECT; - ED_node_set_active(G.main, snode->edittree, node); + ED_node_set_active(bmain, snode->edittree, node); } return node; @@ -102,6 +103,7 @@ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2] static int node_select_exec(bContext *C, wmOperator *op) { + Main *bmain= CTX_data_main(C); SpaceNode *snode= CTX_wm_space_node(C); ARegion *ar= CTX_wm_region(C); int mval[2]; @@ -115,7 +117,7 @@ static int node_select_exec(bContext *C, wmOperator *op) extend = RNA_boolean_get(op->ptr, "extend"); /* perform the select */ - node= node_mouse_select(snode, ar, mval, extend); + node= node_mouse_select(bmain, snode, ar, mval, extend); /* send notifiers */ WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); diff --git a/source/blender/editors/space_outliner/CMakeLists.txt b/source/blender/editors/space_outliner/CMakeLists.txt index 4194d463e10..d969a80a678 100644 --- a/source/blender/editors/space_outliner/CMakeLists.txt +++ b/source/blender/editors/space_outliner/CMakeLists.txt @@ -37,8 +37,12 @@ set(INC_SYS ) set(SRC - outliner.c + outliner_draw.c + outliner_edit.c outliner_ops.c + outliner_select.c + outliner_tools.c + outliner_tree.c space_outliner.c outliner_intern.h diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c deleted file mode 100644 index 93dc96cf9c0..00000000000 --- a/source/blender/editors/space_outliner/outliner.c +++ /dev/null @@ -1,5792 +0,0 @@ -/* - * $Id$ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2004 Blender Foundation. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file blender/editors/space_outliner/outliner.c - * \ingroup spoutliner - */ - - -#include -#include -#include -#include - -#include "MEM_guardedalloc.h" - -#include "DNA_anim_types.h" -#include "DNA_armature_types.h" -#include "DNA_constraint_types.h" -#include "DNA_camera_types.h" -#include "DNA_group_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meta_types.h" -#include "DNA_particle_types.h" -#include "DNA_scene_types.h" -#include "DNA_world_types.h" -#include "DNA_sequence_types.h" -#include "DNA_object_types.h" - -#include "BLI_blenlib.h" -#include "BLI_utildefines.h" -#include "BLI_math_base.h" - -#if defined WIN32 && !defined _LIBC -# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ -#else -# ifndef _GNU_SOURCE -# define _GNU_SOURCE -# endif -# include -#endif - - -#include "BKE_animsys.h" -#include "BKE_context.h" -#include "BKE_deform.h" -#include "BKE_depsgraph.h" -#include "BKE_fcurve.h" -#include "BKE_global.h" -#include "BKE_group.h" -#include "BKE_library.h" -#include "BKE_main.h" -#include "BKE_modifier.h" -#include "BKE_report.h" -#include "BKE_scene.h" -#include "BKE_sequencer.h" - -#include "ED_armature.h" -#include "ED_object.h" -#include "ED_screen.h" -#include "ED_util.h" - -#include "WM_api.h" -#include "WM_types.h" - -#include "BIF_gl.h" -#include "BIF_glutil.h" - -#include "UI_interface.h" -#include "UI_interface_icons.h" -#include "UI_resources.h" -#include "UI_view2d.h" - -#include "RNA_access.h" -#include "RNA_define.h" - -#include "ED_keyframing.h" - -#include "outliner_intern.h" - - -#define OL_Y_OFFSET 2 - -#define OL_TOG_RESTRICT_VIEWX (UI_UNIT_X*3) -#define OL_TOG_RESTRICT_SELECTX (UI_UNIT_X*2) -#define OL_TOG_RESTRICT_RENDERX UI_UNIT_X - -#define OL_TOGW OL_TOG_RESTRICT_VIEWX - -#define OL_RNA_COLX (UI_UNIT_X*15) -#define OL_RNA_COL_SIZEX (UI_UNIT_X*7.5) -#define OL_RNA_COL_SPACEX (UI_UNIT_X*2.5) - -#define TS_CHUNK 128 - -#define TREESTORE(a) ((a)?soops->treestore->data+(a)->store_index:NULL) - -/* ************* XXX **************** */ - -static void error(const char *UNUSED(arg), ...) {} - -/* ********************************** */ - - -/* ******************** PROTOTYPES ***************** */ -static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int startx, int *starty); -static void outliner_do_object_operation(bContext *C, Scene *scene, SpaceOops *soops, ListBase *lb, - void (*operation_cb)(bContext *C, Scene *scene, TreeElement *, TreeStoreElem *, TreeStoreElem *)); - -static int group_select_flag(Group *gr); - -/* ******************** PERSISTANT DATA ***************** */ - -static void outliner_storage_cleanup(SpaceOops *soops) -{ - TreeStore *ts= soops->treestore; - - if(ts) { - TreeStoreElem *tselem; - int a, unused= 0; - - /* each element used once, for ID blocks with more users to have each a treestore */ - for(a=0, tselem= ts->data; ausedelem; a++, tselem++) tselem->used= 0; - - /* cleanup only after reading file or undo step, and always for - * RNA datablocks view in order to save memory */ - if(soops->storeflag & SO_TREESTORE_CLEANUP) { - - for(a=0, tselem= ts->data; ausedelem; a++, tselem++) { - if(tselem->id==NULL) unused++; - } - - if(unused) { - if(ts->usedelem == unused) { - MEM_freeN(ts->data); - ts->data= NULL; - ts->usedelem= ts->totelem= 0; - } - else { - TreeStoreElem *tsnewar, *tsnew; - - tsnew=tsnewar= MEM_mallocN((ts->usedelem-unused)*sizeof(TreeStoreElem), "new tselem"); - for(a=0, tselem= ts->data; ausedelem; a++, tselem++) { - if(tselem->id) { - *tsnew= *tselem; - tsnew++; - } - } - MEM_freeN(ts->data); - ts->data= tsnewar; - ts->usedelem-= unused; - ts->totelem= ts->usedelem; - } - } - } - } -} - -static void check_persistant(SpaceOops *soops, TreeElement *te, ID *id, short type, short nr) -{ - TreeStore *ts; - TreeStoreElem *tselem; - int a; - - /* case 1; no TreeStore */ - if(soops->treestore==NULL) { - soops->treestore= MEM_callocN(sizeof(TreeStore), "treestore"); - } - ts= soops->treestore; - - /* check if 'te' is in treestore */ - tselem= ts->data; - for(a=0; ausedelem; a++, tselem++) { - if(tselem->id==id && tselem->used==0) { - if((type==0 && tselem->type==0) ||(tselem->type==type && tselem->nr==nr)) { - te->store_index= a; - tselem->used= 1; - return; - } - } - } - - /* add 1 element to treestore */ - if(ts->usedelem==ts->totelem) { - TreeStoreElem *tsnew; - - tsnew= MEM_mallocN((ts->totelem+TS_CHUNK)*sizeof(TreeStoreElem), "treestore data"); - if(ts->data) { - memcpy(tsnew, ts->data, ts->totelem*sizeof(TreeStoreElem)); - MEM_freeN(ts->data); - } - ts->data= tsnew; - ts->totelem+= TS_CHUNK; - } - - tselem= ts->data+ts->usedelem; - - tselem->type= type; - if(type) tselem->nr= nr; // we're picky! :) - else tselem->nr= 0; - tselem->id= id; - tselem->used = 0; - tselem->flag= TSE_CLOSED; - te->store_index= ts->usedelem; - - ts->usedelem++; -} - -/* ******************** TREE MANAGEMENT ****************** */ - -void outliner_free_tree(ListBase *lb) -{ - - while(lb->first) { - TreeElement *te= lb->first; - - outliner_free_tree(&te->subtree); - BLI_remlink(lb, te); - - if(te->flag & TE_FREE_NAME) MEM_freeN((void *)te->name); - MEM_freeN(te); - } -} - -static void outliner_height(SpaceOops *soops, ListBase *lb, int *h) -{ - TreeElement *te= lb->first; - while(te) { - TreeStoreElem *tselem= TREESTORE(te); - if((tselem->flag & TSE_CLOSED)==0) - outliner_height(soops, &te->subtree, h); - (*h) += UI_UNIT_Y; - te= te->next; - } -} - -#if 0 // XXX this is currently disabled until te->xend is set correctly -static void outliner_width(SpaceOops *soops, ListBase *lb, int *w) -{ - TreeElement *te= lb->first; - while(te) { -// TreeStoreElem *tselem= TREESTORE(te); - - // XXX fixme... te->xend is not set yet - if(tselem->flag & TSE_CLOSED) { - if (te->xend > *w) - *w = te->xend; - } - outliner_width(soops, &te->subtree, w); - te= te->next; - } -} -#endif - -static void outliner_rna_width(SpaceOops *soops, ListBase *lb, int *w, int startx) -{ - TreeElement *te= lb->first; - while(te) { - TreeStoreElem *tselem= TREESTORE(te); - // XXX fixme... (currently, we're using a fixed length of 100)! - /*if(te->xend) { - if(te->xend > *w) - *w = te->xend; - }*/ - if(startx+100 > *w) - *w = startx+100; - - if((tselem->flag & TSE_CLOSED)==0) - outliner_rna_width(soops, &te->subtree, w, startx+UI_UNIT_X); - te= te->next; - } -} - -static TreeElement *outliner_find_tree_element(ListBase *lb, int store_index) -{ - TreeElement *te= lb->first, *tes; - while(te) { - if(te->store_index==store_index) return te; - tes= outliner_find_tree_element(&te->subtree, store_index); - if(tes) return tes; - te= te->next; - } - return NULL; -} - - - -static ID *outliner_search_back(SpaceOops *soops, TreeElement *te, short idcode) -{ - TreeStoreElem *tselem; - te= te->parent; - - while(te) { - tselem= TREESTORE(te); - if(tselem->type==0 && te->idcode==idcode) return tselem->id; - te= te->parent; - } - return NULL; -} - -struct treesort { - TreeElement *te; - ID *id; - const char *name; - short idcode; -}; - -static int treesort_alpha(const void *v1, const void *v2) -{ - const struct treesort *x1= v1, *x2= v2; - int comp; - - /* first put objects last (hierarchy) */ - comp= (x1->idcode==ID_OB); - if(x2->idcode==ID_OB) comp+=2; - - if(comp==1) return 1; - else if(comp==2) return -1; - else if(comp==3) { - comp= strcmp(x1->name, x2->name); - - if( comp>0 ) return 1; - else if( comp<0) return -1; - return 0; - } - return 0; -} - -/* this is nice option for later? doesnt look too useful... */ -#if 0 -static int treesort_obtype_alpha(const void *v1, const void *v2) -{ - const struct treesort *x1= v1, *x2= v2; - - /* first put objects last (hierarchy) */ - if(x1->idcode==ID_OB && x2->idcode!=ID_OB) return 1; - else if(x2->idcode==ID_OB && x1->idcode!=ID_OB) return -1; - else { - /* 2nd we check ob type */ - if(x1->idcode==ID_OB && x2->idcode==ID_OB) { - if( ((Object *)x1->id)->type > ((Object *)x2->id)->type) return 1; - else if( ((Object *)x1->id)->type > ((Object *)x2->id)->type) return -1; - else return 0; - } - else { - int comp= strcmp(x1->name, x2->name); - - if( comp>0 ) return 1; - else if( comp<0) return -1; - return 0; - } - } -} -#endif - -/* sort happens on each subtree individual */ -static void outliner_sort(SpaceOops *soops, ListBase *lb) -{ - TreeElement *te; - TreeStoreElem *tselem; - int totelem=0; - - te= lb->last; - if(te==NULL) return; - tselem= TREESTORE(te); - - /* sorting rules; only object lists or deformgroups */ - if( (tselem->type==TSE_DEFGROUP) || (tselem->type==0 && te->idcode==ID_OB)) { - - /* count first */ - for(te= lb->first; te; te= te->next) totelem++; - - if(totelem>1) { - struct treesort *tear= MEM_mallocN(totelem*sizeof(struct treesort), "tree sort array"); - struct treesort *tp=tear; - int skip= 0; - - for(te= lb->first; te; te= te->next, tp++) { - tselem= TREESTORE(te); - tp->te= te; - tp->name= te->name; - tp->idcode= te->idcode; - if(tselem->type && tselem->type!=TSE_DEFGROUP) tp->idcode= 0; // dont sort this - tp->id= tselem->id; - } - /* keep beginning of list */ - for(tp= tear, skip=0; skipidcode) break; - - if(skipfirst=lb->last= NULL; - tp= tear; - while(totelem--) { - BLI_addtail(lb, tp->te); - tp++; - } - MEM_freeN(tear); - } - } - - for(te= lb->first; te; te= te->next) { - outliner_sort(soops, &te->subtree); - } -} - -/* Prototype, see functions below */ -static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *idv, - TreeElement *parent, short type, short index); - -#define LOG2I(x) (int)(log(x)/M_LN2) - -static void outliner_add_passes(SpaceOops *soops, TreeElement *tenla, ID *id, SceneRenderLayer *srl) -{ - TreeStoreElem *tselem = NULL; - TreeElement *te = NULL; - - /* log stuff is to convert bitflags (powers of 2) to small integers, - * in order to not overflow short tselem->nr */ - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_COMBINED)); - te->name= "Combined"; - te->directdata= &srl->passflag; - - /* save cpu cycles, but we add the first to invoke an open/close triangle */ - tselem = TREESTORE(tenla); - if(tselem->flag & TSE_CLOSED) - return; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_Z)); - te->name= "Z"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_VECTOR)); - te->name= "Vector"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_NORMAL)); - te->name= "Normal"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_UV)); - te->name= "UV"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_MIST)); - te->name= "Mist"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDEXOB)); - te->name= "Index Object"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDEXMA)); - te->name= "Index Material"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_RGBA)); - te->name= "Color"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_DIFFUSE)); - te->name= "Diffuse"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_SPEC)); - te->name= "Specular"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_SHADOW)); - te->name= "Shadow"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_AO)); - te->name= "AO"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_REFLECT)); - te->name= "Reflection"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_REFRACT)); - te->name= "Refraction"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDIRECT)); - te->name= "Indirect"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_ENVIRONMENT)); - te->name= "Environment"; - te->directdata= &srl->passflag; - - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_EMIT)); - te->name= "Emit"; - te->directdata= &srl->passflag; -} - -#undef LOG2I - -/* special handling of hierarchical non-lib data */ -static void outliner_add_bone(SpaceOops *soops, ListBase *lb, ID *id, Bone *curBone, - TreeElement *parent, int *a) -{ - TreeElement *te= outliner_add_element(soops, lb, id, parent, TSE_BONE, *a); - - (*a)++; - te->name= curBone->name; - te->directdata= curBone; - - for(curBone= curBone->childbase.first; curBone; curBone=curBone->next) { - outliner_add_bone(soops, &te->subtree, id, curBone, te, a); - } -} - -static void outliner_add_scene_contents(SpaceOops *soops, ListBase *lb, Scene *sce, TreeElement *te) -{ - SceneRenderLayer *srl; - TreeElement *tenla= outliner_add_element(soops, lb, sce, te, TSE_R_LAYER_BASE, 0); - int a; - - tenla->name= "RenderLayers"; - for(a=0, srl= sce->r.layers.first; srl; srl= srl->next, a++) { - TreeElement *tenlay= outliner_add_element(soops, &tenla->subtree, sce, te, TSE_R_LAYER, a); - tenlay->name= srl->name; - tenlay->directdata= &srl->passflag; - - if(srl->light_override) - outliner_add_element(soops, &tenlay->subtree, srl->light_override, tenlay, TSE_LINKED_LAMP, 0); - if(srl->mat_override) - outliner_add_element(soops, &tenlay->subtree, srl->mat_override, tenlay, TSE_LINKED_MAT, 0); - - outliner_add_passes(soops, tenlay, &sce->id, srl); - } - - outliner_add_element(soops, lb, sce->world, te, 0, 0); -} - -static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *idv, - TreeElement *parent, short type, short index) -{ - TreeElement *te; - TreeStoreElem *tselem; - ID *id= idv; - int a = 0; - - if(ELEM3(type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) { - id= ((PointerRNA*)idv)->id.data; - if(!id) id= ((PointerRNA*)idv)->data; - } - - if(id==NULL) return NULL; - - te= MEM_callocN(sizeof(TreeElement), "tree elem"); - /* add to the visual tree */ - BLI_addtail(lb, te); - /* add to the storage */ - check_persistant(soops, te, id, type, index); - tselem= TREESTORE(te); - - te->parent= parent; - te->index= index; // for data arays - if(ELEM3(type, TSE_SEQUENCE, TSE_SEQ_STRIP, TSE_SEQUENCE_DUP)); - else if(ELEM3(type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)); - else if(type==TSE_ANIM_DATA); - else { - te->name= id->name+2; // default, can be overridden by Library or non-ID data - te->idcode= GS(id->name); - } - - if(type==0) { - - /* tuck pointer back in object, to construct hierarchy */ - if(GS(id->name)==ID_OB) id->newid= (ID *)te; - - /* expand specific data always */ - switch(GS(id->name)) { - case ID_LI: - te->name= ((Library *)id)->name; - break; - case ID_SCE: - outliner_add_scene_contents(soops, &te->subtree, (Scene *)id, te); - break; - case ID_OB: - { - Object *ob= (Object *)id; - - outliner_add_element(soops, &te->subtree, ob->adt, te, TSE_ANIM_DATA, 0); - outliner_add_element(soops, &te->subtree, ob->poselib, te, 0, 0); // XXX FIXME.. add a special type for this - - if(ob->proxy && ob->id.lib==NULL) - outliner_add_element(soops, &te->subtree, ob->proxy, te, TSE_PROXY, 0); - - outliner_add_element(soops, &te->subtree, ob->data, te, 0, 0); - - if(ob->pose) { - bArmature *arm= ob->data; - bPoseChannel *pchan; - TreeElement *ten; - TreeElement *tenla= outliner_add_element(soops, &te->subtree, ob, te, TSE_POSE_BASE, 0); - - tenla->name= "Pose"; - - if(arm->edbo==NULL && (ob->mode & OB_MODE_POSE)) { // channels undefined in editmode, but we want the 'tenla' pose icon itself - int a= 0, const_index= 1000; /* ensure unique id for bone constraints */ - - for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next, a++) { - ten= outliner_add_element(soops, &tenla->subtree, ob, tenla, TSE_POSE_CHANNEL, a); - ten->name= pchan->name; - ten->directdata= pchan; - pchan->prev= (bPoseChannel *)ten; - - if(pchan->constraints.first) { - //Object *target; - bConstraint *con; - TreeElement *ten1; - TreeElement *tenla1= outliner_add_element(soops, &ten->subtree, ob, ten, TSE_CONSTRAINT_BASE, 0); - //char *str; - - tenla1->name= "Constraints"; - for(con= pchan->constraints.first; con; con= con->next, const_index++) { - ten1= outliner_add_element(soops, &tenla1->subtree, ob, tenla1, TSE_CONSTRAINT, const_index); -#if 0 /* disabled as it needs to be reworked for recoded constraints system */ - target= get_constraint_target(con, &str); - if(str && str[0]) ten1->name= str; - else if(target) ten1->name= target->id.name+2; - else ten1->name= con->name; -#endif - ten1->name= con->name; - ten1->directdata= con; - /* possible add all other types links? */ - } - } - } - /* make hierarchy */ - ten= tenla->subtree.first; - while(ten) { - TreeElement *nten= ten->next, *par; - tselem= TREESTORE(ten); - if(tselem->type==TSE_POSE_CHANNEL) { - pchan= (bPoseChannel *)ten->directdata; - if(pchan->parent) { - BLI_remlink(&tenla->subtree, ten); - par= (TreeElement *)pchan->parent->prev; - BLI_addtail(&par->subtree, ten); - ten->parent= par; - } - } - ten= nten; - } - /* restore prev pointers */ - pchan= ob->pose->chanbase.first; - if(pchan) pchan->prev= NULL; - for(; pchan; pchan= pchan->next) { - if(pchan->next) pchan->next->prev= pchan; - } - } - - /* Pose Groups */ - if(ob->pose->agroups.first) { - bActionGroup *agrp; - TreeElement *ten; - TreeElement *tenla= outliner_add_element(soops, &te->subtree, ob, te, TSE_POSEGRP_BASE, 0); - int a= 0; - - tenla->name= "Bone Groups"; - for (agrp=ob->pose->agroups.first; agrp; agrp=agrp->next, a++) { - ten= outliner_add_element(soops, &tenla->subtree, ob, tenla, TSE_POSEGRP, a); - ten->name= agrp->name; - ten->directdata= agrp; - } - } - } - - for(a=0; atotcol; a++) - outliner_add_element(soops, &te->subtree, ob->mat[a], te, 0, a); - - if(ob->constraints.first) { - //Object *target; - bConstraint *con; - TreeElement *ten; - TreeElement *tenla= outliner_add_element(soops, &te->subtree, ob, te, TSE_CONSTRAINT_BASE, 0); - int a= 0; - //char *str; - - tenla->name= "Constraints"; - for(con= ob->constraints.first; con; con= con->next, a++) { - ten= outliner_add_element(soops, &tenla->subtree, ob, tenla, TSE_CONSTRAINT, a); -#if 0 /* disabled due to constraints system targets recode... code here needs review */ - target= get_constraint_target(con, &str); - if(str && str[0]) ten->name= str; - else if(target) ten->name= target->id.name+2; - else ten->name= con->name; -#endif - ten->name= con->name; - ten->directdata= con; - /* possible add all other types links? */ - } - } - - if(ob->modifiers.first) { - ModifierData *md; - TreeElement *temod = outliner_add_element(soops, &te->subtree, ob, te, TSE_MODIFIER_BASE, 0); - int index; - - temod->name = "Modifiers"; - for (index=0,md=ob->modifiers.first; md; index++,md=md->next) { - TreeElement *te = outliner_add_element(soops, &temod->subtree, ob, temod, TSE_MODIFIER, index); - te->name= md->name; - te->directdata = md; - - if (md->type==eModifierType_Lattice) { - outliner_add_element(soops, &te->subtree, ((LatticeModifierData*) md)->object, te, TSE_LINKED_OB, 0); - } else if (md->type==eModifierType_Curve) { - outliner_add_element(soops, &te->subtree, ((CurveModifierData*) md)->object, te, TSE_LINKED_OB, 0); - } else if (md->type==eModifierType_Armature) { - outliner_add_element(soops, &te->subtree, ((ArmatureModifierData*) md)->object, te, TSE_LINKED_OB, 0); - } else if (md->type==eModifierType_Hook) { - outliner_add_element(soops, &te->subtree, ((HookModifierData*) md)->object, te, TSE_LINKED_OB, 0); - } else if (md->type==eModifierType_ParticleSystem) { - TreeElement *ten; - ParticleSystem *psys= ((ParticleSystemModifierData*) md)->psys; - - ten = outliner_add_element(soops, &te->subtree, ob, te, TSE_LINKED_PSYS, 0); - ten->directdata = psys; - ten->name = psys->part->id.name+2; - } - } - } - if(ob->defbase.first) { - bDeformGroup *defgroup; - TreeElement *ten; - TreeElement *tenla= outliner_add_element(soops, &te->subtree, ob, te, TSE_DEFGROUP_BASE, 0); - int a= 0; - - tenla->name= "Vertex Groups"; - for (defgroup=ob->defbase.first; defgroup; defgroup=defgroup->next, a++) { - ten= outliner_add_element(soops, &tenla->subtree, ob, tenla, TSE_DEFGROUP, a); - ten->name= defgroup->name; - ten->directdata= defgroup; - } - } - - if(ob->dup_group) - outliner_add_element(soops, &te->subtree, ob->dup_group, te, 0, 0); - - } - break; - case ID_ME: - { - Mesh *me= (Mesh *)id; - - //outliner_add_element(soops, &te->subtree, me->adt, te, TSE_ANIM_DATA, 0); - - outliner_add_element(soops, &te->subtree, me->key, te, 0, 0); - for(a=0; atotcol; a++) - outliner_add_element(soops, &te->subtree, me->mat[a], te, 0, a); - /* could do tfaces with image links, but the images are not grouped nicely. - would require going over all tfaces, sort images in use. etc... */ - } - break; - case ID_CU: - { - Curve *cu= (Curve *)id; - - outliner_add_element(soops, &te->subtree, cu->adt, te, TSE_ANIM_DATA, 0); - - for(a=0; atotcol; a++) - outliner_add_element(soops, &te->subtree, cu->mat[a], te, 0, a); - } - break; - case ID_MB: - { - MetaBall *mb= (MetaBall *)id; - for(a=0; atotcol; a++) - outliner_add_element(soops, &te->subtree, mb->mat[a], te, 0, a); - } - break; - case ID_MA: - { - Material *ma= (Material *)id; - - outliner_add_element(soops, &te->subtree, ma->adt, te, TSE_ANIM_DATA, 0); - - for(a=0; amtex[a]) outliner_add_element(soops, &te->subtree, ma->mtex[a]->tex, te, 0, a); - } - } - break; - case ID_TE: - { - Tex *tex= (Tex *)id; - - outliner_add_element(soops, &te->subtree, tex->adt, te, TSE_ANIM_DATA, 0); - outliner_add_element(soops, &te->subtree, tex->ima, te, 0, 0); - } - break; - case ID_CA: - { - Camera *ca= (Camera *)id; - outliner_add_element(soops, &te->subtree, ca->adt, te, TSE_ANIM_DATA, 0); - } - break; - case ID_LA: - { - Lamp *la= (Lamp *)id; - - outliner_add_element(soops, &te->subtree, la->adt, te, TSE_ANIM_DATA, 0); - - for(a=0; amtex[a]) outliner_add_element(soops, &te->subtree, la->mtex[a]->tex, te, 0, a); - } - } - break; - case ID_WO: - { - World *wrld= (World *)id; - - outliner_add_element(soops, &te->subtree, wrld->adt, te, TSE_ANIM_DATA, 0); - - for(a=0; amtex[a]) outliner_add_element(soops, &te->subtree, wrld->mtex[a]->tex, te, 0, a); - } - } - break; - case ID_KE: - { - Key *key= (Key *)id; - - outliner_add_element(soops, &te->subtree, key->adt, te, TSE_ANIM_DATA, 0); - } - break; - case ID_AC: - { - // XXX do we want to be exposing the F-Curves here? - //bAction *act= (bAction *)id; - } - break; - case ID_AR: - { - bArmature *arm= (bArmature *)id; - int a= 0; - - if(arm->edbo) { - EditBone *ebone; - TreeElement *ten; - - for (ebone = arm->edbo->first; ebone; ebone=ebone->next, a++) { - ten= outliner_add_element(soops, &te->subtree, id, te, TSE_EBONE, a); - ten->directdata= ebone; - ten->name= ebone->name; - ebone->temp= ten; - } - /* make hierarchy */ - ten= te->subtree.first; - while(ten) { - TreeElement *nten= ten->next, *par; - ebone= (EditBone *)ten->directdata; - if(ebone->parent) { - BLI_remlink(&te->subtree, ten); - par= ebone->parent->temp; - BLI_addtail(&par->subtree, ten); - ten->parent= par; - } - ten= nten; - } - } - else { - /* do not extend Armature when we have posemode */ - tselem= TREESTORE(te->parent); - if( GS(tselem->id->name)==ID_OB && ((Object *)tselem->id)->mode & OB_MODE_POSE); - else { - Bone *curBone; - for (curBone=arm->bonebase.first; curBone; curBone=curBone->next){ - outliner_add_bone(soops, &te->subtree, id, curBone, te, &a); - } - } - } - } - break; - } - } - else if(type==TSE_ANIM_DATA) { - AnimData *adt= (AnimData *)idv; - - /* this element's info */ - te->name= "Animation"; - - /* Action */ - outliner_add_element(soops, &te->subtree, adt->action, te, 0, 0); - - /* Drivers */ - if (adt->drivers.first) { - TreeElement *ted= outliner_add_element(soops, &te->subtree, adt, te, TSE_DRIVER_BASE, 0); - ID *lastadded= NULL; - FCurve *fcu; - - ted->name= "Drivers"; - - for (fcu= adt->drivers.first; fcu; fcu= fcu->next) { - if (fcu->driver && fcu->driver->variables.first) { - ChannelDriver *driver= fcu->driver; - DriverVar *dvar; - - for (dvar= driver->variables.first; dvar; dvar= dvar->next) { - /* loop over all targets used here */ - DRIVER_TARGETS_USED_LOOPER(dvar) - { - if (lastadded != dtar->id) { - // XXX this lastadded check is rather lame, and also fails quite badly... - outliner_add_element(soops, &ted->subtree, dtar->id, ted, TSE_LINKED_OB, 0); - lastadded= dtar->id; - } - } - DRIVER_TARGETS_LOOPER_END - } - } - } - } - - /* NLA Data */ - if (adt->nla_tracks.first) { - TreeElement *tenla= outliner_add_element(soops, &te->subtree, adt, te, TSE_NLA, 0); - NlaTrack *nlt; - int a= 0; - - tenla->name= "NLA Tracks"; - - for (nlt= adt->nla_tracks.first; nlt; nlt= nlt->next) { - TreeElement *tenlt= outliner_add_element(soops, &tenla->subtree, nlt, tenla, TSE_NLA_TRACK, a); - NlaStrip *strip; - TreeElement *ten; - int b= 0; - - tenlt->name= nlt->name; - - for (strip=nlt->strips.first; strip; strip=strip->next, b++) { - ten= outliner_add_element(soops, &tenlt->subtree, strip->act, tenlt, TSE_NLA_ACTION, b); - if(ten) ten->directdata= strip; - } - } - } - } - else if(type==TSE_SEQUENCE) { - Sequence *seq= (Sequence*) idv; - Sequence *p; - - /* - * The idcode is a little hack, but the outliner - * only check te->idcode if te->type is equal to zero, - * so this is "safe". - */ - te->idcode= seq->type; - te->directdata= seq; - - if(seq->type<7) { - /* - * This work like the sequence. - * If the sequence have a name (not default name) - * show it, in other case put the filename. - */ - if(strcmp(seq->name, "SQ")) - te->name= seq->name; - else { - if((seq->strip) && (seq->strip->stripdata)) - te->name= seq->strip->stripdata->name; - else - te->name= "SQ None"; - } - - if(seq->type==SEQ_META) { - te->name= "Meta Strip"; - p= seq->seqbase.first; - while(p) { - outliner_add_element(soops, &te->subtree, (void*)p, te, TSE_SEQUENCE, index); - p= p->next; - } - } - else - outliner_add_element(soops, &te->subtree, (void*)seq->strip, te, TSE_SEQ_STRIP, index); - } - else - te->name= "Effect"; - } - else if(type==TSE_SEQ_STRIP) { - Strip *strip= (Strip *)idv; - - if(strip->dir) - te->name= strip->dir; - else - te->name= "Strip None"; - te->directdata= strip; - } - else if(type==TSE_SEQUENCE_DUP) { - Sequence *seq= (Sequence*)idv; - - te->idcode= seq->type; - te->directdata= seq; - te->name= seq->strip->stripdata->name; - } - else if(ELEM3(type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) { - PointerRNA pptr, propptr, *ptr= (PointerRNA*)idv; - PropertyRNA *prop, *iterprop; - PropertyType proptype; - int a, tot; - - /* we do lazy build, for speed and to avoid infinite recusion */ - - if(ptr->data == NULL) { - te->name= "(empty)"; - } - else if(type == TSE_RNA_STRUCT) { - /* struct */ - te->name= RNA_struct_name_get_alloc(ptr, NULL, 0); - - if(te->name) - te->flag |= TE_FREE_NAME; - else - te->name= (char*)RNA_struct_ui_name(ptr->type); - - iterprop= RNA_struct_iterator_property(ptr->type); - tot= RNA_property_collection_length(ptr, iterprop); - - /* auto open these cases */ - if(!parent || (RNA_property_type(parent->directdata)) == PROP_POINTER) - if(!tselem->used) - tselem->flag &= ~TSE_CLOSED; - - if(!(tselem->flag & TSE_CLOSED)) { - for(a=0; asubtree, (void*)ptr, te, TSE_RNA_PROPERTY, a); - } - else if(tot) - te->flag |= TE_LAZY_CLOSED; - - te->rnaptr= *ptr; - } - else if(type == TSE_RNA_PROPERTY) { - /* property */ - iterprop= RNA_struct_iterator_property(ptr->type); - RNA_property_collection_lookup_int(ptr, iterprop, index, &propptr); - - prop= propptr.data; - proptype= RNA_property_type(prop); - - te->name= (char*)RNA_property_ui_name(prop); - te->directdata= prop; - te->rnaptr= *ptr; - - if(proptype == PROP_POINTER) { - pptr= RNA_property_pointer_get(ptr, prop); - - if(pptr.data) { - if(!(tselem->flag & TSE_CLOSED)) - outliner_add_element(soops, &te->subtree, (void*)&pptr, te, TSE_RNA_STRUCT, -1); - else - te->flag |= TE_LAZY_CLOSED; - } - } - else if(proptype == PROP_COLLECTION) { - tot= RNA_property_collection_length(ptr, prop); - - if(!(tselem->flag & TSE_CLOSED)) { - for(a=0; asubtree, (void*)&pptr, te, TSE_RNA_STRUCT, -1); - } - } - else if(tot) - te->flag |= TE_LAZY_CLOSED; - } - else if(ELEM3(proptype, PROP_BOOLEAN, PROP_INT, PROP_FLOAT)) { - tot= RNA_property_array_length(ptr, prop); - - if(!(tselem->flag & TSE_CLOSED)) { - for(a=0; asubtree, (void*)ptr, te, TSE_RNA_ARRAY_ELEM, a); - } - else if(tot) - te->flag |= TE_LAZY_CLOSED; - } - } - else if(type == TSE_RNA_ARRAY_ELEM) { - char c; - - prop= parent->directdata; - - te->directdata= prop; - te->rnaptr= *ptr; - te->index= index; - - c= RNA_property_array_item_char(prop, index); - - te->name= MEM_callocN(sizeof(char)*20, "OutlinerRNAArrayName"); - if(c) sprintf((char *)te->name, " %c", c); - else sprintf((char *)te->name, " %d", index+1); - te->flag |= TE_FREE_NAME; - } - } - else if(type == TSE_KEYMAP) { - wmKeyMap *km= (wmKeyMap *)idv; - wmKeyMapItem *kmi; - char opname[OP_MAX_TYPENAME]; - - te->directdata= idv; - te->name= km->idname; - - if(!(tselem->flag & TSE_CLOSED)) { - a= 0; - - for (kmi= km->items.first; kmi; kmi= kmi->next, a++) { - const char *key= WM_key_event_string(kmi->type); - - if(key[0]) { - wmOperatorType *ot= NULL; - - if(kmi->propvalue); - else ot= WM_operatortype_find(kmi->idname, 0); - - if(ot || kmi->propvalue) { - TreeElement *ten= outliner_add_element(soops, &te->subtree, kmi, te, TSE_KEYMAP_ITEM, a); - - ten->directdata= kmi; - - if(kmi->propvalue) { - ten->name= "Modal map, not yet"; - } - else { - WM_operator_py_idname(opname, ot->idname); - ten->name= BLI_strdup(opname); - ten->flag |= TE_FREE_NAME; - } - } - } - } - } - else - te->flag |= TE_LAZY_CLOSED; - } - - return te; -} - -static void outliner_make_hierarchy(SpaceOops *soops, ListBase *lb) -{ - TreeElement *te, *ten, *tep; - TreeStoreElem *tselem; - - /* build hierarchy */ - // XXX also, set extents here... - te= lb->first; - while(te) { - ten= te->next; - tselem= TREESTORE(te); - - if(tselem->type==0 && te->idcode==ID_OB) { - Object *ob= (Object *)tselem->id; - if(ob->parent && ob->parent->id.newid) { - BLI_remlink(lb, te); - tep= (TreeElement *)ob->parent->id.newid; - BLI_addtail(&tep->subtree, te); - // set correct parent pointers - for(te=tep->subtree.first; te; te= te->next) te->parent= tep; - } - } - te= ten; - } -} - -/* Helped function to put duplicate sequence in the same tree. */ -static int need_add_seq_dup(Sequence *seq) -{ - Sequence *p; - - if((!seq->strip) || (!seq->strip->stripdata) || (!seq->strip->stripdata->name)) - return(1); - - /* - * First check backward, if we found a duplicate - * sequence before this, don't need it, just return. - */ - p= seq->prev; - while(p) { - if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) { - p= p->prev; - continue; - } - - if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name)) - return(2); - p= p->prev; - } - - p= seq->next; - while(p) { - if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) { - p= p->next; - continue; - } - - if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name)) - return(0); - p= p->next; - } - return(1); -} - -static void add_seq_dup(SpaceOops *soops, Sequence *seq, TreeElement *te, short index) -{ - TreeElement *ch; - Sequence *p; - - p= seq; - while(p) { - if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) { - p= p->next; - continue; - } - - if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name)) - ch= outliner_add_element(soops, &te->subtree, (void*)p, te, TSE_SEQUENCE, index); - p= p->next; - } -} - -static int outliner_filter_has_name(TreeElement *te, const char *name, int flags) -{ -#if 0 - int found= 0; - - /* determine if match */ - if (flags & SO_FIND_CASE_SENSITIVE) { - if (flags & SO_FIND_COMPLETE) - found= strcmp(te->name, name) == 0; - else - found= strstr(te->name, name) != NULL; - } - else { - if (flags & SO_FIND_COMPLETE) - found= BLI_strcasecmp(te->name, name) == 0; - else - found= BLI_strcasestr(te->name, name) != NULL; - } -#else - - int fn_flag= 0; - int found= 0; - - if ((flags & SO_FIND_CASE_SENSITIVE) == 0) - fn_flag |= FNM_CASEFOLD; - - if (flags & SO_FIND_COMPLETE) { - found= fnmatch(name, te->name, fn_flag)==0; - } - else { - char fn_name[sizeof(((struct SpaceOops *)NULL)->search_string) + 2]; - sprintf(fn_name, "*%s*", name); - found= fnmatch(fn_name, te->name, fn_flag)==0; - } - return found; -#endif -} - -static int outliner_filter_tree(SpaceOops *soops, ListBase *lb) -{ - TreeElement *te, *ten; - TreeStoreElem *tselem; - - /* although we don't have any search string, we return TRUE - * since the entire tree is ok then... - */ - if (soops->search_string[0]==0) - return 1; - - for (te= lb->first; te; te= ten) { - ten= te->next; - - if (0==outliner_filter_has_name(te, soops->search_string, soops->search_flags)) { - /* item isn't something we're looking for, but... - * - if the subtree is expanded, check if there are any matches that can be easily found - * so that searching for "cu" in the default scene will still match the Cube - * - otherwise, we can't see within the subtree and the item doesn't match, - * so these can be safely ignored (i.e. the subtree can get freed) - */ - tselem= TREESTORE(te); - - if ((tselem->flag & TSE_CLOSED) || outliner_filter_tree(soops, &te->subtree)==0) { - outliner_free_tree(&te->subtree); - BLI_remlink(lb, te); - - if(te->flag & TE_FREE_NAME) MEM_freeN((void *)te->name); - MEM_freeN(te); - } - } - else { - /* filter subtree too */ - outliner_filter_tree(soops, &te->subtree); - } - } - - /* if there are still items in the list, that means that there were still some matches */ - return (lb->first != NULL); -} - - -static void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops) -{ - Base *base; - Object *ob; - TreeElement *te=NULL, *ten; - TreeStoreElem *tselem; - int show_opened= (soops->treestore==NULL); /* on first view, we open scenes */ - - if(soops->tree.first && (soops->storeflag & SO_TREESTORE_REDRAW)) - return; - - outliner_free_tree(&soops->tree); - outliner_storage_cleanup(soops); - - /* clear ob id.new flags */ - for(ob= mainvar->object.first; ob; ob= ob->id.next) ob->id.newid= NULL; - - /* options */ - if(soops->outlinevis == SO_LIBRARIES) { - Library *lib; - - for(lib= mainvar->library.first; lib; lib= lib->id.next) { - ten= outliner_add_element(soops, &soops->tree, lib, NULL, 0, 0); - lib->id.newid= (ID *)ten; - } - /* make hierarchy */ - ten= soops->tree.first; - while(ten) { - TreeElement *nten= ten->next, *par; - tselem= TREESTORE(ten); - lib= (Library *)tselem->id; - if(lib->parent) { - BLI_remlink(&soops->tree, ten); - par= (TreeElement *)lib->parent->id.newid; - BLI_addtail(&par->subtree, ten); - ten->parent= par; - } - ten= nten; - } - /* restore newid pointers */ - for(lib= mainvar->library.first; lib; lib= lib->id.next) - lib->id.newid= NULL; - - } - else if(soops->outlinevis == SO_ALL_SCENES) { - Scene *sce; - for(sce= mainvar->scene.first; sce; sce= sce->id.next) { - te= outliner_add_element(soops, &soops->tree, sce, NULL, 0, 0); - tselem= TREESTORE(te); - if(sce==scene && show_opened) - tselem->flag &= ~TSE_CLOSED; - - for(base= sce->base.first; base; base= base->next) { - ten= outliner_add_element(soops, &te->subtree, base->object, te, 0, 0); - ten->directdata= base; - } - outliner_make_hierarchy(soops, &te->subtree); - /* clear id.newid, to prevent objects be inserted in wrong scenes (parent in other scene) */ - for(base= sce->base.first; base; base= base->next) base->object->id.newid= NULL; - } - } - else if(soops->outlinevis == SO_CUR_SCENE) { - - outliner_add_scene_contents(soops, &soops->tree, scene, NULL); - - for(base= scene->base.first; base; base= base->next) { - ten= outliner_add_element(soops, &soops->tree, base->object, NULL, 0, 0); - ten->directdata= base; - } - outliner_make_hierarchy(soops, &soops->tree); - } - else if(soops->outlinevis == SO_VISIBLE) { - for(base= scene->base.first; base; base= base->next) { - if(base->lay & scene->lay) - outliner_add_element(soops, &soops->tree, base->object, NULL, 0, 0); - } - outliner_make_hierarchy(soops, &soops->tree); - } - else if(soops->outlinevis == SO_GROUPS) { - Group *group; - GroupObject *go; - - for(group= mainvar->group.first; group; group= group->id.next) { - if(group->gobject.first) { - te= outliner_add_element(soops, &soops->tree, group, NULL, 0, 0); - - for(go= group->gobject.first; go; go= go->next) { - ten= outliner_add_element(soops, &te->subtree, go->ob, te, 0, 0); - ten->directdata= NULL; /* eh, why? */ - } - outliner_make_hierarchy(soops, &te->subtree); - /* clear id.newid, to prevent objects be inserted in wrong scenes (parent in other scene) */ - for(go= group->gobject.first; go; go= go->next) go->ob->id.newid= NULL; - } - } - } - else if(soops->outlinevis == SO_SAME_TYPE) { - Object *ob= OBACT; - if(ob) { - for(base= scene->base.first; base; base= base->next) { - if(base->object->type==ob->type) { - ten= outliner_add_element(soops, &soops->tree, base->object, NULL, 0, 0); - ten->directdata= base; - } - } - outliner_make_hierarchy(soops, &soops->tree); - } - } - else if(soops->outlinevis == SO_SELECTED) { - for(base= scene->base.first; base; base= base->next) { - if(base->lay & scene->lay) { - if(base==BASACT || (base->flag & SELECT)) { - ten= outliner_add_element(soops, &soops->tree, base->object, NULL, 0, 0); - ten->directdata= base; - } - } - } - outliner_make_hierarchy(soops, &soops->tree); - } - else if(soops->outlinevis==SO_SEQUENCE) { - Sequence *seq; - Editing *ed= seq_give_editing(scene, FALSE); - int op; - - if(ed==NULL) - return; - - seq= ed->seqbasep->first; - if(!seq) - return; - - while(seq) { - op= need_add_seq_dup(seq); - if(op==1) - ten= outliner_add_element(soops, &soops->tree, (void*)seq, NULL, TSE_SEQUENCE, 0); - else if(op==0) { - ten= outliner_add_element(soops, &soops->tree, (void*)seq, NULL, TSE_SEQUENCE_DUP, 0); - add_seq_dup(soops, seq, ten, 0); - } - seq= seq->next; - } - } - else if(soops->outlinevis==SO_DATABLOCKS) { - PointerRNA mainptr; - - RNA_main_pointer_create(mainvar, &mainptr); - - ten= outliner_add_element(soops, &soops->tree, (void*)&mainptr, NULL, TSE_RNA_STRUCT, -1); - - if(show_opened) { - tselem= TREESTORE(ten); - tselem->flag &= ~TSE_CLOSED; - } - } - else if(soops->outlinevis==SO_USERDEF) { - PointerRNA userdefptr; - - RNA_pointer_create(NULL, &RNA_UserPreferences, &U, &userdefptr); - - ten= outliner_add_element(soops, &soops->tree, (void*)&userdefptr, NULL, TSE_RNA_STRUCT, -1); - - if(show_opened) { - tselem= TREESTORE(ten); - tselem->flag &= ~TSE_CLOSED; - } - } - else if(soops->outlinevis==SO_KEYMAP) { - wmWindowManager *wm= mainvar->wm.first; - wmKeyMap *km; - - for(km= wm->defaultconf->keymaps.first; km; km= km->next) { - ten= outliner_add_element(soops, &soops->tree, (void*)km, NULL, TSE_KEYMAP, 0); - } - } - else { - ten= outliner_add_element(soops, &soops->tree, OBACT, NULL, 0, 0); - if(ten) ten->directdata= BASACT; - } - - outliner_sort(soops, &soops->tree); - outliner_filter_tree(soops, &soops->tree); -} - -/* **************** INTERACTIVE ************* */ - - -static int outliner_scroll_page_exec(bContext *C, wmOperator *op) -{ - ARegion *ar= CTX_wm_region(C); - int dy= ar->v2d.mask.ymax - ar->v2d.mask.ymin; - int up= 0; - - if(RNA_boolean_get(op->ptr, "up")) - up= 1; - - if(up == 0) dy= -dy; - ar->v2d.cur.ymin+= dy; - ar->v2d.cur.ymax+= dy; - - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - - -void OUTLINER_OT_scroll_page(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Scroll Page"; - ot->idname= "OUTLINER_OT_scroll_page"; - ot->description= "Scroll page up or down"; - - /* callbacks */ - ot->exec= outliner_scroll_page_exec; - ot->poll= ED_operator_outliner_active; - - /* properties */ - RNA_def_boolean(ot->srna, "up", 0, "Up", "Scroll up one page."); -} - - -static int outliner_count_levels(SpaceOops *soops, ListBase *lb, int curlevel) -{ - TreeElement *te; - int level=curlevel, lev; - - for(te= lb->first; te; te= te->next) { - - lev= outliner_count_levels(soops, &te->subtree, curlevel+1); - if(lev>level) level= lev; - } - return level; -} - -static int outliner_has_one_flag(SpaceOops *soops, ListBase *lb, short flag, short curlevel) -{ - TreeElement *te; - TreeStoreElem *tselem; - int level; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(tselem->flag & flag) return curlevel; - - level= outliner_has_one_flag(soops, &te->subtree, flag, curlevel+1); - if(level) return level; - } - return 0; -} - -static void outliner_set_flag(SpaceOops *soops, ListBase *lb, short flag, short set) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(set==0) tselem->flag &= ~flag; - else tselem->flag |= flag; - outliner_set_flag(soops, &te->subtree, flag, set); - } -} - -/* --- */ - -/* same check needed for both object operation and restrict column button func - * return 0 when in edit mode (cannot restrict view or select) - * otherwise return 1 */ -static int common_restrict_check(bContext *C, Object *ob) -{ - /* Don't allow hide an object in edit mode, - * check the bug #22153 and #21609, #23977 - */ - Object *obedit= CTX_data_edit_object(C); - if (obedit && obedit == ob) { - /* found object is hidden, reset */ - if (ob->restrictflag & OB_RESTRICT_VIEW) - ob->restrictflag &= ~OB_RESTRICT_VIEW; - /* found object is unselectable, reset */ - if (ob->restrictflag & OB_RESTRICT_SELECT) - ob->restrictflag &= ~OB_RESTRICT_SELECT; - return 0; - } - - return 1; -} - -static void object_toggle_visibility_cb(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) -{ - Base *base= (Base *)te->directdata; - Object *ob = (Object *)tselem->id; - - /* add check for edit mode */ - if(!common_restrict_check(C, ob)) return; - - if(base || (base= object_in_scene(ob, scene))) { - if((base->object->restrictflag ^= OB_RESTRICT_VIEW)) { - ED_base_object_select(base, BA_DESELECT); - } - } -} - -static int outliner_toggle_visibility_exec(bContext *C, wmOperator *UNUSED(op)) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - Scene *scene= CTX_data_scene(C); - ARegion *ar= CTX_wm_region(C); - - outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_visibility_cb); - - WM_event_add_notifier(C, NC_SCENE|ND_OB_VISIBLE, scene); - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_visibility_toggle(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Toggle Visibility"; - ot->idname= "OUTLINER_OT_visibility_toggle"; - ot->description= "Toggle the visibility of selected items"; - - /* callbacks */ - ot->exec= outliner_toggle_visibility_exec; - ot->poll= ED_operator_outliner_active_no_editobject; - - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; -} - -/* --- */ - -static void object_toggle_selectability_cb(bContext *UNUSED(C), Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) -{ - Base *base= (Base *)te->directdata; - - if(base==NULL) base= object_in_scene((Object *)tselem->id, scene); - if(base) { - base->object->restrictflag^=OB_RESTRICT_SELECT; - } -} - -static int outliner_toggle_selectability_exec(bContext *C, wmOperator *UNUSED(op)) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - Scene *scene= CTX_data_scene(C); - ARegion *ar= CTX_wm_region(C); - - outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_selectability_cb); - - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_selectability_toggle(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Toggle Selectability"; - ot->idname= "OUTLINER_OT_selectability_toggle"; - ot->description= "Toggle the selectability"; - - /* callbacks */ - ot->exec= outliner_toggle_selectability_exec; - ot->poll= ED_operator_outliner_active_no_editobject; - - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; -} - -static void object_toggle_renderability_cb(bContext *UNUSED(C), Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) -{ - Base *base= (Base *)te->directdata; - - if(base==NULL) base= object_in_scene((Object *)tselem->id, scene); - if(base) { - base->object->restrictflag^=OB_RESTRICT_RENDER; - } -} - -static int outliner_toggle_renderability_exec(bContext *C, wmOperator *UNUSED(op)) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - Scene *scene= CTX_data_scene(C); - ARegion *ar= CTX_wm_region(C); - - outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_renderability_cb); - - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_renderability_toggle(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Toggle Renderability"; - ot->idname= "OUTLINER_OT_renderability_toggle"; - ot->description= "Toggle the renderability of selected items"; - - /* callbacks */ - ot->exec= outliner_toggle_renderability_exec; - ot->poll= ED_operator_outliner_active; - - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; -} - -/* --- */ - -static int outliner_toggle_expanded_exec(bContext *C, wmOperator *UNUSED(op)) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - ARegion *ar= CTX_wm_region(C); - - if (outliner_has_one_flag(soops, &soops->tree, TSE_CLOSED, 1)) - outliner_set_flag(soops, &soops->tree, TSE_CLOSED, 0); - else - outliner_set_flag(soops, &soops->tree, TSE_CLOSED, 1); - - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_expanded_toggle(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Expand/Collapse All"; - ot->idname= "OUTLINER_OT_expanded_toggle"; - ot->description= "Expand/Collapse all items"; - - /* callbacks */ - ot->exec= outliner_toggle_expanded_exec; - ot->poll= ED_operator_outliner_active; - - /* no undo or registry, UI option */ -} - -/* --- */ - -static int outliner_toggle_selected_exec(bContext *C, wmOperator *UNUSED(op)) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - ARegion *ar= CTX_wm_region(C); - Scene *scene= CTX_data_scene(C); - - if (outliner_has_one_flag(soops, &soops->tree, TSE_SELECTED, 1)) - outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 0); - else - outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 1); - - soops->storeflag |= SO_TREESTORE_REDRAW; - - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_selected_toggle(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Toggle Selected"; - ot->idname= "OUTLINER_OT_selected_toggle"; - ot->description= "Toggle the Outliner selection of items"; - - /* callbacks */ - ot->exec= outliner_toggle_selected_exec; - ot->poll= ED_operator_outliner_active; - - /* no undo or registry, UI option */ -} - -/* --- */ - -/* helper function for Show/Hide one level operator */ -static void outliner_openclose_level(SpaceOops *soops, ListBase *lb, int curlevel, int level, int open) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - - if(open) { - if(curlevel<=level) tselem->flag &= ~TSE_CLOSED; - } - else { - if(curlevel>=level) tselem->flag |= TSE_CLOSED; - } - - outliner_openclose_level(soops, &te->subtree, curlevel+1, level, open); - } -} - -static int outliner_one_level_exec(bContext *C, wmOperator *op) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - ARegion *ar= CTX_wm_region(C); - int add= RNA_boolean_get(op->ptr, "open"); - int level; - - level= outliner_has_one_flag(soops, &soops->tree, TSE_CLOSED, 1); - if(add==1) { - if(level) outliner_openclose_level(soops, &soops->tree, 1, level, 1); - } - else { - if(level==0) level= outliner_count_levels(soops, &soops->tree, 0); - if(level) outliner_openclose_level(soops, &soops->tree, 1, level-1, 0); - } - - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_show_one_level(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Show/Hide One Level"; - ot->idname= "OUTLINER_OT_show_one_level"; - ot->description= "Expand/collapse all entries by one level"; - - /* callbacks */ - ot->exec= outliner_one_level_exec; - ot->poll= ED_operator_outliner_active; - - /* no undo or registry, UI option */ - - /* properties */ - RNA_def_boolean(ot->srna, "open", 1, "Open", "Expand all entries one level deep."); -} - -/* This is not used anywhere at the moment */ -#if 0 -/* return 1 when levels were opened */ -static int outliner_open_back(SpaceOops *soops, TreeElement *te) -{ - TreeStoreElem *tselem; - int retval= 0; - - for (te= te->parent; te; te= te->parent) { - tselem= TREESTORE(te); - if (tselem->flag & TSE_CLOSED) { - tselem->flag &= ~TSE_CLOSED; - retval= 1; - } - } - return retval; -} - -static void outliner_open_reveal(SpaceOops *soops, ListBase *lb, TreeElement *teFind, int *found) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for (te= lb->first; te; te= te->next) { - /* check if this tree-element was the one we're seeking */ - if (te == teFind) { - *found= 1; - return; - } - - /* try to see if sub-tree contains it then */ - outliner_open_reveal(soops, &te->subtree, teFind, found); - if (*found) { - tselem= TREESTORE(te); - if (tselem->flag & TSE_CLOSED) - tselem->flag &= ~TSE_CLOSED; - return; - } - } -} -#endif - -// XXX just use View2D ops for this? -static void outliner_page_up_down(Scene *UNUSED(scene), ARegion *ar, SpaceOops *soops, int up) -{ - int dy= ar->v2d.mask.ymax-ar->v2d.mask.ymin; - - if(up == -1) dy= -dy; - ar->v2d.cur.ymin+= dy; - ar->v2d.cur.ymax+= dy; - - soops->storeflag |= SO_TREESTORE_REDRAW; -} - -/* **** do clicks on items ******* */ - -static int tree_element_active_renderlayer(bContext *C, TreeElement *te, TreeStoreElem *tselem, int set) -{ - Scene *sce; - - /* paranoia check */ - if(te->idcode!=ID_SCE) - return 0; - sce= (Scene *)tselem->id; - - if(set) { - sce->r.actlay= tselem->nr; - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, sce); - } - else { - return sce->r.actlay==tselem->nr; - } - return 0; -} - -static void tree_element_set_active_object(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) -{ - TreeStoreElem *tselem= TREESTORE(te); - Scene *sce; - Base *base; - Object *ob= NULL; - - /* if id is not object, we search back */ - if(te->idcode==ID_OB) ob= (Object *)tselem->id; - else { - ob= (Object *)outliner_search_back(soops, te, ID_OB); - if(ob==OBACT) return; - } - if(ob==NULL) return; - - sce= (Scene *)outliner_search_back(soops, te, ID_SCE); - if(sce && scene != sce) { - ED_screen_set_scene(C, sce); - } - - /* find associated base in current scene */ - base= object_in_scene(ob, scene); - - if(base) { - if(set==2) { - /* swap select */ - if(base->flag & SELECT) - ED_base_object_select(base, BA_DESELECT); - else - ED_base_object_select(base, BA_SELECT); - } - else { - /* deleselect all */ - scene_deselect_all(scene); - ED_base_object_select(base, BA_SELECT); - } - if(C) { - ED_base_object_activate(C, base); /* adds notifier */ - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - } - } - - if(ob!=scene->obedit) - ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); -} - -static int tree_element_active_material(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) -{ - TreeElement *tes; - Object *ob; - - /* we search for the object parent */ - ob= (Object *)outliner_search_back(soops, te, ID_OB); - // note: ob->matbits can be NULL when a local object points to a library mesh. - if(ob==NULL || ob!=OBACT || ob->matbits==NULL) return 0; // just paranoia - - /* searching in ob mat array? */ - tes= te->parent; - if(tes->idcode==ID_OB) { - if(set) { - ob->actcol= te->index+1; - ob->matbits[te->index]= 1; // make ob material active too - ob->colbits |= (1<index); - } - else { - if(ob->actcol == te->index+1) - if(ob->matbits[te->index]) return 1; - } - } - /* or we search for obdata material */ - else { - if(set) { - ob->actcol= te->index+1; - ob->matbits[te->index]= 0; // make obdata material active too - ob->colbits &= ~(1<index); - } - else { - if(ob->actcol == te->index+1) - if(ob->matbits[te->index]==0) return 1; - } - } - if(set) { - WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, NULL); - } - return 0; -} - -static int tree_element_active_texture(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) -{ - TreeElement *tep; - TreeStoreElem /* *tselem,*/ *tselemp; - Object *ob=OBACT; - SpaceButs *sbuts=NULL; - - if(ob==NULL) return 0; // no active object - - /*tselem= TREESTORE(te);*/ /*UNUSED*/ - - /* find buttons area (note, this is undefined really still, needs recode in blender) */ - /* XXX removed finding sbuts */ - - /* where is texture linked to? */ - tep= te->parent; - tselemp= TREESTORE(tep); - - if(tep->idcode==ID_WO) { - World *wrld= (World *)tselemp->id; - - if(set) { - if(sbuts) { - // XXX sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c - // XXX sbuts->texfrom= 1; - } -// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture - wrld->texact= te->index; - } - else if(tselemp->id == (ID *)(scene->world)) { - if(wrld->texact==te->index) return 1; - } - } - else if(tep->idcode==ID_LA) { - Lamp *la= (Lamp *)tselemp->id; - if(set) { - if(sbuts) { - // XXX sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c - // XXX sbuts->texfrom= 2; - } -// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture - la->texact= te->index; - } - else { - if(tselemp->id == ob->data) { - if(la->texact==te->index) return 1; - } - } - } - else if(tep->idcode==ID_MA) { - Material *ma= (Material *)tselemp->id; - if(set) { - if(sbuts) { - //sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c - // XXX sbuts->texfrom= 0; - } -// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture - ma->texact= (char)te->index; - - /* also set active material */ - ob->actcol= tep->index+1; - } - else if(tep->flag & TE_ACTIVE) { // this is active material - if(ma->texact==te->index) return 1; - } - } - - if(set) - WM_event_add_notifier(C, NC_TEXTURE, NULL); - - return 0; -} - - -static int tree_element_active_lamp(bContext *UNUSED(C), Scene *scene, SpaceOops *soops, TreeElement *te, int set) -{ - Object *ob; - - /* we search for the object parent */ - ob= (Object *)outliner_search_back(soops, te, ID_OB); - if(ob==NULL || ob!=OBACT) return 0; // just paranoia - - if(set) { -// XXX extern_set_butspace(F5KEY, 0); - } - else return 1; - - return 0; -} - -static int tree_element_active_camera(bContext *UNUSED(C), Scene *scene, SpaceOops *soops, TreeElement *te, int set) -{ - Object *ob= (Object *)outliner_search_back(soops, te, ID_OB); - - if(set) - return 0; - - return scene->camera == ob; -} - -static int tree_element_active_world(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) -{ - TreeElement *tep; - TreeStoreElem *tselem=NULL; - Scene *sce=NULL; - - tep= te->parent; - if(tep) { - tselem= TREESTORE(tep); - sce= (Scene *)tselem->id; - } - - if(set) { // make new scene active - if(sce && scene != sce) { - ED_screen_set_scene(C, sce); - } - } - - if(tep==NULL || tselem->id == (ID *)scene) { - if(set) { -// XXX extern_set_butspace(F8KEY, 0); - } - else { - return 1; - } - } - return 0; -} - -static int tree_element_active_defgroup(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set) -{ - Object *ob; - - /* id in tselem is object */ - ob= (Object *)tselem->id; - if(set) { - ob->actdef= te->index+1; - DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); - } - else { - if(ob==OBACT) - if(ob->actdef== te->index+1) return 1; - } - return 0; -} - -static int tree_element_active_posegroup(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set) -{ - Object *ob= (Object *)tselem->id; - - if(set) { - if (ob->pose) { - ob->pose->active_group= te->index+1; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - } - } - else { - if(ob==OBACT && ob->pose) { - if (ob->pose->active_group== te->index+1) return 1; - } - } - return 0; -} - -static int tree_element_active_posechannel(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set) -{ - Object *ob= (Object *)tselem->id; - bArmature *arm= ob->data; - bPoseChannel *pchan= te->directdata; - - if(set) { - if(!(pchan->bone->flag & BONE_HIDDEN_P)) { - - if(set==2) ED_pose_deselectall(ob, 2); // 2 = clear active tag - else ED_pose_deselectall(ob, 0); // 0 = deselect - - if(set==2 && (pchan->bone->flag & BONE_SELECTED)) { - pchan->bone->flag &= ~BONE_SELECTED; - } else { - pchan->bone->flag |= BONE_SELECTED; - arm->act_bone= pchan->bone; - } - - WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, ob); - - } - } - else { - if(ob==OBACT && ob->pose) { - if (pchan->bone->flag & BONE_SELECTED) return 1; - } - } - return 0; -} - -static int tree_element_active_bone(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set) -{ - bArmature *arm= (bArmature *)tselem->id; - Bone *bone= te->directdata; - - if(set) { - if(!(bone->flag & BONE_HIDDEN_P)) { - if(set==2) ED_pose_deselectall(OBACT, 2); // 2 is clear active tag - else ED_pose_deselectall(OBACT, 0); - - if(set==2 && (bone->flag & BONE_SELECTED)) { - bone->flag &= ~BONE_SELECTED; - } else { - bone->flag |= BONE_SELECTED; - arm->act_bone= bone; - } - - WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, OBACT); - } - } - else { - Object *ob= OBACT; - - if(ob && ob->data==arm) { - if (bone->flag & BONE_SELECTED) return 1; - } - } - return 0; -} - - -/* ebones only draw in editmode armature */ -static void tree_element_active_ebone__sel(bContext *C, Scene *scene, bArmature *arm, EditBone *ebone, short sel) -{ - if(sel) { - ebone->flag |= BONE_SELECTED|BONE_ROOTSEL|BONE_TIPSEL; - arm->act_edbone= ebone; - // flush to parent? - if(ebone->parent && (ebone->flag & BONE_CONNECTED)) ebone->parent->flag |= BONE_TIPSEL; - } - else { - ebone->flag &= ~(BONE_SELECTED|BONE_ROOTSEL|BONE_TIPSEL); - // flush to parent? - if(ebone->parent && (ebone->flag & BONE_CONNECTED)) ebone->parent->flag &= ~BONE_TIPSEL; - } - - WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, scene->obedit); -} -static int tree_element_active_ebone(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tselem), int set) -{ - bArmature *arm= scene->obedit->data; - EditBone *ebone= te->directdata; - - if(set==1) { - if(!(ebone->flag & BONE_HIDDEN_A)) { - ED_armature_deselect_all(scene->obedit, 0); // deselect - tree_element_active_ebone__sel(C, scene, arm, ebone, TRUE); - return 1; - } - } - else if (set==2) { - if(!(ebone->flag & BONE_HIDDEN_A)) { - if(!(ebone->flag & BONE_SELECTED)) { - tree_element_active_ebone__sel(C, scene, arm, ebone, TRUE); - return 1; - } - else { - /* entirely selected, so de-select */ - tree_element_active_ebone__sel(C, scene, arm, ebone, FALSE); - return 0; - } - } - } - else if (ebone->flag & BONE_SELECTED) { - return 1; - } - return 0; -} - -static int tree_element_active_modifier(bContext *C, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set) -{ - if(set) { - Object *ob= (Object *)tselem->id; - - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); - -// XXX extern_set_butspace(F9KEY, 0); - } - - return 0; -} - -static int tree_element_active_psys(bContext *C, Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *tselem, int set) -{ - if(set) { - Object *ob= (Object *)tselem->id; - - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); - -// XXX extern_set_butspace(F7KEY, 0); - } - - return 0; -} - -static int tree_element_active_constraint(bContext *C, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set) -{ - if(set) { - Object *ob= (Object *)tselem->id; - - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); -// XXX extern_set_butspace(F7KEY, 0); - } - - return 0; -} - -static int tree_element_active_text(bContext *UNUSED(C), Scene *UNUSED(scene), SpaceOops *UNUSED(soops), TreeElement *UNUSED(te), int UNUSED(set)) -{ - // XXX removed - return 0; -} - -/* generic call for ID data check or make/check active in UI */ -static int tree_element_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) -{ - - switch(te->idcode) { - case ID_MA: - return tree_element_active_material(C, scene, soops, te, set); - case ID_WO: - return tree_element_active_world(C, scene, soops, te, set); - case ID_LA: - return tree_element_active_lamp(C, scene, soops, te, set); - case ID_TE: - return tree_element_active_texture(C, scene, soops, te, set); - case ID_TXT: - return tree_element_active_text(C, scene, soops, te, set); - case ID_CA: - return tree_element_active_camera(C, scene, soops, te, set); - } - return 0; -} - -static int tree_element_active_pose(bContext *C, Scene *scene, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set) -{ - Object *ob= (Object *)tselem->id; - Base *base= object_in_scene(ob, scene); - - if(set) { - if(scene->obedit) - ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); - - if(ob->mode & OB_MODE_POSE) - ED_armature_exit_posemode(C, base); - else - ED_armature_enter_posemode(C, base); - } - else { - if(ob->mode & OB_MODE_POSE) return 1; - } - return 0; -} - -static int tree_element_active_sequence(TreeElement *te, TreeStoreElem *UNUSED(tselem), int set) -{ - Sequence *seq= (Sequence*) te->directdata; - - if(set) { -// XXX select_single_seq(seq, 1); - } - else { - if(seq->flag & SELECT) - return(1); - } - return(0); -} - -static int tree_element_active_sequence_dup(Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tselem), int set) -{ - Sequence *seq, *p; - Editing *ed= seq_give_editing(scene, FALSE); - - seq= (Sequence*)te->directdata; - if(set==0) { - if(seq->flag & SELECT) - return(1); - return(0); - } - -// XXX select_single_seq(seq, 1); - p= ed->seqbasep->first; - while(p) { - if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) { - p= p->next; - continue; - } - -// if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name)) -// XXX select_single_seq(p, 0); - p= p->next; - } - return(0); -} - -static int tree_element_active_keymap_item(bContext *UNUSED(C), TreeElement *te, TreeStoreElem *UNUSED(tselem), int set) -{ - wmKeyMapItem *kmi= te->directdata; - - if(set==0) { - if(kmi->flag & KMI_INACTIVE) return 0; - return 1; - } - else { - kmi->flag ^= KMI_INACTIVE; - } - return 0; -} - - -/* generic call for non-id data to make/check active in UI */ -/* Context can be NULL when set==0 */ -static int tree_element_type_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, int set) -{ - switch(tselem->type) { - case TSE_DEFGROUP: - return tree_element_active_defgroup(C, scene, te, tselem, set); - case TSE_BONE: - return tree_element_active_bone(C, scene, te, tselem, set); - case TSE_EBONE: - return tree_element_active_ebone(C, scene, te, tselem, set); - case TSE_MODIFIER: - return tree_element_active_modifier(C, te, tselem, set); - case TSE_LINKED_OB: - if(set) tree_element_set_active_object(C, scene, soops, te, set); - else if(tselem->id==(ID *)OBACT) return 1; - break; - case TSE_LINKED_PSYS: - return tree_element_active_psys(C, scene, te, tselem, set); - case TSE_POSE_BASE: - return tree_element_active_pose(C, scene, te, tselem, set); - case TSE_POSE_CHANNEL: - return tree_element_active_posechannel(C, scene, te, tselem, set); - case TSE_CONSTRAINT: - return tree_element_active_constraint(C, te, tselem, set); - case TSE_R_LAYER: - return tree_element_active_renderlayer(C, te, tselem, set); - case TSE_POSEGRP: - return tree_element_active_posegroup(C, scene, te, tselem, set); - case TSE_SEQUENCE: - return tree_element_active_sequence(te, tselem, set); - case TSE_SEQUENCE_DUP: - return tree_element_active_sequence_dup(scene, te, tselem, set); - case TSE_KEYMAP_ITEM: - return tree_element_active_keymap_item(C, te, tselem, set); - - } - return 0; -} - -static int do_outliner_item_activate(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int extend, const float mval[2]) -{ - - if(mval[1]>te->ys && mval[1]ys+UI_UNIT_Y) { - TreeStoreElem *tselem= TREESTORE(te); - int openclose= 0; - - /* open close icon */ - if((te->flag & TE_ICONROW)==0) { // hidden icon, no open/close - if( mval[0]>te->xs && mval[0]xs+UI_UNIT_X) - openclose= 1; - } - - if(openclose) { - /* all below close/open? */ - if(extend) { - tselem->flag &= ~TSE_CLOSED; - outliner_set_flag(soops, &te->subtree, TSE_CLOSED, !outliner_has_one_flag(soops, &te->subtree, TSE_CLOSED, 1)); - } - else { - if(tselem->flag & TSE_CLOSED) tselem->flag &= ~TSE_CLOSED; - else tselem->flag |= TSE_CLOSED; - - } - - return 1; - } - /* name and first icon */ - else if(mval[0]>te->xs+UI_UNIT_X && mval[0]xend) { - - /* always makes active object */ - if(tselem->type!=TSE_SEQUENCE && tselem->type!=TSE_SEQ_STRIP && tselem->type!=TSE_SEQUENCE_DUP) - tree_element_set_active_object(C, scene, soops, te, 1 + (extend!=0 && tselem->type==0)); - - if(tselem->type==0) { // the lib blocks - /* editmode? */ - if(te->idcode==ID_SCE) { - if(scene!=(Scene *)tselem->id) { - ED_screen_set_scene(C, (Scene *)tselem->id); - } - } - else if(te->idcode==ID_GR) { - Group *gr= (Group *)tselem->id; - GroupObject *gob; - - if(extend) { - int sel= BA_SELECT; - for(gob= gr->gobject.first; gob; gob= gob->next) { - if(gob->ob->flag & SELECT) { - sel= BA_DESELECT; - break; - } - } - - for(gob= gr->gobject.first; gob; gob= gob->next) { - ED_base_object_select(object_in_scene(gob->ob, scene), sel); - } - } - else { - scene_deselect_all(scene); - - for(gob= gr->gobject.first; gob; gob= gob->next) { - if((gob->ob->flag & SELECT) == 0) - ED_base_object_select(object_in_scene(gob->ob, scene), BA_SELECT); - } - } - - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - } - else if(ELEM5(te->idcode, ID_ME, ID_CU, ID_MB, ID_LT, ID_AR)) { - WM_operator_name_call(C, "OBJECT_OT_editmode_toggle", WM_OP_INVOKE_REGION_WIN, NULL); - } else { // rest of types - tree_element_active(C, scene, soops, te, 1); - } - - } - else tree_element_type_active(C, scene, soops, te, tselem, 1+(extend!=0)); - - return 1; - } - } - - for(te= te->subtree.first; te; te= te->next) { - if(do_outliner_item_activate(C, scene, ar, soops, te, extend, mval)) return 1; - } - return 0; -} - -/* event can enterkey, then it opens/closes */ -static int outliner_item_activate(bContext *C, wmOperator *op, wmEvent *event) -{ - Scene *scene= CTX_data_scene(C); - ARegion *ar= CTX_wm_region(C); - SpaceOops *soops= CTX_wm_space_outliner(C); - TreeElement *te; - float fmval[2]; - int extend= RNA_boolean_get(op->ptr, "extend"); - - UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1); - - if(!ELEM3(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF, SO_KEYMAP) && !(soops->flag & SO_HIDE_RESTRICTCOLS) && fmval[0] > ar->v2d.cur.xmax - OL_TOG_RESTRICT_VIEWX) - return OPERATOR_CANCELLED; - - for(te= soops->tree.first; te; te= te->next) { - if(do_outliner_item_activate(C, scene, ar, soops, te, extend, fmval)) break; - } - - if(te) { - ED_undo_push(C, "Outliner click event"); - } - else { - short selecting= -1; - int row; - - /* get row number - 100 here is just a dummy value since we don't need the column */ - UI_view2d_listview_view_to_cell(&ar->v2d, 1000, UI_UNIT_Y, 0.0f, OL_Y_OFFSET, - fmval[0], fmval[1], NULL, &row); - - /* select relevant row */ - outliner_select(soops, &soops->tree, &row, &selecting); - - soops->storeflag |= SO_TREESTORE_REDRAW; - - ED_undo_push(C, "Outliner selection event"); - } - - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_item_activate(wmOperatorType *ot) -{ - ot->name= "Activate Item"; - ot->idname= "OUTLINER_OT_item_activate"; - ot->description= "Handle mouse clicks to activate/select items"; - - ot->invoke= outliner_item_activate; - - ot->poll= ED_operator_outliner_active; - - RNA_def_boolean(ot->srna, "extend", 1, "Extend", "Extend selection for activation."); -} - -/* *********** */ - -static int do_outliner_item_openclose(bContext *C, SpaceOops *soops, TreeElement *te, int all, const float mval[2]) -{ - - if(mval[1]>te->ys && mval[1]ys+UI_UNIT_Y) { - TreeStoreElem *tselem= TREESTORE(te); - - /* all below close/open? */ - if(all) { - tselem->flag &= ~TSE_CLOSED; - outliner_set_flag(soops, &te->subtree, TSE_CLOSED, !outliner_has_one_flag(soops, &te->subtree, TSE_CLOSED, 1)); - } - else { - if(tselem->flag & TSE_CLOSED) tselem->flag &= ~TSE_CLOSED; - else tselem->flag |= TSE_CLOSED; - } - - return 1; - } - - for(te= te->subtree.first; te; te= te->next) { - if(do_outliner_item_openclose(C, soops, te, all, mval)) - return 1; - } - return 0; - -} - -/* event can enterkey, then it opens/closes */ -static int outliner_item_openclose(bContext *C, wmOperator *op, wmEvent *event) -{ - ARegion *ar= CTX_wm_region(C); - SpaceOops *soops= CTX_wm_space_outliner(C); - TreeElement *te; - float fmval[2]; - int all= RNA_boolean_get(op->ptr, "all"); - - UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1); - - for(te= soops->tree.first; te; te= te->next) { - if(do_outliner_item_openclose(C, soops, te, all, fmval)) - break; - } - - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_item_openclose(wmOperatorType *ot) -{ - ot->name= "Open/Close Item"; - ot->idname= "OUTLINER_OT_item_openclose"; - ot->description= "Toggle whether item under cursor is enabled or closed"; - - ot->invoke= outliner_item_openclose; - - ot->poll= ED_operator_outliner_active; - - RNA_def_boolean(ot->srna, "all", 1, "All", "Close or open all items."); - -} - - -/* ********************************************** */ - -static int do_outliner_item_rename(bContext *C, ARegion *ar, SpaceOops *soops, TreeElement *te, const float mval[2]) -{ - - if(mval[1]>te->ys && mval[1]ys+UI_UNIT_Y) { - TreeStoreElem *tselem= TREESTORE(te); - - /* name and first icon */ - if(mval[0]>te->xs+UI_UNIT_X && mval[0]xend) { - - /* can't rename rna datablocks entries */ - if(ELEM3(tselem->type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) - ; - else if(ELEM10(tselem->type, TSE_ANIM_DATA, TSE_NLA, TSE_DEFGROUP_BASE, TSE_CONSTRAINT_BASE, TSE_MODIFIER_BASE, TSE_SCRIPT_BASE, TSE_POSE_BASE, TSE_POSEGRP_BASE, TSE_R_LAYER_BASE, TSE_R_PASS)) - error("Cannot edit builtin name"); - else if(ELEM3(tselem->type, TSE_SEQUENCE, TSE_SEQ_STRIP, TSE_SEQUENCE_DUP)) - error("Cannot edit sequence name"); - else if(tselem->id->lib) { - // XXX error_libdata(); - } - else if(te->idcode == ID_LI && te->parent) { - error("Cannot edit the path of an indirectly linked library"); - } - else { - tselem->flag |= TSE_TEXTBUT; - ED_region_tag_redraw(ar); - } - } - return 1; - } - - for(te= te->subtree.first; te; te= te->next) { - if(do_outliner_item_rename(C, ar, soops, te, mval)) return 1; - } - return 0; -} - -static int outliner_item_rename(bContext *C, wmOperator *UNUSED(op), wmEvent *event) -{ - ARegion *ar= CTX_wm_region(C); - SpaceOops *soops= CTX_wm_space_outliner(C); - TreeElement *te; - float fmval[2]; - - UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1); - - for(te= soops->tree.first; te; te= te->next) { - if(do_outliner_item_rename(C, ar, soops, te, fmval)) break; - } - - return OPERATOR_FINISHED; -} - - -void OUTLINER_OT_item_rename(wmOperatorType *ot) -{ - ot->name= "Rename Item"; - ot->idname= "OUTLINER_OT_item_rename"; - ot->description= "Rename item under cursor"; - - ot->invoke= outliner_item_rename; - - ot->poll= ED_operator_outliner_active; -} - -static TreeElement *outliner_find_id(SpaceOops *soops, ListBase *lb, ID *id) -{ - TreeElement *te, *tes; - TreeStoreElem *tselem; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(tselem->type==0) { - if(tselem->id==id) return te; - /* only deeper on scene or object */ - if( te->idcode==ID_OB || te->idcode==ID_SCE || (soops->outlinevis == SO_GROUPS && te->idcode==ID_GR)) { - tes= outliner_find_id(soops, &te->subtree, id); - if(tes) return tes; - } - } - } - return NULL; -} - -static int outliner_show_active_exec(bContext *C, wmOperator *UNUSED(op)) -{ - SpaceOops *so= CTX_wm_space_outliner(C); - Scene *scene= CTX_data_scene(C); - ARegion *ar= CTX_wm_region(C); - View2D *v2d= &ar->v2d; - - TreeElement *te; - int xdelta, ytop; - - // TODO: make this get this info from context instead... - if (OBACT == NULL) - return OPERATOR_CANCELLED; - - te= outliner_find_id(so, &so->tree, (ID *)OBACT); - if (te) { - /* make te->ys center of view */ - ytop= (int)(te->ys + (v2d->mask.ymax - v2d->mask.ymin)/2); - if (ytop>0) ytop= 0; - - v2d->cur.ymax= (float)ytop; - v2d->cur.ymin= (float)(ytop-(v2d->mask.ymax - v2d->mask.ymin)); - - /* make te->xs ==> te->xend center of view */ - xdelta = (int)(te->xs - v2d->cur.xmin); - v2d->cur.xmin += xdelta; - v2d->cur.xmax += xdelta; - - so->storeflag |= SO_TREESTORE_REDRAW; - } - - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_show_active(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Show Active"; - ot->idname= "OUTLINER_OT_show_active"; - ot->description= "Adjust the view so that the active Object is shown centered"; - - /* callbacks */ - ot->exec= outliner_show_active_exec; - ot->poll= ED_operator_outliner_active; -} - -/* tse is not in the treestore, we use its contents to find a match */ -static TreeElement *outliner_find_tse(SpaceOops *soops, TreeStoreElem *tse) -{ - TreeStore *ts= soops->treestore; - TreeStoreElem *tselem; - int a; - - if(tse->id==NULL) return NULL; - - /* check if 'tse' is in treestore */ - tselem= ts->data; - for(a=0; ausedelem; a++, tselem++) { - if((tse->type==0 && tselem->type==0) || (tselem->type==tse->type && tselem->nr==tse->nr)) { - if(tselem->id==tse->id) { - break; - } - } - } - if(tselem) - return outliner_find_tree_element(&soops->tree, a); - - return NULL; -} - - -/* Called to find an item based on name. - */ -#if 0 - -/* recursive helper for function below */ -static void outliner_set_coordinates_element(SpaceOops *soops, TreeElement *te, int startx, int *starty) -{ - TreeStoreElem *tselem= TREESTORE(te); - - /* store coord and continue, we need coordinates for elements outside view too */ - te->xs= (float)startx; - te->ys= (float)(*starty); - *starty-= UI_UNIT_Y; - - if((tselem->flag & TSE_CLOSED)==0) { - TreeElement *ten; - for(ten= te->subtree.first; ten; ten= ten->next) { - outliner_set_coordinates_element(soops, ten, startx+UI_UNIT_X, starty); - } - } - -} - -/* to retrieve coordinates with redrawing the entire tree */ -static void outliner_set_coordinates(ARegion *ar, SpaceOops *soops) -{ - TreeElement *te; - int starty= (int)(ar->v2d.tot.ymax)-UI_UNIT_Y; - int startx= 0; - - for(te= soops->tree.first; te; te= te->next) { - outliner_set_coordinates_element(soops, te, startx, &starty); - } -} - -/* find next element that has this name */ -static TreeElement *outliner_find_named(SpaceOops *soops, ListBase *lb, char *name, int flags, TreeElement *prev, int *prevFound) -{ - TreeElement *te, *tes; - - for (te= lb->first; te; te= te->next) { - int found = outliner_filter_has_name(te, name, flags); - - if(found) { - /* name is right, but is element the previous one? */ - if (prev) { - if ((te != prev) && (*prevFound)) - return te; - if (te == prev) { - *prevFound = 1; - } - } - else - return te; - } - - tes= outliner_find_named(soops, &te->subtree, name, flags, prev, prevFound); - if(tes) return tes; - } - - /* nothing valid found */ - return NULL; -} - -static void outliner_find_panel(Scene *UNUSED(scene), ARegion *ar, SpaceOops *soops, int again, int flags) -{ - TreeElement *te= NULL; - TreeElement *last_find; - TreeStoreElem *tselem; - int ytop, xdelta, prevFound=0; - char name[32]; - - /* get last found tree-element based on stored search_tse */ - last_find= outliner_find_tse(soops, &soops->search_tse); - - /* determine which type of search to do */ - if (again && last_find) { - /* no popup panel - previous + user wanted to search for next after previous */ - BLI_strncpy(name, soops->search_string, sizeof(name)); - flags= soops->search_flags; - - /* try to find matching element */ - te= outliner_find_named(soops, &soops->tree, name, flags, last_find, &prevFound); - if (te==NULL) { - /* no more matches after previous, start from beginning again */ - prevFound= 1; - te= outliner_find_named(soops, &soops->tree, name, flags, last_find, &prevFound); - } - } - else { - /* pop up panel - no previous, or user didn't want search after previous */ - strcpy(name, ""); -// XXX if (sbutton(name, 0, sizeof(name)-1, "Find: ") && name[0]) { -// te= outliner_find_named(soops, &soops->tree, name, flags, NULL, &prevFound); -// } -// else return; /* XXX RETURN! XXX */ - } - - /* do selection and reveal */ - if (te) { - tselem= TREESTORE(te); - if (tselem) { - /* expand branches so that it will be visible, we need to get correct coordinates */ - if( outliner_open_back(soops, te)) - outliner_set_coordinates(ar, soops); - - /* deselect all visible, and select found element */ - outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 0); - tselem->flag |= TSE_SELECTED; - - /* make te->ys center of view */ - ytop= (int)(te->ys + (ar->v2d.mask.ymax-ar->v2d.mask.ymin)/2); - if(ytop>0) ytop= 0; - ar->v2d.cur.ymax= (float)ytop; - ar->v2d.cur.ymin= (float)(ytop-(ar->v2d.mask.ymax-ar->v2d.mask.ymin)); - - /* make te->xs ==> te->xend center of view */ - xdelta = (int)(te->xs - ar->v2d.cur.xmin); - ar->v2d.cur.xmin += xdelta; - ar->v2d.cur.xmax += xdelta; - - /* store selection */ - soops->search_tse= *tselem; - - BLI_strncpy(soops->search_string, name, 33); - soops->search_flags= flags; - - /* redraw */ - soops->storeflag |= SO_TREESTORE_REDRAW; - } - } - else { - /* no tree-element found */ - error("Not found: %s", name); - } -} -#endif - -/* helper function for tree_element_shwo_hierarchy() - recursively checks whether subtrees have any objects*/ -static int subtree_has_objects(SpaceOops *soops, ListBase *lb) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(tselem->type==0 && te->idcode==ID_OB) return 1; - if( subtree_has_objects(soops, &te->subtree)) return 1; - } - return 0; -} - -/* recursive helper function for Show Hierarchy operator */ -static void tree_element_show_hierarchy(Scene *scene, SpaceOops *soops, ListBase *lb) -{ - TreeElement *te; - TreeStoreElem *tselem; - - /* open all object elems, close others */ - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - - if(tselem->type==0) { - if(te->idcode==ID_SCE) { - if(tselem->id!=(ID *)scene) tselem->flag |= TSE_CLOSED; - else tselem->flag &= ~TSE_CLOSED; - } - else if(te->idcode==ID_OB) { - if(subtree_has_objects(soops, &te->subtree)) tselem->flag &= ~TSE_CLOSED; - else tselem->flag |= TSE_CLOSED; - } - } - else tselem->flag |= TSE_CLOSED; - - if(tselem->flag & TSE_CLOSED); else tree_element_show_hierarchy(scene, soops, &te->subtree); - } -} - -/* show entire object level hierarchy */ -static int outliner_show_hierarchy_exec(bContext *C, wmOperator *UNUSED(op)) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - ARegion *ar= CTX_wm_region(C); - Scene *scene= CTX_data_scene(C); - - /* recursively open/close levels */ - tree_element_show_hierarchy(scene, soops, &soops->tree); - - ED_region_tag_redraw(ar); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_show_hierarchy(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Show Hierarchy"; - ot->idname= "OUTLINER_OT_show_hierarchy"; - ot->description= "Open all object entries and close all others"; - - /* callbacks */ - ot->exec= outliner_show_hierarchy_exec; - ot->poll= ED_operator_outliner_active; // TODO: shouldn't be allowed in RNA views... - - /* no undo or registry, UI option */ -} - -void outliner_select(SpaceOops *soops, ListBase *lb, int *index, short *selecting) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for (te= lb->first; te && *index >= 0; te=te->next, (*index)--) { - tselem= TREESTORE(te); - - /* if we've encountered the right item, set its 'Outliner' selection status */ - if (*index == 0) { - /* this should be the last one, so no need to do anything with index */ - if ((te->flag & TE_ICONROW)==0) { - /* -1 value means toggle testing for now... */ - if (*selecting == -1) { - if (tselem->flag & TSE_SELECTED) - *selecting= 0; - else - *selecting= 1; - } - - /* set selection */ - if (*selecting) - tselem->flag |= TSE_SELECTED; - else - tselem->flag &= ~TSE_SELECTED; - } - } - else if ((tselem->flag & TSE_CLOSED)==0) { - /* Only try selecting sub-elements if we haven't hit the right element yet - * - * Hack warning: - * Index must be reduced before supplying it to the sub-tree to try to do - * selection, however, we need to increment it again for the next loop to - * function correctly - */ - (*index)--; - outliner_select(soops, &te->subtree, index, selecting); - (*index)++; - } - } -} - -/* ************ SELECTION OPERATIONS ********* */ - -static void set_operation_types(SpaceOops *soops, ListBase *lb, - int *scenelevel, - int *objectlevel, - int *idlevel, - int *datalevel) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(tselem->flag & TSE_SELECTED) { - if(tselem->type) { - if(*datalevel==0) - *datalevel= tselem->type; - else if(*datalevel!=tselem->type) - *datalevel= -1; - } - else { - int idcode= GS(tselem->id->name); - switch(idcode) { - case ID_SCE: - *scenelevel= 1; - break; - case ID_OB: - *objectlevel= 1; - break; - - case ID_ME: case ID_CU: case ID_MB: case ID_LT: - case ID_LA: case ID_AR: case ID_CA: - case ID_MA: case ID_TE: case ID_IP: case ID_IM: - case ID_SO: case ID_KE: case ID_WO: case ID_AC: - case ID_NLA: case ID_TXT: case ID_GR: - if(*idlevel==0) *idlevel= idcode; - else if(*idlevel!=idcode) *idlevel= -1; - break; - } - } - } - if((tselem->flag & TSE_CLOSED)==0) { - set_operation_types(soops, &te->subtree, - scenelevel, objectlevel, idlevel, datalevel); - } - } -} - -static void unlink_material_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *te, TreeStoreElem *tsep, TreeStoreElem *UNUSED(tselem)) -{ - Material **matar=NULL; - int a, totcol=0; - - if( GS(tsep->id->name)==ID_OB) { - Object *ob= (Object *)tsep->id; - totcol= ob->totcol; - matar= ob->mat; - } - else if( GS(tsep->id->name)==ID_ME) { - Mesh *me= (Mesh *)tsep->id; - totcol= me->totcol; - matar= me->mat; - } - else if( GS(tsep->id->name)==ID_CU) { - Curve *cu= (Curve *)tsep->id; - totcol= cu->totcol; - matar= cu->mat; - } - else if( GS(tsep->id->name)==ID_MB) { - MetaBall *mb= (MetaBall *)tsep->id; - totcol= mb->totcol; - matar= mb->mat; - } - - for(a=0; aindex && matar[a]) { - matar[a]->id.us--; - matar[a]= NULL; - } - } -} - -static void unlink_texture_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *te, TreeStoreElem *tsep, TreeStoreElem *UNUSED(tselem)) -{ - MTex **mtex= NULL; - int a; - - if( GS(tsep->id->name)==ID_MA) { - Material *ma= (Material *)tsep->id; - mtex= ma->mtex; - } - else if( GS(tsep->id->name)==ID_LA) { - Lamp *la= (Lamp *)tsep->id; - mtex= la->mtex; - } - else if( GS(tsep->id->name)==ID_WO) { - World *wrld= (World *)tsep->id; - mtex= wrld->mtex; - } - else return; - - for(a=0; aindex && mtex[a]) { - if(mtex[a]->tex) { - mtex[a]->tex->id.us--; - mtex[a]->tex= NULL; - } - } - } -} - -static void unlink_group_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *tsep, TreeStoreElem *tselem) -{ - Group *group= (Group *)tselem->id; - - if(tsep) { - if( GS(tsep->id->name)==ID_OB) { - Object *ob= (Object *)tsep->id; - ob->dup_group= NULL; - } - } - else { - unlink_group(group); - } -} - -static void outliner_do_libdata_operation(bContext *C, Scene *scene, SpaceOops *soops, ListBase *lb, - void (*operation_cb)(bContext *C, Scene *scene, TreeElement *, TreeStoreElem *, TreeStoreElem *)) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te=lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(tselem->flag & TSE_SELECTED) { - if(tselem->type==0) { - TreeStoreElem *tsep= TREESTORE(te->parent); - operation_cb(C, scene, te, tsep, tselem); - } - } - if((tselem->flag & TSE_CLOSED)==0) { - outliner_do_libdata_operation(C, scene, soops, &te->subtree, operation_cb); - } - } -} - -/* */ - -static void object_select_cb(bContext *UNUSED(C), Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) -{ - Base *base= (Base *)te->directdata; - - if(base==NULL) base= object_in_scene((Object *)tselem->id, scene); - if(base && ((base->object->restrictflag & OB_RESTRICT_VIEW)==0)) { - base->flag |= SELECT; - base->object->flag |= SELECT; - } -} - -static void object_deselect_cb(bContext *UNUSED(C), Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) -{ - Base *base= (Base *)te->directdata; - - if(base==NULL) base= object_in_scene((Object *)tselem->id, scene); - if(base) { - base->flag &= ~SELECT; - base->object->flag &= ~SELECT; - } -} - -static void object_delete_cb(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) -{ - Base *base= (Base *)te->directdata; - - if(base==NULL) - base= object_in_scene((Object *)tselem->id, scene); - if(base) { - // check also library later - if(scene->obedit==base->object) - ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); - - ED_base_object_free_and_unlink(CTX_data_main(C), scene, base); - te->directdata= NULL; - tselem->id= NULL; - } - -} - -static void id_local_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) -{ - if(tselem->id->lib && (tselem->id->flag & LIB_EXTERN)) { - tselem->id->lib= NULL; - tselem->id->flag= LIB_LOCAL; - new_id(NULL, tselem->id, NULL); - } -} - -static void group_linkobs2scene_cb(bContext *UNUSED(C), Scene *scene, TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) -{ - Group *group= (Group *)tselem->id; - GroupObject *gob; - Base *base; - - for(gob=group->gobject.first; gob; gob=gob->next) { - base= object_in_scene(gob->ob, scene); - if (base) { - base->object->flag |= SELECT; - base->flag |= SELECT; - } else { - /* link to scene */ - base= MEM_callocN( sizeof(Base), "add_base"); - BLI_addhead(&scene->base, base); - base->lay= (1<<20)-1; /*v3d->lay;*/ /* would be nice to use the 3d layer but the include's not here */ - gob->ob->flag |= SELECT; - base->flag = gob->ob->flag; - base->object= gob->ob; - id_lib_extern((ID *)gob->ob); /* incase these are from a linked group */ - } - } -} - -static void outliner_do_object_operation(bContext *C, Scene *scene_act, SpaceOops *soops, ListBase *lb, - void (*operation_cb)(bContext *C, Scene *scene, TreeElement *, TreeStoreElem *, TreeStoreElem *)) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te=lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(tselem->flag & TSE_SELECTED) { - if(tselem->type==0 && te->idcode==ID_OB) { - // when objects selected in other scenes... dunno if that should be allowed - Scene *scene_owner= (Scene *)outliner_search_back(soops, te, ID_SCE); - if(scene_owner && scene_act != scene_owner) { - ED_screen_set_scene(C, scene_owner); - } - /* important to use 'scene_owner' not scene_act else deleting objects can crash. - * only use 'scene_act' when 'scene_owner' is NULL, which can happen when the - * outliner isnt showing scenes: Visible Layer draw mode for eg. */ - operation_cb(C, scene_owner ? scene_owner : scene_act, te, NULL, tselem); - } - } - if((tselem->flag & TSE_CLOSED)==0) { - outliner_do_object_operation(C, scene_act, soops, &te->subtree, operation_cb); - } - } -} - -/* ******************************************** */ - -static void pchan_cb(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem)) -{ - bPoseChannel *pchan= (bPoseChannel *)te->directdata; - - if(event==1) - pchan->bone->flag |= BONE_SELECTED; - else if(event==2) - pchan->bone->flag &= ~BONE_SELECTED; - else if(event==3) { - pchan->bone->flag |= BONE_HIDDEN_P; - pchan->bone->flag &= ~BONE_SELECTED; - } - else if(event==4) - pchan->bone->flag &= ~BONE_HIDDEN_P; -} - -static void bone_cb(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem)) -{ - Bone *bone= (Bone *)te->directdata; - - if(event==1) - bone->flag |= BONE_SELECTED; - else if(event==2) - bone->flag &= ~BONE_SELECTED; - else if(event==3) { - bone->flag |= BONE_HIDDEN_P; - bone->flag &= ~BONE_SELECTED; - } - else if(event==4) - bone->flag &= ~BONE_HIDDEN_P; -} - -static void ebone_cb(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem)) -{ - EditBone *ebone= (EditBone *)te->directdata; - - if(event==1) - ebone->flag |= BONE_SELECTED; - else if(event==2) - ebone->flag &= ~BONE_SELECTED; - else if(event==3) { - ebone->flag |= BONE_HIDDEN_A; - ebone->flag &= ~BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; - } - else if(event==4) - ebone->flag &= ~BONE_HIDDEN_A; -} - -static void sequence_cb(int event, TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tselem)) -{ -// Sequence *seq= (Sequence*) te->directdata; - if(event==1) { -// XXX select_single_seq(seq, 1); - } -} - -static void outliner_do_data_operation(SpaceOops *soops, int type, int event, ListBase *lb, - void (*operation_cb)(int, TreeElement *, TreeStoreElem *)) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te=lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(tselem->flag & TSE_SELECTED) { - if(tselem->type==type) { - operation_cb(event, te, tselem); - } - } - if((tselem->flag & TSE_CLOSED)==0) { - outliner_do_data_operation(soops, type, event, &te->subtree, operation_cb); - } - } -} - -static void outliner_del(bContext *C, Scene *scene, ARegion *UNUSED(ar), SpaceOops *soops) -{ - - if(soops->outlinevis==SO_SEQUENCE) - ;// del_seq(); - else { - outliner_do_object_operation(C, scene, soops, &soops->tree, object_delete_cb); - DAG_scene_sort(CTX_data_main(C), scene); - ED_undo_push(C, "Delete Objects"); - WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); - } -} - -/* **************************************** */ - -static EnumPropertyItem prop_object_op_types[] = { - {1, "SELECT", 0, "Select", ""}, - {2, "DESELECT", 0, "Deselect", ""}, - {4, "DELETE", 0, "Delete", ""}, - {6, "TOGVIS", 0, "Toggle Visible", ""}, - {7, "TOGSEL", 0, "Toggle Selectable", ""}, - {8, "TOGREN", 0, "Toggle Renderable", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int outliner_object_operation_exec(bContext *C, wmOperator *op) -{ - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - SpaceOops *soops= CTX_wm_space_outliner(C); - int event; - const char *str= NULL; - - /* check for invalid states */ - if (soops == NULL) - return OPERATOR_CANCELLED; - - event= RNA_enum_get(op->ptr, "type"); - - if(event==1) { - Scene *sce= scene; // to be able to delete, scenes are set... - outliner_do_object_operation(C, scene, soops, &soops->tree, object_select_cb); - if(scene != sce) { - ED_screen_set_scene(C, sce); - } - - str= "Select Objects"; - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - } - else if(event==2) { - outliner_do_object_operation(C, scene, soops, &soops->tree, object_deselect_cb); - str= "Deselect Objects"; - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - } - else if(event==4) { - outliner_do_object_operation(C, scene, soops, &soops->tree, object_delete_cb); - DAG_scene_sort(bmain, scene); - str= "Delete Objects"; - WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); - } - else if(event==5) { /* disabled, see above enum (ton) */ - outliner_do_object_operation(C, scene, soops, &soops->tree, id_local_cb); - str= "Localized Objects"; - } - else if(event==6) { - outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_visibility_cb); - str= "Toggle Visibility"; - WM_event_add_notifier(C, NC_SCENE|ND_OB_VISIBLE, scene); - } - else if(event==7) { - outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_selectability_cb); - str= "Toggle Selectability"; - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - } - else if(event==8) { - outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_renderability_cb); - str= "Toggle Renderability"; - WM_event_add_notifier(C, NC_SCENE|ND_OB_RENDER, scene); - } - - ED_undo_push(C, str); - - return OPERATOR_FINISHED; -} - - -void OUTLINER_OT_object_operation(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Outliner Object Operation"; - ot->idname= "OUTLINER_OT_object_operation"; - ot->description= ""; - - /* callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= outliner_object_operation_exec; - ot->poll= ED_operator_outliner_active; - - ot->flag= 0; - - ot->prop= RNA_def_enum(ot->srna, "type", prop_object_op_types, 0, "Object Operation", ""); -} - -/* **************************************** */ - -static EnumPropertyItem prop_group_op_types[] = { - {1, "UNLINK", 0, "Unlink", ""}, - {2, "LOCAL", 0, "Make Local", ""}, - {3, "LINK", 0, "Link Group Objects to Scene", ""}, - {4, "TOGVIS", 0, "Toggle Visible", ""}, - {5, "TOGSEL", 0, "Toggle Selectable", ""}, - {6, "TOGREN", 0, "Toggle Renderable", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int outliner_group_operation_exec(bContext *C, wmOperator *op) -{ - Scene *scene= CTX_data_scene(C); - SpaceOops *soops= CTX_wm_space_outliner(C); - int event; - - /* check for invalid states */ - if (soops == NULL) - return OPERATOR_CANCELLED; - - event= RNA_enum_get(op->ptr, "type"); - - if(event==1) { - outliner_do_libdata_operation(C, scene, soops, &soops->tree, unlink_group_cb); - ED_undo_push(C, "Unlink group"); - } - else if(event==2) { - outliner_do_libdata_operation(C, scene, soops, &soops->tree, id_local_cb); - ED_undo_push(C, "Localized Data"); - } - else if(event==3) { - outliner_do_libdata_operation(C, scene, soops, &soops->tree, group_linkobs2scene_cb); - ED_undo_push(C, "Link Group Objects to Scene"); - } - - - WM_event_add_notifier(C, NC_GROUP, NULL); - - return OPERATOR_FINISHED; -} - - -void OUTLINER_OT_group_operation(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Outliner Group Operation"; - ot->idname= "OUTLINER_OT_group_operation"; - ot->description= ""; - - /* callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= outliner_group_operation_exec; - ot->poll= ED_operator_outliner_active; - - ot->flag= 0; - - ot->prop= RNA_def_enum(ot->srna, "type", prop_group_op_types, 0, "Group Operation", ""); -} - -/* **************************************** */ - -static EnumPropertyItem prop_id_op_types[] = { - {1, "UNLINK", 0, "Unlink", ""}, - {2, "LOCAL", 0, "Make Local", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int outliner_id_operation_exec(bContext *C, wmOperator *op) -{ - Scene *scene= CTX_data_scene(C); - SpaceOops *soops= CTX_wm_space_outliner(C); - int scenelevel=0, objectlevel=0, idlevel=0, datalevel=0; - int event; - - /* check for invalid states */ - if (soops == NULL) - return OPERATOR_CANCELLED; - - set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); - - event= RNA_enum_get(op->ptr, "type"); - - if(event==1) { - switch(idlevel) { - case ID_MA: - outliner_do_libdata_operation(C, scene, soops, &soops->tree, unlink_material_cb); - ED_undo_push(C, "Unlink material"); - break; - case ID_TE: - outliner_do_libdata_operation(C, scene, soops, &soops->tree, unlink_texture_cb); - ED_undo_push(C, "Unlink texture"); - break; - default: - BKE_report(op->reports, RPT_WARNING, "Not Yet"); - } - } - else if(event==2) { - outliner_do_libdata_operation(C, scene, soops, &soops->tree, id_local_cb); - ED_undo_push(C, "Localized Data"); - } - - /* wrong notifier still... */ - WM_event_add_notifier(C, NC_OBJECT, NULL); - - return OPERATOR_FINISHED; -} - - -void OUTLINER_OT_id_operation(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Outliner ID data Operation"; - ot->idname= "OUTLINER_OT_id_operation"; - ot->description= ""; - - /* callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= outliner_id_operation_exec; - ot->poll= ED_operator_outliner_active; - - ot->flag= 0; - - ot->prop= RNA_def_enum(ot->srna, "type", prop_id_op_types, 0, "ID data Operation", ""); -} - -/* **************************************** */ - -static EnumPropertyItem prop_data_op_types[] = { - {1, "SELECT", 0, "Select", ""}, - {2, "DESELECT", 0, "Deselect", ""}, - {3, "HIDE", 0, "Hide", ""}, - {4, "UNHIDE", 0, "Unhide", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int outliner_data_operation_exec(bContext *C, wmOperator *op) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - int scenelevel=0, objectlevel=0, idlevel=0, datalevel=0; - int event; - - /* check for invalid states */ - if (soops == NULL) - return OPERATOR_CANCELLED; - - event= RNA_enum_get(op->ptr, "type"); - set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); - - if(datalevel==TSE_POSE_CHANNEL) { - if(event>0) { - outliner_do_data_operation(soops, datalevel, event, &soops->tree, pchan_cb); - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); - ED_undo_push(C, "PoseChannel operation"); - } - } - else if(datalevel==TSE_BONE) { - if(event>0) { - outliner_do_data_operation(soops, datalevel, event, &soops->tree, bone_cb); - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); - ED_undo_push(C, "Bone operation"); - } - } - else if(datalevel==TSE_EBONE) { - if(event>0) { - outliner_do_data_operation(soops, datalevel, event, &soops->tree, ebone_cb); - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); - ED_undo_push(C, "EditBone operation"); - } - } - else if(datalevel==TSE_SEQUENCE) { - if(event>0) { - outliner_do_data_operation(soops, datalevel, event, &soops->tree, sequence_cb); - } - } - - return OPERATOR_FINISHED; -} - - -void OUTLINER_OT_data_operation(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Outliner Data Operation"; - ot->idname= "OUTLINER_OT_data_operation"; - ot->description= ""; - - /* callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= outliner_data_operation_exec; - ot->poll= ED_operator_outliner_active; - - ot->flag= 0; - - ot->prop= RNA_def_enum(ot->srna, "type", prop_data_op_types, 0, "Data Operation", ""); -} - - -/* ******************** */ - - -static int do_outliner_operation_event(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, wmEvent *event, const float mval[2]) -{ - - if(mval[1]>te->ys && mval[1]ys+UI_UNIT_Y) { - int scenelevel=0, objectlevel=0, idlevel=0, datalevel=0; - TreeStoreElem *tselem= TREESTORE(te); - - /* select object that's clicked on and popup context menu */ - if (!(tselem->flag & TSE_SELECTED)) { - - if ( outliner_has_one_flag(soops, &soops->tree, TSE_SELECTED, 1) ) - outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 0); - - tselem->flag |= TSE_SELECTED; - /* redraw, same as outliner_select function */ - soops->storeflag |= SO_TREESTORE_REDRAW; - ED_region_tag_redraw(ar); - } - - set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); - - if(scenelevel) { - //if(objectlevel || datalevel || idlevel) error("Mixed selection"); - //else pupmenu("Scene Operations%t|Delete"); - } - else if(objectlevel) { - WM_operator_name_call(C, "OUTLINER_OT_object_operation", WM_OP_INVOKE_REGION_WIN, NULL); - } - else if(idlevel) { - if(idlevel==-1 || datalevel) error("Mixed selection"); - else { - if (idlevel==ID_GR) - WM_operator_name_call(C, "OUTLINER_OT_group_operation", WM_OP_INVOKE_REGION_WIN, NULL); - else - WM_operator_name_call(C, "OUTLINER_OT_id_operation", WM_OP_INVOKE_REGION_WIN, NULL); - } - } - else if(datalevel) { - if(datalevel==-1) error("Mixed selection"); - else { - WM_operator_name_call(C, "OUTLINER_OT_data_operation", WM_OP_INVOKE_REGION_WIN, NULL); - } - } - - return 1; - } - - for(te= te->subtree.first; te; te= te->next) { - if(do_outliner_operation_event(C, scene, ar, soops, te, event, mval)) - return 1; - } - return 0; -} - - -static int outliner_operation(bContext *C, wmOperator *UNUSED(op), wmEvent *event) -{ - Scene *scene= CTX_data_scene(C); - ARegion *ar= CTX_wm_region(C); - SpaceOops *soops= CTX_wm_space_outliner(C); - TreeElement *te; - float fmval[2]; - - UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1); - - for(te= soops->tree.first; te; te= te->next) { - if(do_outliner_operation_event(C, scene, ar, soops, te, event, fmval)) break; - } - - return OPERATOR_FINISHED; -} - -/* Menu only! Calls other operators */ -void OUTLINER_OT_operation(wmOperatorType *ot) -{ - ot->name= "Execute Operation"; - ot->idname= "OUTLINER_OT_operation"; - ot->description= "Context menu for item operations"; - - ot->invoke= outliner_operation; - - ot->poll= ED_operator_outliner_active; -} - - - -/* ***************** ANIMATO OPERATIONS ********************************** */ -/* KeyingSet and Driver Creation - Helper functions */ - -/* specialised poll callback for these operators to work in Datablocks view only */ -static int ed_operator_outliner_datablocks_active(bContext *C) -{ - ScrArea *sa= CTX_wm_area(C); - if ((sa) && (sa->spacetype==SPACE_OUTLINER)) { - SpaceOops *so= CTX_wm_space_outliner(C); - return (so->outlinevis == SO_DATABLOCKS); - } - return 0; -} - - -/* Helper func to extract an RNA path from selected tree element - * NOTE: the caller must zero-out all values of the pointers that it passes here first, as - * this function does not do that yet - */ -static void tree_element_to_path(SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, - ID **id, char **path, int *array_index, short *flag, short *UNUSED(groupmode)) -{ - ListBase hierarchy = {NULL, NULL}; - LinkData *ld; - TreeElement *tem, *temnext, *temsub; - TreeStoreElem *tse, *tsenext; - PointerRNA *ptr, *nextptr; - PropertyRNA *prop; - char *newpath=NULL; - - /* optimise tricks: - * - Don't do anything if the selected item is a 'struct', but arrays are allowed - */ - if (tselem->type == TSE_RNA_STRUCT) - return; - - /* Overview of Algorithm: - * 1. Go up the chain of parents until we find the 'root', taking note of the - * levels encountered in reverse-order (i.e. items are added to the start of the list - * for more convenient looping later) - * 2. Walk down the chain, adding from the first ID encountered - * (which will become the 'ID' for the KeyingSet Path), and build a - * path as we step through the chain - */ - - /* step 1: flatten out hierarchy of parents into a flat chain */ - for (tem= te->parent; tem; tem= tem->parent) { - ld= MEM_callocN(sizeof(LinkData), "LinkData for tree_element_to_path()"); - ld->data= tem; - BLI_addhead(&hierarchy, ld); - } - - /* step 2: step down hierarchy building the path (NOTE: addhead in previous loop was needed so that we can loop like this) */ - for (ld= hierarchy.first; ld; ld= ld->next) { - /* get data */ - tem= (TreeElement *)ld->data; - tse= TREESTORE(tem); - ptr= &tem->rnaptr; - prop= tem->directdata; - - /* check if we're looking for first ID, or appending to path */ - if (*id) { - /* just 'append' property to path - * - to prevent memory leaks, we must write to newpath not path, then free old path + swap them - */ - if(tse->type == TSE_RNA_PROPERTY) { - if(RNA_property_type(prop) == PROP_POINTER) { - /* for pointer we just append property name */ - newpath= RNA_path_append(*path, ptr, prop, 0, NULL); - } - else if(RNA_property_type(prop) == PROP_COLLECTION) { - char buf[128], *name; - - temnext= (TreeElement*)(ld->next->data); - tsenext= TREESTORE(temnext); - - nextptr= &temnext->rnaptr; - name= RNA_struct_name_get_alloc(nextptr, buf, sizeof(buf)); - - if(name) { - /* if possible, use name as a key in the path */ - newpath= RNA_path_append(*path, NULL, prop, 0, name); - - if(name != buf) - MEM_freeN(name); - } - else { - /* otherwise use index */ - int index= 0; - - for(temsub=tem->subtree.first; temsub; temsub=temsub->next, index++) - if(temsub == temnext) - break; - - newpath= RNA_path_append(*path, NULL, prop, index, NULL); - } - - ld= ld->next; - } - } - - if(newpath) { - if (*path) MEM_freeN(*path); - *path= newpath; - newpath= NULL; - } - } - else { - /* no ID, so check if entry is RNA-struct, and if that RNA-struct is an ID datablock to extract info from */ - if (tse->type == TSE_RNA_STRUCT) { - /* ptr->data not ptr->id.data seems to be the one we want, since ptr->data is sometimes the owner of this ID? */ - if(RNA_struct_is_ID(ptr->type)) { - *id= (ID *)ptr->data; - - /* clear path */ - if(*path) { - MEM_freeN(*path); - path= NULL; - } - } - } - } - } - - /* step 3: if we've got an ID, add the current item to the path */ - if (*id) { - /* add the active property to the path */ - ptr= &te->rnaptr; - prop= te->directdata; - - /* array checks */ - if (tselem->type == TSE_RNA_ARRAY_ELEM) { - /* item is part of an array, so must set the array_index */ - *array_index= te->index; - } - else if (RNA_property_array_length(ptr, prop)) { - /* entire array was selected, so keyframe all */ - *flag |= KSP_FLAG_WHOLE_ARRAY; - } - - /* path */ - newpath= RNA_path_append(*path, NULL, prop, 0, NULL); - if (*path) MEM_freeN(*path); - *path= newpath; - } - - /* free temp data */ - BLI_freelistN(&hierarchy); -} - -/* ***************** KEYINGSET OPERATIONS *************** */ - -/* These operators are only available in databrowser mode for now, as - * they depend on having RNA paths and/or hierarchies available. - */ -enum { - DRIVERS_EDITMODE_ADD = 0, - DRIVERS_EDITMODE_REMOVE, -} /*eDrivers_EditModes*/; - -/* Utilities ---------------------------------- */ - -/* Recursively iterate over tree, finding and working on selected items */ -static void do_outliner_drivers_editop(SpaceOops *soops, ListBase *tree, ReportList *reports, short mode) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for (te= tree->first; te; te=te->next) { - tselem= TREESTORE(te); - - /* if item is selected, perform operation */ - if (tselem->flag & TSE_SELECTED) { - ID *id= NULL; - char *path= NULL; - int array_index= 0; - short flag= 0; - short groupmode= KSP_GROUP_KSNAME; - - /* check if RNA-property described by this selected element is an animateable prop */ - if (ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM) && RNA_property_animateable(&te->rnaptr, te->directdata)) { - /* get id + path + index info from the selected element */ - tree_element_to_path(soops, te, tselem, - &id, &path, &array_index, &flag, &groupmode); - } - - /* only if ID and path were set, should we perform any actions */ - if (id && path) { - short dflags = CREATEDRIVER_WITH_DEFAULT_DVAR; - int arraylen = 1; - - /* array checks */ - if (flag & KSP_FLAG_WHOLE_ARRAY) { - /* entire array was selected, so add drivers for all */ - arraylen= RNA_property_array_length(&te->rnaptr, te->directdata); - } - else - arraylen= array_index; - - /* we should do at least one step */ - if (arraylen == array_index) - arraylen++; - - /* for each array element we should affect, add driver */ - for (; array_index < arraylen; array_index++) { - /* action depends on mode */ - switch (mode) { - case DRIVERS_EDITMODE_ADD: - { - /* add a new driver with the information obtained (only if valid) */ - ANIM_add_driver(reports, id, path, array_index, dflags, DRIVER_TYPE_PYTHON); - } - break; - case DRIVERS_EDITMODE_REMOVE: - { - /* remove driver matching the information obtained (only if valid) */ - ANIM_remove_driver(reports, id, path, array_index, dflags); - } - break; - } - } - - /* free path, since it had to be generated */ - MEM_freeN(path); - } - - - } - - /* go over sub-tree */ - if ((tselem->flag & TSE_CLOSED)==0) - do_outliner_drivers_editop(soops, &te->subtree, reports, mode); - } -} - -/* Add Operator ---------------------------------- */ - -static int outliner_drivers_addsel_exec(bContext *C, wmOperator *op) -{ - SpaceOops *soutliner= CTX_wm_space_outliner(C); - - /* check for invalid states */ - if (soutliner == NULL) - return OPERATOR_CANCELLED; - - /* recursively go into tree, adding selected items */ - do_outliner_drivers_editop(soutliner, &soutliner->tree, op->reports, DRIVERS_EDITMODE_ADD); - - /* send notifiers */ - WM_event_add_notifier(C, NC_ANIMATION|ND_FCURVES_ORDER, NULL); // XXX - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_drivers_add_selected(wmOperatorType *ot) -{ - /* api callbacks */ - ot->idname= "OUTLINER_OT_drivers_add_selected"; - ot->name= "Add Drivers for Selected"; - ot->description= "Add drivers to selected items"; - - /* api callbacks */ - ot->exec= outliner_drivers_addsel_exec; - ot->poll= ed_operator_outliner_datablocks_active; - - /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; -} - - -/* Remove Operator ---------------------------------- */ - -static int outliner_drivers_deletesel_exec(bContext *C, wmOperator *op) -{ - SpaceOops *soutliner= CTX_wm_space_outliner(C); - - /* check for invalid states */ - if (soutliner == NULL) - return OPERATOR_CANCELLED; - - /* recursively go into tree, adding selected items */ - do_outliner_drivers_editop(soutliner, &soutliner->tree, op->reports, DRIVERS_EDITMODE_REMOVE); - - /* send notifiers */ - WM_event_add_notifier(C, ND_KEYS, NULL); // XXX - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_drivers_delete_selected(wmOperatorType *ot) -{ - /* identifiers */ - ot->idname= "OUTLINER_OT_drivers_delete_selected"; - ot->name= "Delete Drivers for Selected"; - ot->description= "Delete drivers assigned to selected items"; - - /* api callbacks */ - ot->exec= outliner_drivers_deletesel_exec; - ot->poll= ed_operator_outliner_datablocks_active; - - /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; -} - -/* ***************** KEYINGSET OPERATIONS *************** */ - -/* These operators are only available in databrowser mode for now, as - * they depend on having RNA paths and/or hierarchies available. - */ -enum { - KEYINGSET_EDITMODE_ADD = 0, - KEYINGSET_EDITMODE_REMOVE, -} /*eKeyingSet_EditModes*/; - -/* Utilities ---------------------------------- */ - -/* find the 'active' KeyingSet, and add if not found (if adding is allowed) */ -// TODO: should this be an API func? -static KeyingSet *verify_active_keyingset(Scene *scene, short add) -{ - KeyingSet *ks= NULL; - - /* sanity check */ - if (scene == NULL) - return NULL; - - /* try to find one from scene */ - if (scene->active_keyingset > 0) - ks= BLI_findlink(&scene->keyingsets, scene->active_keyingset-1); - - /* add if none found */ - // XXX the default settings have yet to evolve - if ((add) && (ks==NULL)) { - ks= BKE_keyingset_add(&scene->keyingsets, NULL, KEYINGSET_ABSOLUTE, 0); - scene->active_keyingset= BLI_countlist(&scene->keyingsets); - } - - return ks; -} - -/* Recursively iterate over tree, finding and working on selected items */ -static void do_outliner_keyingset_editop(SpaceOops *soops, KeyingSet *ks, ListBase *tree, short mode) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for (te= tree->first; te; te=te->next) { - tselem= TREESTORE(te); - - /* if item is selected, perform operation */ - if (tselem->flag & TSE_SELECTED) { - ID *id= NULL; - char *path= NULL; - int array_index= 0; - short flag= 0; - short groupmode= KSP_GROUP_KSNAME; - - /* check if RNA-property described by this selected element is an animateable prop */ - if (ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM) && RNA_property_animateable(&te->rnaptr, te->directdata)) { - /* get id + path + index info from the selected element */ - tree_element_to_path(soops, te, tselem, - &id, &path, &array_index, &flag, &groupmode); - } - - /* only if ID and path were set, should we perform any actions */ - if (id && path) { - /* action depends on mode */ - switch (mode) { - case KEYINGSET_EDITMODE_ADD: - { - /* add a new path with the information obtained (only if valid) */ - // TODO: what do we do with group name? for now, we don't supply one, and just let this use the KeyingSet name - BKE_keyingset_add_path(ks, id, NULL, path, array_index, flag, groupmode); - ks->active_path= BLI_countlist(&ks->paths); - } - break; - case KEYINGSET_EDITMODE_REMOVE: - { - /* find the relevant path, then remove it from the KeyingSet */ - KS_Path *ksp= BKE_keyingset_find_path(ks, id, NULL, path, array_index, groupmode); - - if (ksp) { - /* free path's data */ - BKE_keyingset_free_path(ks, ksp); - - ks->active_path= 0; - } - } - break; - } - - /* free path, since it had to be generated */ - MEM_freeN(path); - } - } - - /* go over sub-tree */ - if ((tselem->flag & TSE_CLOSED)==0) - do_outliner_keyingset_editop(soops, ks, &te->subtree, mode); - } -} - -/* Add Operator ---------------------------------- */ - -static int outliner_keyingset_additems_exec(bContext *C, wmOperator *op) -{ - SpaceOops *soutliner= CTX_wm_space_outliner(C); - Scene *scene= CTX_data_scene(C); - KeyingSet *ks= verify_active_keyingset(scene, 1); - - /* check for invalid states */ - if (ks == NULL) { - BKE_report(op->reports, RPT_ERROR, "Operation requires an Active Keying Set"); - return OPERATOR_CANCELLED; - } - if (soutliner == NULL) - return OPERATOR_CANCELLED; - - /* recursively go into tree, adding selected items */ - do_outliner_keyingset_editop(soutliner, ks, &soutliner->tree, KEYINGSET_EDITMODE_ADD); - - /* send notifiers */ - WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_keyingset_add_selected(wmOperatorType *ot) -{ - /* identifiers */ - ot->idname= "OUTLINER_OT_keyingset_add_selected"; - ot->name= "Keying Set Add Selected"; - ot->description= "Add selected items (blue-grey rows) to active Keying Set"; - - /* api callbacks */ - ot->exec= outliner_keyingset_additems_exec; - ot->poll= ed_operator_outliner_datablocks_active; - - /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; -} - - -/* Remove Operator ---------------------------------- */ - -static int outliner_keyingset_removeitems_exec(bContext *C, wmOperator *UNUSED(op)) -{ - SpaceOops *soutliner= CTX_wm_space_outliner(C); - Scene *scene= CTX_data_scene(C); - KeyingSet *ks= verify_active_keyingset(scene, 1); - - /* check for invalid states */ - if (soutliner == NULL) - return OPERATOR_CANCELLED; - - /* recursively go into tree, adding selected items */ - do_outliner_keyingset_editop(soutliner, ks, &soutliner->tree, KEYINGSET_EDITMODE_REMOVE); - - /* send notifiers */ - WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); - - return OPERATOR_FINISHED; -} - -void OUTLINER_OT_keyingset_remove_selected(wmOperatorType *ot) -{ - /* identifiers */ - ot->idname= "OUTLINER_OT_keyingset_remove_selected"; - ot->name= "Keying Set Remove Selected"; - ot->description = "Remove selected items (blue-grey rows) from active Keying Set"; - - /* api callbacks */ - ot->exec= outliner_keyingset_removeitems_exec; - ot->poll= ed_operator_outliner_datablocks_active; - - /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; -} - -/* ***************** DRAW *************** */ - -/* make function calls a bit compacter */ -struct DrawIconArg { - uiBlock *block; - ID *id; - int xmax, x, y; - float alpha; -}; - -static void tselem_draw_icon_uibut(struct DrawIconArg *arg, int icon) -{ - /* restrict collumn clip... it has been coded by simply overdrawing, doesnt work for buttons */ - if(arg->x >= arg->xmax) - UI_icon_draw(arg->x, arg->y, icon); - else { - /* XXX investigate: button placement of icons is way different than UI_icon_draw? */ - float ufac= UI_UNIT_X/20.0f; - uiBut *but= uiDefIconBut(arg->block, LABEL, 0, icon, arg->x-3.0f*ufac, arg->y, UI_UNIT_X-4.0f*ufac, UI_UNIT_Y-4.0f*ufac, NULL, 0.0, 0.0, 1.0, arg->alpha, (arg->id && arg->id->lib) ? arg->id->lib->name : ""); - - if(arg->id) - uiButSetDragID(but, arg->id); - } - -} - -static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeStoreElem *tselem, TreeElement *te, float alpha) -{ - struct DrawIconArg arg; - - /* make function calls a bit compacter */ - arg.block= block; - arg.id= tselem->id; - arg.xmax= xmax; - arg.x= x; - arg.y= y; - arg.alpha= alpha; - - if(tselem->type) { - switch( tselem->type) { - case TSE_ANIM_DATA: - UI_icon_draw(x, y, ICON_ANIM_DATA); break; // xxx - case TSE_NLA: - UI_icon_draw(x, y, ICON_NLA); break; - case TSE_NLA_TRACK: - UI_icon_draw(x, y, ICON_NLA); break; // XXX - case TSE_NLA_ACTION: - UI_icon_draw(x, y, ICON_ACTION); break; - case TSE_DEFGROUP_BASE: - UI_icon_draw(x, y, ICON_GROUP_VERTEX); break; - case TSE_BONE: - case TSE_EBONE: - UI_icon_draw(x, y, ICON_BONE_DATA); break; - case TSE_CONSTRAINT_BASE: - UI_icon_draw(x, y, ICON_CONSTRAINT); break; - case TSE_MODIFIER_BASE: - UI_icon_draw(x, y, ICON_MODIFIER); break; - case TSE_LINKED_OB: - UI_icon_draw(x, y, ICON_OBJECT_DATA); break; - case TSE_LINKED_PSYS: - UI_icon_draw(x, y, ICON_PARTICLES); break; - case TSE_MODIFIER: - { - Object *ob= (Object *)tselem->id; - ModifierData *md= BLI_findlink(&ob->modifiers, tselem->nr); - switch(md->type) { - case eModifierType_Subsurf: - UI_icon_draw(x, y, ICON_MOD_SUBSURF); break; - case eModifierType_Armature: - UI_icon_draw(x, y, ICON_MOD_ARMATURE); break; - case eModifierType_Lattice: - UI_icon_draw(x, y, ICON_MOD_LATTICE); break; - case eModifierType_Curve: - UI_icon_draw(x, y, ICON_MOD_CURVE); break; - case eModifierType_Build: - UI_icon_draw(x, y, ICON_MOD_BUILD); break; - case eModifierType_Mirror: - UI_icon_draw(x, y, ICON_MOD_MIRROR); break; - case eModifierType_Decimate: - UI_icon_draw(x, y, ICON_MOD_DECIM); break; - case eModifierType_Wave: - UI_icon_draw(x, y, ICON_MOD_WAVE); break; - case eModifierType_Hook: - UI_icon_draw(x, y, ICON_HOOK); break; - case eModifierType_Softbody: - UI_icon_draw(x, y, ICON_MOD_SOFT); break; - case eModifierType_Boolean: - UI_icon_draw(x, y, ICON_MOD_BOOLEAN); break; - case eModifierType_ParticleSystem: - UI_icon_draw(x, y, ICON_MOD_PARTICLES); break; - case eModifierType_ParticleInstance: - UI_icon_draw(x, y, ICON_MOD_PARTICLES); break; - case eModifierType_EdgeSplit: - UI_icon_draw(x, y, ICON_MOD_EDGESPLIT); break; - case eModifierType_Array: - UI_icon_draw(x, y, ICON_MOD_ARRAY); break; - case eModifierType_UVProject: - UI_icon_draw(x, y, ICON_MOD_UVPROJECT); break; - case eModifierType_Displace: - UI_icon_draw(x, y, ICON_MOD_DISPLACE); break; - case eModifierType_Shrinkwrap: - UI_icon_draw(x, y, ICON_MOD_SHRINKWRAP); break; - case eModifierType_Cast: - UI_icon_draw(x, y, ICON_MOD_CAST); break; - case eModifierType_MeshDeform: - UI_icon_draw(x, y, ICON_MOD_MESHDEFORM); break; - case eModifierType_Bevel: - UI_icon_draw(x, y, ICON_MOD_BEVEL); break; - case eModifierType_Smooth: - UI_icon_draw(x, y, ICON_MOD_SMOOTH); break; - case eModifierType_SimpleDeform: - UI_icon_draw(x, y, ICON_MOD_SIMPLEDEFORM); break; - case eModifierType_Mask: - UI_icon_draw(x, y, ICON_MOD_MASK); break; - case eModifierType_Cloth: - UI_icon_draw(x, y, ICON_MOD_CLOTH); break; - case eModifierType_Explode: - UI_icon_draw(x, y, ICON_MOD_EXPLODE); break; - case eModifierType_Collision: - UI_icon_draw(x, y, ICON_MOD_PHYSICS); break; - case eModifierType_Fluidsim: - UI_icon_draw(x, y, ICON_MOD_FLUIDSIM); break; - case eModifierType_Multires: - UI_icon_draw(x, y, ICON_MOD_MULTIRES); break; - case eModifierType_Smoke: - UI_icon_draw(x, y, ICON_MOD_SMOKE); break; - case eModifierType_Solidify: - UI_icon_draw(x, y, ICON_MOD_SOLIDIFY); break; - case eModifierType_Screw: - UI_icon_draw(x, y, ICON_MOD_SCREW); break; - default: - UI_icon_draw(x, y, ICON_DOT); break; - } - break; - } - case TSE_SCRIPT_BASE: - UI_icon_draw(x, y, ICON_TEXT); break; - case TSE_POSE_BASE: - UI_icon_draw(x, y, ICON_ARMATURE_DATA); break; - case TSE_POSE_CHANNEL: - UI_icon_draw(x, y, ICON_BONE_DATA); break; - case TSE_PROXY: - UI_icon_draw(x, y, ICON_GHOST); break; - case TSE_R_LAYER_BASE: - UI_icon_draw(x, y, ICON_RENDERLAYERS); break; - case TSE_R_LAYER: - UI_icon_draw(x, y, ICON_RENDERLAYERS); break; - case TSE_LINKED_LAMP: - UI_icon_draw(x, y, ICON_LAMP_DATA); break; - case TSE_LINKED_MAT: - UI_icon_draw(x, y, ICON_MATERIAL_DATA); break; - case TSE_POSEGRP_BASE: - UI_icon_draw(x, y, ICON_VERTEXSEL); break; - case TSE_SEQUENCE: - if(te->idcode==SEQ_MOVIE) - UI_icon_draw(x, y, ICON_SEQUENCE); - else if(te->idcode==SEQ_META) - UI_icon_draw(x, y, ICON_DOT); - else if(te->idcode==SEQ_SCENE) - UI_icon_draw(x, y, ICON_SCENE); - else if(te->idcode==SEQ_SOUND) - UI_icon_draw(x, y, ICON_SOUND); - else if(te->idcode==SEQ_IMAGE) - UI_icon_draw(x, y, ICON_IMAGE_COL); - else - UI_icon_draw(x, y, ICON_PARTICLES); - break; - case TSE_SEQ_STRIP: - UI_icon_draw(x, y, ICON_LIBRARY_DATA_DIRECT); - break; - case TSE_SEQUENCE_DUP: - UI_icon_draw(x, y, ICON_OBJECT_DATA); - break; - case TSE_RNA_STRUCT: - if(RNA_struct_is_ID(te->rnaptr.type)) { - arg.id= (ID *)te->rnaptr.data; - tselem_draw_icon_uibut(&arg, RNA_struct_ui_icon(te->rnaptr.type)); - } - else - UI_icon_draw(x, y, RNA_struct_ui_icon(te->rnaptr.type)); - break; - default: - UI_icon_draw(x, y, ICON_DOT); break; - } - } - else if (GS(tselem->id->name) == ID_OB) { - Object *ob= (Object *)tselem->id; - switch (ob->type) { - case OB_LAMP: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_LAMP); break; - case OB_MESH: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_MESH); break; - case OB_CAMERA: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_CAMERA); break; - case OB_CURVE: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_CURVE); break; - case OB_MBALL: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_META); break; - case OB_LATTICE: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_LATTICE); break; - case OB_ARMATURE: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_ARMATURE); break; - case OB_FONT: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_FONT); break; - case OB_SURF: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_SURFACE); break; - case OB_EMPTY: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_EMPTY); break; - - } - } - else { - switch( GS(tselem->id->name)) { - case ID_SCE: - tselem_draw_icon_uibut(&arg, ICON_SCENE_DATA); break; - case ID_ME: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_MESH); break; - case ID_CU: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_CURVE); break; - case ID_MB: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_META); break; - case ID_LT: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_LATTICE); break; - case ID_LA: - { - Lamp *la= (Lamp *)tselem->id; - - switch(la->type) { - case LA_LOCAL: - tselem_draw_icon_uibut(&arg, ICON_LAMP_POINT); break; - case LA_SUN: - tselem_draw_icon_uibut(&arg, ICON_LAMP_SUN); break; - case LA_SPOT: - tselem_draw_icon_uibut(&arg, ICON_LAMP_SPOT); break; - case LA_HEMI: - tselem_draw_icon_uibut(&arg, ICON_LAMP_HEMI); break; - case LA_AREA: - tselem_draw_icon_uibut(&arg, ICON_LAMP_AREA); break; - default: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_LAMP); break; - } - break; - } - case ID_MA: - tselem_draw_icon_uibut(&arg, ICON_MATERIAL_DATA); break; - case ID_TE: - tselem_draw_icon_uibut(&arg, ICON_TEXTURE_DATA); break; - case ID_IM: - tselem_draw_icon_uibut(&arg, ICON_IMAGE_DATA); break; - case ID_SO: - tselem_draw_icon_uibut(&arg, ICON_SPEAKER); break; - case ID_AR: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_ARMATURE); break; - case ID_CA: - tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_CAMERA); break; - case ID_KE: - tselem_draw_icon_uibut(&arg, ICON_SHAPEKEY_DATA); break; - case ID_WO: - tselem_draw_icon_uibut(&arg, ICON_WORLD_DATA); break; - case ID_AC: - tselem_draw_icon_uibut(&arg, ICON_ACTION); break; - case ID_NLA: - tselem_draw_icon_uibut(&arg, ICON_NLA); break; - case ID_TXT: - tselem_draw_icon_uibut(&arg, ICON_SCRIPT); break; - case ID_GR: - tselem_draw_icon_uibut(&arg, ICON_GROUP); break; - case ID_LI: - tselem_draw_icon_uibut(&arg, ICON_LIBRARY_DATA_DIRECT); break; - } - } -} - -static void outliner_draw_iconrow(bContext *C, uiBlock *block, Scene *scene, SpaceOops *soops, ListBase *lb, int level, int xmax, int *offsx, int ys) -{ - TreeElement *te; - TreeStoreElem *tselem; - int active; - - for(te= lb->first; te; te= te->next) { - - /* exit drawing early */ - if((*offsx) - UI_UNIT_X > xmax) - break; - - tselem= TREESTORE(te); - - /* object hierarchy always, further constrained on level */ - if(level<1 || (tselem->type==0 && te->idcode==ID_OB)) { - - /* active blocks get white circle */ - if(tselem->type==0) { - if(te->idcode==ID_OB) active= (OBACT==(Object *)tselem->id); - else if(scene->obedit && scene->obedit->data==tselem->id) active= 1; // XXX use context? - else active= tree_element_active(C, scene, soops, te, 0); - } - else active= tree_element_type_active(NULL, scene, soops, te, tselem, 0); - - if(active) { - float ufac= UI_UNIT_X/20.0f; - - uiSetRoundBox(15); - glColor4ub(255, 255, 255, 100); - uiRoundBox( (float)*offsx-0.5f*ufac, (float)ys-1.0f*ufac, (float)*offsx+UI_UNIT_Y-3.0f*ufac, (float)ys+UI_UNIT_Y-3.0f*ufac, UI_UNIT_Y/2.0f-2.0f*ufac); - glEnable(GL_BLEND); /* roundbox disables */ - } - - tselem_draw_icon(block, xmax, (float)*offsx, (float)ys, tselem, te, 0.5f); - te->xs= (float)*offsx; - te->ys= (float)ys; - te->xend= (short)*offsx+UI_UNIT_X; - te->flag |= TE_ICONROW; // for click - - (*offsx) += UI_UNIT_X; - } - - /* this tree element always has same amount of branches, so dont draw */ - if(tselem->type!=TSE_R_LAYER) - outliner_draw_iconrow(C, block, scene, soops, &te->subtree, level+1, xmax, offsx, ys); - } - -} - -/* closed tree element */ -static void outliner_set_coord_tree_element(SpaceOops *soops, TreeElement *te, int startx, int *starty) -{ - TreeElement *ten; - - /* store coord and continue, we need coordinates for elements outside view too */ - te->xs= (float)startx; - te->ys= (float)(*starty); - - for(ten= te->subtree.first; ten; ten= ten->next) { - outliner_set_coord_tree_element(soops, ten, startx+UI_UNIT_X, starty); - } -} - - -static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int startx, int *starty) -{ - TreeElement *ten; - TreeStoreElem *tselem; - float ufac= UI_UNIT_X/20.0f; - int offsx= 0, active=0; // active=1 active obj, else active data - - tselem= TREESTORE(te); - - if(*starty+2*UI_UNIT_Y >= ar->v2d.cur.ymin && *starty<= ar->v2d.cur.ymax) { - int xmax= ar->v2d.cur.xmax; - - /* icons can be ui buts, we dont want it to overlap with restrict */ - if((soops->flag & SO_HIDE_RESTRICTCOLS)==0) - xmax-= OL_TOGW+UI_UNIT_X; - - glEnable(GL_BLEND); - - /* colors for active/selected data */ - if(tselem->type==0) { - if(te->idcode==ID_SCE) { - if(tselem->id == (ID *)scene) { - glColor4ub(255, 255, 255, 100); - active= 2; - } - } - else if(te->idcode==ID_GR) { - Group *gr = (Group *)tselem->id; - - if(group_select_flag(gr)) { - char col[4]; - UI_GetThemeColorType4ubv(TH_SELECT, SPACE_VIEW3D, col); - col[3]= 100; - glColor4ubv((GLubyte *)col); - - active= 2; - } - } - else if(te->idcode==ID_OB) { - Object *ob= (Object *)tselem->id; - - if(ob==OBACT || (ob->flag & SELECT)) { - char col[4]= {0, 0, 0, 0}; - - /* outliner active ob: always white text, circle color now similar to view3d */ - - active= 2; /* means it draws a color circle */ - if(ob==OBACT) { - if(ob->flag & SELECT) { - UI_GetThemeColorType4ubv(TH_ACTIVE, SPACE_VIEW3D, col); - col[3]= 100; - } - - active= 1; /* means it draws white text */ - } - else if(ob->flag & SELECT) { - UI_GetThemeColorType4ubv(TH_SELECT, SPACE_VIEW3D, col); - col[3]= 100; - } - - glColor4ubv((GLubyte *)col); - } - - } - else if(scene->obedit && scene->obedit->data==tselem->id) { - glColor4ub(255, 255, 255, 100); - active= 2; - } - else { - if(tree_element_active(C, scene, soops, te, 0)) { - glColor4ub(220, 220, 255, 100); - active= 2; - } - } - } - else { - if( tree_element_type_active(NULL, scene, soops, te, tselem, 0) ) active= 2; - glColor4ub(220, 220, 255, 100); - } - - /* active circle */ - if(active) { - uiSetRoundBox(15); - uiRoundBox( (float)startx+UI_UNIT_Y-1.5f*ufac, (float)*starty+2.0f*ufac, (float)startx+2.0f*UI_UNIT_Y-4.0f*ufac, (float)*starty+UI_UNIT_Y-1.0f*ufac, UI_UNIT_Y/2.0f-2.0f*ufac); - glEnable(GL_BLEND); /* roundbox disables it */ - - te->flag |= TE_ACTIVE; // for lookup in display hierarchies - } - - /* open/close icon, only when sublevels, except for scene */ - if(te->subtree.first || (tselem->type==0 && te->idcode==ID_SCE) || (te->flag & TE_LAZY_CLOSED)) { - int icon_x; - if(tselem->type==0 && ELEM(te->idcode, ID_OB, ID_SCE)) - icon_x = startx; - else - icon_x = startx+5*ufac; - - // icons a bit higher - if(tselem->flag & TSE_CLOSED) - UI_icon_draw((float)icon_x, (float)*starty+2*ufac, ICON_DISCLOSURE_TRI_RIGHT); - else - UI_icon_draw((float)icon_x, (float)*starty+2*ufac, ICON_DISCLOSURE_TRI_DOWN); - } - offsx+= UI_UNIT_X; - - /* datatype icon */ - - if(!(ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM))) { - // icons a bit higher - tselem_draw_icon(block, xmax, (float)startx+offsx - 0.5f*ufac, (float)*starty+2.0f*ufac, tselem, te, 1.0f); - - offsx+= UI_UNIT_X; - } - else - offsx+= 2*ufac; - - if(tselem->type==0 && tselem->id->lib) { - glPixelTransferf(GL_ALPHA_SCALE, 0.5f); - if(tselem->id->flag & LIB_INDIRECT) - UI_icon_draw((float)startx+offsx, (float)*starty+2*ufac, ICON_LIBRARY_DATA_INDIRECT); - else - UI_icon_draw((float)startx+offsx, (float)*starty+2*ufac, ICON_LIBRARY_DATA_DIRECT); - glPixelTransferf(GL_ALPHA_SCALE, 1.0f); - offsx+= UI_UNIT_X; - } - glDisable(GL_BLEND); - - /* name */ - if(active==1) UI_ThemeColor(TH_TEXT_HI); - else if(ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) UI_ThemeColorBlend(TH_BACK, TH_TEXT, 0.75f); - else UI_ThemeColor(TH_TEXT); - - UI_DrawString(startx+offsx, *starty+5*ufac, te->name); - - offsx+= (int)(UI_UNIT_X + UI_GetStringWidth(te->name)); - - /* closed item, we draw the icons, not when it's a scene, or master-server list though */ - if(tselem->flag & TSE_CLOSED) { - if(te->subtree.first) { - if(tselem->type==0 && te->idcode==ID_SCE); - else if(tselem->type!=TSE_R_LAYER) { /* this tree element always has same amount of branches, so dont draw */ - int tempx= startx+offsx; - - // divider - UI_ThemeColorShade(TH_BACK, -40); - glRecti(tempx -10, *starty+4, tempx -8, *starty+UI_UNIT_Y-4); - - glEnable(GL_BLEND); - glPixelTransferf(GL_ALPHA_SCALE, 0.5); - - outliner_draw_iconrow(C, block, scene, soops, &te->subtree, 0, xmax, &tempx, *starty+2); - - glPixelTransferf(GL_ALPHA_SCALE, 1.0); - glDisable(GL_BLEND); - } - } - } - } - /* store coord and continue, we need coordinates for elements outside view too */ - te->xs= (float)startx; - te->ys= (float)*starty; - te->xend= startx+offsx; - - if((tselem->flag & TSE_CLOSED)==0) { - *starty-= UI_UNIT_Y; - - for(ten= te->subtree.first; ten; ten= ten->next) - outliner_draw_tree_element(C, block, scene, ar, soops, ten, startx+UI_UNIT_X, starty); - } - else { - for(ten= te->subtree.first; ten; ten= ten->next) - outliner_set_coord_tree_element(soops, te, startx, starty); - - *starty-= UI_UNIT_Y; - } -} - -static void outliner_draw_hierarchy(SpaceOops *soops, ListBase *lb, int startx, int *starty) -{ - TreeElement *te; - TreeStoreElem *tselem; - int y1, y2; - - if(lb->first==NULL) return; - - y1=y2= *starty; /* for vertical lines between objects */ - for(te=lb->first; te; te= te->next) { - y2= *starty; - tselem= TREESTORE(te); - - /* horizontal line? */ - if(tselem->type==0 && (te->idcode==ID_OB || te->idcode==ID_SCE)) - glRecti(startx, *starty, startx+UI_UNIT_X, *starty-1); - - *starty-= UI_UNIT_Y; - - if((tselem->flag & TSE_CLOSED)==0) - outliner_draw_hierarchy(soops, &te->subtree, startx+UI_UNIT_X, starty); - } - - /* vertical line */ - te= lb->last; - if(te->parent || lb->first!=lb->last) { - tselem= TREESTORE(te); - if(tselem->type==0 && te->idcode==ID_OB) { - - glRecti(startx, y1+UI_UNIT_Y, startx+1, y2); - } - } -} - -static void outliner_draw_struct_marks(ARegion *ar, SpaceOops *soops, ListBase *lb, int *starty) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - - /* selection status */ - if((tselem->flag & TSE_CLOSED)==0) - if(tselem->type == TSE_RNA_STRUCT) - glRecti(0, *starty+1, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, *starty+UI_UNIT_Y-1); - - *starty-= UI_UNIT_Y; - if((tselem->flag & TSE_CLOSED)==0) { - outliner_draw_struct_marks(ar, soops, &te->subtree, starty); - if(tselem->type == TSE_RNA_STRUCT) - fdrawline(0, (float)*starty+UI_UNIT_Y, ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, (float)*starty+UI_UNIT_Y); - } - } -} - -static void outliner_draw_selection(ARegion *ar, SpaceOops *soops, ListBase *lb, int *starty) -{ - TreeElement *te; - TreeStoreElem *tselem; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - - /* selection status */ - if(tselem->flag & TSE_SELECTED) { - glRecti(0, *starty+1, (int)ar->v2d.cur.xmax, *starty+UI_UNIT_Y-1); - } - *starty-= UI_UNIT_Y; - if((tselem->flag & TSE_CLOSED)==0) outliner_draw_selection(ar, soops, &te->subtree, starty); - } -} - - -static void outliner_draw_tree(bContext *C, uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops) -{ - TreeElement *te; - int starty, startx; - float col[4]; - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // only once - - if (ELEM(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF)) { - /* struct marks */ - UI_ThemeColorShadeAlpha(TH_BACK, -15, -200); - //UI_ThemeColorShade(TH_BACK, -20); - starty= (int)ar->v2d.tot.ymax-UI_UNIT_Y-OL_Y_OFFSET; - outliner_draw_struct_marks(ar, soops, &soops->tree, &starty); - } - - /* always draw selection fill before hierarchy */ - UI_GetThemeColor3fv(TH_BACK, col); - glColor3f(col[0]+0.06f, col[1]+0.08f, col[2]+0.10f); - starty= (int)ar->v2d.tot.ymax-UI_UNIT_Y-OL_Y_OFFSET; - outliner_draw_selection(ar, soops, &soops->tree, &starty); - - // grey hierarchy lines - UI_ThemeColorBlend(TH_BACK, TH_TEXT, 0.4f); - starty= (int)ar->v2d.tot.ymax-UI_UNIT_Y/2-OL_Y_OFFSET; - startx= 6; - outliner_draw_hierarchy(soops, &soops->tree, startx, &starty); - - // items themselves - starty= (int)ar->v2d.tot.ymax-UI_UNIT_Y-OL_Y_OFFSET; - startx= 0; - for(te= soops->tree.first; te; te= te->next) { - outliner_draw_tree_element(C, block, scene, ar, soops, te, startx, &starty); - } -} - - -static void outliner_back(ARegion *ar) -{ - int ystart; - - UI_ThemeColorShade(TH_BACK, 6); - ystart= (int)ar->v2d.tot.ymax; - ystart= UI_UNIT_Y*(ystart/(UI_UNIT_Y))-OL_Y_OFFSET; - - while(ystart+2*UI_UNIT_Y > ar->v2d.cur.ymin) { - glRecti(0, ystart, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, ystart+UI_UNIT_Y); - ystart-= 2*UI_UNIT_Y; - } -} - -static void outliner_draw_restrictcols(ARegion *ar) -{ - int ystart; - - /* background underneath */ - UI_ThemeColor(TH_BACK); - glRecti((int)ar->v2d.cur.xmax-OL_TOGW, (int)ar->v2d.cur.ymin-V2D_SCROLL_HEIGHT-1, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, (int)ar->v2d.cur.ymax); - - UI_ThemeColorShade(TH_BACK, 6); - ystart= (int)ar->v2d.tot.ymax; - ystart= UI_UNIT_Y*(ystart/(UI_UNIT_Y))-OL_Y_OFFSET; - - while(ystart+2*UI_UNIT_Y > ar->v2d.cur.ymin) { - glRecti((int)ar->v2d.cur.xmax-OL_TOGW, ystart, (int)ar->v2d.cur.xmax, ystart+UI_UNIT_Y); - ystart-= 2*UI_UNIT_Y; - } - - UI_ThemeColorShadeAlpha(TH_BACK, -15, -200); - - /* view */ - fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, - ar->v2d.cur.ymax, - ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, - ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT); - - /* render */ - fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, - ar->v2d.cur.ymax, - ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, - ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT); - - /* render */ - fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, - ar->v2d.cur.ymax, - ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, - ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT); -} - -static void restrictbutton_view_cb(bContext *C, void *poin, void *poin2) -{ - Scene *scene = (Scene *)poin; - Object *ob = (Object *)poin2; - - if(!common_restrict_check(C, ob)) return; - - /* deselect objects that are invisible */ - if (ob->restrictflag & OB_RESTRICT_VIEW) { - /* Ouch! There is no backwards pointer from Object to Base, - * so have to do loop to find it. */ - ED_base_object_select(object_in_scene(ob, scene), BA_DESELECT); - } - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - -} - -static void restrictbutton_sel_cb(bContext *C, void *poin, void *poin2) -{ - Scene *scene = (Scene *)poin; - Object *ob = (Object *)poin2; - - if(!common_restrict_check(C, ob)) return; - - /* if select restriction has just been turned on */ - if (ob->restrictflag & OB_RESTRICT_SELECT) { - /* Ouch! There is no backwards pointer from Object to Base, - * so have to do loop to find it. */ - ED_base_object_select(object_in_scene(ob, scene), BA_DESELECT); - } - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - -} - -static void restrictbutton_rend_cb(bContext *C, void *poin, void *UNUSED(poin2)) -{ - WM_event_add_notifier(C, NC_SCENE|ND_OB_RENDER, poin); -} - -static void restrictbutton_r_lay_cb(bContext *C, void *poin, void *UNUSED(poin2)) -{ - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, poin); -} - -static void restrictbutton_modifier_cb(bContext *C, void *UNUSED(poin), void *poin2) -{ - Object *ob = (Object *)poin2; - - DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); -} - -static void restrictbutton_bone_cb(bContext *C, void *UNUSED(poin), void *poin2) -{ - Bone *bone= (Bone *)poin2; - if(bone && (bone->flag & BONE_HIDDEN_P)) - bone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); -} - -static void restrictbutton_ebone_cb(bContext *C, void *UNUSED(poin), void *poin2) -{ - EditBone *ebone= (EditBone *)poin2; - if(ebone && (ebone->flag & BONE_HIDDEN_A)) - ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); - - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); -} - -static int group_restrict_flag(Group *gr, int flag) -{ - GroupObject *gob; - - for(gob= gr->gobject.first; gob; gob= gob->next) { - if((gob->ob->restrictflag & flag) == 0) - return 0; - } - - return 1; -} - -static int group_select_flag(Group *gr) -{ - GroupObject *gob; - - for(gob= gr->gobject.first; gob; gob= gob->next) - if((gob->ob->flag & SELECT)) - return 1; - - return 0; -} - -static void restrictbutton_gr_restrict_flag(void *poin, void *poin2, int flag) -{ - Scene *scene = (Scene *)poin; - GroupObject *gob; - Group *gr = (Group *)poin2; - - if(group_restrict_flag(gr, flag)) { - for(gob= gr->gobject.first; gob; gob= gob->next) { - gob->ob->restrictflag &= ~flag; - - if(flag==OB_RESTRICT_VIEW) - if(gob->ob->flag & SELECT) - ED_base_object_select(object_in_scene(gob->ob, scene), BA_DESELECT); - } - } - else { - for(gob= gr->gobject.first; gob; gob= gob->next) { - /* not in editmode */ - if(scene->obedit!=gob->ob) { - gob->ob->restrictflag |= flag; - - if(flag==OB_RESTRICT_VIEW) - if((gob->ob->flag & SELECT) == 0) - ED_base_object_select(object_in_scene(gob->ob, scene), BA_SELECT); - } - } - } -} - -static void restrictbutton_gr_restrict_view(bContext *C, void *poin, void *poin2) -{ - restrictbutton_gr_restrict_flag(poin, poin2, OB_RESTRICT_VIEW); - WM_event_add_notifier(C, NC_GROUP, NULL); -} -static void restrictbutton_gr_restrict_select(bContext *C, void *poin, void *poin2) -{ - restrictbutton_gr_restrict_flag(poin, poin2, OB_RESTRICT_SELECT); - WM_event_add_notifier(C, NC_GROUP, NULL); -} -static void restrictbutton_gr_restrict_render(bContext *C, void *poin, void *poin2) -{ - restrictbutton_gr_restrict_flag(poin, poin2, OB_RESTRICT_RENDER); - WM_event_add_notifier(C, NC_GROUP, NULL); -} - - -static void namebutton_cb(bContext *C, void *tsep, char *oldname) -{ - SpaceOops *soops= CTX_wm_space_outliner(C); - Scene *scene= CTX_data_scene(C); - Object *obedit= CTX_data_edit_object(C); - TreeStore *ts= soops->treestore; - TreeStoreElem *tselem= tsep; - - if(ts && tselem) { - TreeElement *te= outliner_find_tse(soops, tselem); - - if(tselem->type==0) { - test_idbutton(tselem->id->name+2); // library.c, unique name and alpha sort - - switch(GS(tselem->id->name)) { - case ID_MA: - WM_event_add_notifier(C, NC_MATERIAL, NULL); break; - case ID_TE: - WM_event_add_notifier(C, NC_TEXTURE, NULL); break; - case ID_IM: - WM_event_add_notifier(C, NC_IMAGE, NULL); break; - case ID_SCE: - WM_event_add_notifier(C, NC_SCENE, NULL); break; - default: - WM_event_add_notifier(C, NC_ID|NA_RENAME, NULL); break; - } - /* Check the library target exists */ - if (te->idcode == ID_LI) { - char expanded[FILE_MAXDIR + FILE_MAXFILE]; - BLI_strncpy(expanded, ((Library *)tselem->id)->name, FILE_MAXDIR + FILE_MAXFILE); - BLI_path_abs(expanded, G.main->name); - if (!BLI_exists(expanded)) { - error("This path does not exist, correct this before saving"); - } - } - } - else { - switch(tselem->type) { - case TSE_DEFGROUP: - defgroup_unique_name(te->directdata, (Object *)tselem->id); // id = object - break; - case TSE_NLA_ACTION: - test_idbutton(tselem->id->name+2); - break; - case TSE_EBONE: - { - bArmature *arm= (bArmature *)tselem->id; - if(arm->edbo) { - EditBone *ebone= te->directdata; - char newname[sizeof(ebone->name)]; - - /* restore bone name */ - BLI_strncpy(newname, ebone->name, sizeof(ebone->name)); - BLI_strncpy(ebone->name, oldname, sizeof(ebone->name)); - ED_armature_bone_rename(obedit->data, oldname, newname); - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, OBACT); - } - } - break; - - case TSE_BONE: - { - Bone *bone= te->directdata; - Object *ob; - char newname[sizeof(bone->name)]; - - // always make current object active - tree_element_set_active_object(C, scene, soops, te, 1); - ob= OBACT; - - /* restore bone name */ - BLI_strncpy(newname, bone->name, sizeof(bone->name)); - BLI_strncpy(bone->name, oldname, sizeof(bone->name)); - ED_armature_bone_rename(ob->data, oldname, newname); - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); - } - break; - case TSE_POSE_CHANNEL: - { - bPoseChannel *pchan= te->directdata; - Object *ob; - char newname[sizeof(pchan->name)]; - - // always make current object active - tree_element_set_active_object(C, scene, soops, te, 1); - ob= OBACT; - - /* restore bone name */ - BLI_strncpy(newname, pchan->name, sizeof(pchan->name)); - BLI_strncpy(pchan->name, oldname, sizeof(pchan->name)); - ED_armature_bone_rename(ob->data, oldname, newname); - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); - } - break; - case TSE_POSEGRP: - { - Object *ob= (Object *)tselem->id; // id = object - bActionGroup *grp= te->directdata; - - BLI_uniquename(&ob->pose->agroups, grp, "Group", '.', offsetof(bActionGroup, name), sizeof(grp->name)); - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); - } - break; - case TSE_R_LAYER: - break; - } - } - tselem->flag &= ~TSE_TEXTBUT; - } -} - -static void outliner_draw_restrictbuts(uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, ListBase *lb) -{ - uiBut *bt; - TreeElement *te; - TreeStoreElem *tselem; - Object *ob = NULL; - Group *gr = NULL; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(te->ys+2*UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { - /* objects have toggle-able restriction flags */ - if(tselem->type==0 && te->idcode==ID_OB) { - PointerRNA ptr; - - ob = (Object *)tselem->id; - RNA_pointer_create((ID *)ob, &RNA_Object, ob, &ptr); - - uiBlockSetEmboss(block, UI_EMBOSSN); - bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_VIEW_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, - &ptr, "hide", -1, 0, 0, -1, -1, NULL); - uiButSetFunc(bt, restrictbutton_view_cb, scene, ob); - - bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_SELECT_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, - &ptr, "hide_select", -1, 0, 0, -1, -1, NULL); - uiButSetFunc(bt, restrictbutton_sel_cb, scene, ob); - - bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_RENDER_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, - &ptr, "hide_render", -1, 0, 0, -1, -1, NULL); - uiButSetFunc(bt, restrictbutton_rend_cb, scene, ob); - - uiBlockSetEmboss(block, UI_EMBOSS); - - } - if(tselem->type==0 && te->idcode==ID_GR){ - int restrict_bool; - gr = (Group *)tselem->id; - - uiBlockSetEmboss(block, UI_EMBOSSN); - - restrict_bool= group_restrict_flag(gr, OB_RESTRICT_VIEW); - bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_VIEW_ON : ICON_RESTRICT_VIEW_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, NULL, 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); - uiButSetFunc(bt, restrictbutton_gr_restrict_view, scene, gr); - - restrict_bool= group_restrict_flag(gr, OB_RESTRICT_SELECT); - bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_SELECT_ON : ICON_RESTRICT_SELECT_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, NULL, 0, 0, 0, 0, "Restrict/Allow selection in the 3D View"); - uiButSetFunc(bt, restrictbutton_gr_restrict_select, scene, gr); - - restrict_bool= group_restrict_flag(gr, OB_RESTRICT_RENDER); - bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_RENDER_ON : ICON_RESTRICT_RENDER_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, NULL, 0, 0, 0, 0, "Restrict/Allow renderability"); - uiButSetFunc(bt, restrictbutton_gr_restrict_render, scene, gr); - - uiBlockSetEmboss(block, UI_EMBOSS); - } - /* scene render layers and passes have toggle-able flags too! */ - else if(tselem->type==TSE_R_LAYER) { - uiBlockSetEmboss(block, UI_EMBOSSN); - - bt= uiDefIconButBitI(block, ICONTOGN, SCE_LAY_DISABLE, 0, ICON_CHECKBOX_HLT-1, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, te->directdata, 0, 0, 0, 0, "Render this RenderLayer"); - uiButSetFunc(bt, restrictbutton_r_lay_cb, tselem->id, NULL); - - uiBlockSetEmboss(block, UI_EMBOSS); - } - else if(tselem->type==TSE_R_PASS) { - int *layflag= te->directdata; - int passflag= 1<nr; - - uiBlockSetEmboss(block, UI_EMBOSSN); - - - bt= uiDefIconButBitI(block, ICONTOG, passflag, 0, ICON_CHECKBOX_HLT-1, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, layflag, 0, 0, 0, 0, "Render this Pass"); - uiButSetFunc(bt, restrictbutton_r_lay_cb, tselem->id, NULL); - - layflag++; /* is lay_xor */ - if(ELEM8(passflag, SCE_PASS_SPEC, SCE_PASS_SHADOW, SCE_PASS_AO, SCE_PASS_REFLECT, SCE_PASS_REFRACT, SCE_PASS_INDIRECT, SCE_PASS_EMIT, SCE_PASS_ENVIRONMENT)) - bt= uiDefIconButBitI(block, TOG, passflag, 0, (*layflag & passflag)?ICON_DOT:ICON_BLANK1, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, layflag, 0, 0, 0, 0, "Exclude this Pass from Combined"); - uiButSetFunc(bt, restrictbutton_r_lay_cb, tselem->id, NULL); - - uiBlockSetEmboss(block, UI_EMBOSS); - } - else if(tselem->type==TSE_MODIFIER) { - ModifierData *md= (ModifierData *)te->directdata; - ob = (Object *)tselem->id; - - uiBlockSetEmboss(block, UI_EMBOSSN); - bt= uiDefIconButBitI(block, ICONTOGN, eModifierMode_Realtime, 0, ICON_RESTRICT_VIEW_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(md->mode), 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); - uiButSetFunc(bt, restrictbutton_modifier_cb, scene, ob); - - bt= uiDefIconButBitI(block, ICONTOGN, eModifierMode_Render, 0, ICON_RESTRICT_RENDER_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(md->mode), 0, 0, 0, 0, "Restrict/Allow renderability"); - uiButSetFunc(bt, restrictbutton_modifier_cb, scene, ob); - } - else if(tselem->type==TSE_POSE_CHANNEL) { - bPoseChannel *pchan= (bPoseChannel *)te->directdata; - Bone *bone = pchan->bone; - - uiBlockSetEmboss(block, UI_EMBOSSN); - bt= uiDefIconButBitI(block, ICONTOG, BONE_HIDDEN_P, 0, ICON_RESTRICT_VIEW_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(bone->flag), 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); - uiButSetFunc(bt, restrictbutton_bone_cb, NULL, bone); - - bt= uiDefIconButBitI(block, ICONTOG, BONE_UNSELECTABLE, 0, ICON_RESTRICT_SELECT_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(bone->flag), 0, 0, 0, 0, "Restrict/Allow selection in the 3D View"); - uiButSetFunc(bt, restrictbutton_bone_cb, NULL, NULL); - } - else if(tselem->type==TSE_EBONE) { - EditBone *ebone= (EditBone *)te->directdata; - - uiBlockSetEmboss(block, UI_EMBOSSN); - bt= uiDefIconButBitI(block, ICONTOG, BONE_HIDDEN_A, 0, ICON_RESTRICT_VIEW_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(ebone->flag), 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); - uiButSetFunc(bt, restrictbutton_ebone_cb, NULL, ebone); - - bt= uiDefIconButBitI(block, ICONTOG, BONE_UNSELECTABLE, 0, ICON_RESTRICT_SELECT_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(ebone->flag), 0, 0, 0, 0, "Restrict/Allow selection in the 3D View"); - uiButSetFunc(bt, restrictbutton_ebone_cb, NULL, NULL); - } - } - - if((tselem->flag & TSE_CLOSED)==0) outliner_draw_restrictbuts(block, scene, ar, soops, &te->subtree); - } -} - -static void outliner_draw_rnacols(ARegion *ar, int sizex) -{ - View2D *v2d= &ar->v2d; - - float miny = v2d->cur.ymin-V2D_SCROLL_HEIGHT; - if(minytot.ymin) miny = v2d->tot.ymin; - - UI_ThemeColorShadeAlpha(TH_BACK, -15, -200); - - /* draw column separator lines */ - fdrawline((float)sizex, - v2d->cur.ymax, - (float)sizex, - miny); - - fdrawline((float)sizex+OL_RNA_COL_SIZEX, - v2d->cur.ymax, - (float)sizex+OL_RNA_COL_SIZEX, - miny); -} - -static void outliner_draw_rnabuts(uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, int sizex, ListBase *lb) -{ - TreeElement *te; - TreeStoreElem *tselem; - PointerRNA *ptr; - PropertyRNA *prop; - - uiBlockSetEmboss(block, UI_EMBOSST); - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(te->ys+2*UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { - if(tselem->type == TSE_RNA_PROPERTY) { - ptr= &te->rnaptr; - prop= te->directdata; - - if(!(RNA_property_type(prop) == PROP_POINTER && (tselem->flag & TSE_CLOSED)==0)) - uiDefAutoButR(block, ptr, prop, -1, "", ICON_NONE, sizex, (int)te->ys, OL_RNA_COL_SIZEX, UI_UNIT_Y-1); - } - else if(tselem->type == TSE_RNA_ARRAY_ELEM) { - ptr= &te->rnaptr; - prop= te->directdata; - - uiDefAutoButR(block, ptr, prop, te->index, "", ICON_NONE, sizex, (int)te->ys, OL_RNA_COL_SIZEX, UI_UNIT_Y-1); - } - } - - if((tselem->flag & TSE_CLOSED)==0) outliner_draw_rnabuts(block, scene, ar, soops, sizex, &te->subtree); - } -} - -static void operator_call_cb(struct bContext *UNUSED(C), void *arg_kmi, void *arg2) -{ - wmOperatorType *ot= arg2; - wmKeyMapItem *kmi= arg_kmi; - - if(ot) - BLI_strncpy(kmi->idname, ot->idname, OP_MAX_TYPENAME); -} - -static void operator_search_cb(const struct bContext *UNUSED(C), void *UNUSED(arg_kmi), const char *str, uiSearchItems *items) -{ - wmOperatorType *ot = WM_operatortype_first(); - - for(; ot; ot= ot->next) { - - if(BLI_strcasestr(ot->idname, str)) { - char name[OP_MAX_TYPENAME]; - - /* display name for menu */ - WM_operator_py_idname(name, ot->idname); - - if(0==uiSearchItemAdd(items, name, ot, 0)) - break; - } - } -} - -/* operator Search browse menu, open */ -static uiBlock *operator_search_menu(bContext *C, ARegion *ar, void *arg_kmi) -{ - static char search[OP_MAX_TYPENAME]; - wmEvent event; - wmWindow *win= CTX_wm_window(C); - wmKeyMapItem *kmi= arg_kmi; - wmOperatorType *ot= WM_operatortype_find(kmi->idname, 0); - uiBlock *block; - uiBut *but; - - /* clear initial search string, then all items show */ - search[0]= 0; - - block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); - uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_RET_1); - - /* fake button, it holds space for search items */ - uiDefBut(block, LABEL, 0, "", 10, 15, 150, uiSearchBoxhHeight(), NULL, 0, 0, 0, 0, NULL); - - but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 0, 150, UI_UNIT_Y, 0, 0, ""); - uiButSetSearchFunc(but, operator_search_cb, arg_kmi, operator_call_cb, ot); - - uiBoundsBlock(block, 6); - uiBlockSetDirection(block, UI_DOWN); - uiEndBlock(C, block); - - event= *(win->eventstate); /* XXX huh huh? make api call */ - event.type= EVT_BUT_OPEN; - event.val= KM_PRESS; - event.customdata= but; - event.customdatafree= FALSE; - wm_event_add(win, &event); - - return block; -} - -#define OL_KM_KEYBOARD 0 -#define OL_KM_MOUSE 1 -#define OL_KM_TWEAK 2 -#define OL_KM_SPECIALS 3 - -static short keymap_menu_type(short type) -{ - if(ISKEYBOARD(type)) return OL_KM_KEYBOARD; - if(ISTWEAK(type)) return OL_KM_TWEAK; - if(ISMOUSE(type)) return OL_KM_MOUSE; -// return OL_KM_SPECIALS; - return 0; -} - -static const char *keymap_type_menu(void) -{ - static const char string[]= - "Event Type%t" - "|Keyboard%x" STRINGIFY(OL_KM_KEYBOARD) - "|Mouse%x" STRINGIFY(OL_KM_MOUSE) - "|Tweak%x" STRINGIFY(OL_KM_TWEAK) -// "|Specials%x" STRINGIFY(OL_KM_SPECIALS) - ; - - return string; -} - -static const char *keymap_mouse_menu(void) -{ - static const char string[]= - "Mouse Event%t" - "|Left Mouse%x" STRINGIFY(LEFTMOUSE) - "|Middle Mouse%x" STRINGIFY(MIDDLEMOUSE) - "|Right Mouse%x" STRINGIFY(RIGHTMOUSE) - "|Middle Mouse%x" STRINGIFY(MIDDLEMOUSE) - "|Right Mouse%x" STRINGIFY(RIGHTMOUSE) - "|Button4 Mouse%x" STRINGIFY(BUTTON4MOUSE) - "|Button5 Mouse%x" STRINGIFY(BUTTON5MOUSE) - "|Action Mouse%x" STRINGIFY(ACTIONMOUSE) - "|Select Mouse%x" STRINGIFY(SELECTMOUSE) - "|Mouse Move%x" STRINGIFY(MOUSEMOVE) - "|Wheel Up%x" STRINGIFY(WHEELUPMOUSE) - "|Wheel Down%x" STRINGIFY(WHEELDOWNMOUSE) - "|Wheel In%x" STRINGIFY(WHEELINMOUSE) - "|Wheel Out%x" STRINGIFY(WHEELOUTMOUSE) - "|Mouse/Trackpad Pan%x" STRINGIFY(MOUSEPAN) - "|Mouse/Trackpad Zoom%x" STRINGIFY(MOUSEZOOM) - "|Mouse/Trackpad Rotate%x" STRINGIFY(MOUSEROTATE) - ; - - return string; -} - -static const char *keymap_tweak_menu(void) -{ - static const char string[]= - "Tweak Event%t" - "|Left Mouse%x" STRINGIFY(EVT_TWEAK_L) - "|Middle Mouse%x" STRINGIFY(EVT_TWEAK_M) - "|Right Mouse%x" STRINGIFY(EVT_TWEAK_R) - "|Action Mouse%x" STRINGIFY(EVT_TWEAK_A) - "|Select Mouse%x" STRINGIFY(EVT_TWEAK_S) - ; - - return string; -} - -static const char *keymap_tweak_dir_menu(void) -{ - static const char string[]= - "Tweak Direction%t" - "|Any%x" STRINGIFY(KM_ANY) - "|North%x" STRINGIFY(EVT_GESTURE_N) - "|North-East%x" STRINGIFY(EVT_GESTURE_NE) - "|East%x" STRINGIFY(EVT_GESTURE_E) - "|Sout-East%x" STRINGIFY(EVT_GESTURE_SE) - "|South%x" STRINGIFY(EVT_GESTURE_S) - "|South-West%x" STRINGIFY(EVT_GESTURE_SW) - "|West%x" STRINGIFY(EVT_GESTURE_W) - "|North-West%x" STRINGIFY(EVT_GESTURE_NW) - ; - - return string; -} - - -static void keymap_type_cb(bContext *C, void *kmi_v, void *UNUSED(arg_v)) -{ - wmKeyMapItem *kmi= kmi_v; - short maptype= keymap_menu_type(kmi->type); - - if(maptype!=kmi->maptype) { - switch(kmi->maptype) { - case OL_KM_KEYBOARD: - kmi->type= AKEY; - kmi->val= KM_PRESS; - break; - case OL_KM_MOUSE: - kmi->type= LEFTMOUSE; - kmi->val= KM_PRESS; - break; - case OL_KM_TWEAK: - kmi->type= EVT_TWEAK_L; - kmi->val= KM_ANY; - break; - case OL_KM_SPECIALS: - kmi->type= AKEY; - kmi->val= KM_PRESS; - } - ED_region_tag_redraw(CTX_wm_region(C)); - } -} - -static void outliner_draw_keymapbuts(uiBlock *block, ARegion *ar, SpaceOops *soops, ListBase *lb) -{ - TreeElement *te; - TreeStoreElem *tselem; - - uiBlockSetEmboss(block, UI_EMBOSST); - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(te->ys+2*UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { - uiBut *but; - const char *str; - int xstart= 240; - int butw1= UI_UNIT_X; /* operator */ - int butw2= 90; /* event type, menus */ - int butw3= 43; /* modifiers */ - - if(tselem->type == TSE_KEYMAP_ITEM) { - wmKeyMapItem *kmi= te->directdata; - - /* modal map? */ - if(kmi->propvalue); - else { - uiDefBlockBut(block, operator_search_menu, kmi, "", xstart, (int)te->ys+1, butw1, UI_UNIT_Y-1, "Assign new Operator"); - } - xstart+= butw1+10; - - /* map type button */ - kmi->maptype= keymap_menu_type(kmi->type); - - str= keymap_type_menu(); - but= uiDefButS(block, MENU, 0, str, xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->maptype, 0, 0, 0, 0, "Event type"); - uiButSetFunc(but, keymap_type_cb, kmi, NULL); - xstart+= butw2+5; - - /* edit actual event */ - switch(kmi->maptype) { - case OL_KM_KEYBOARD: - uiDefKeyevtButS(block, 0, "", xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->type, "Key code"); - xstart+= butw2+5; - break; - case OL_KM_MOUSE: - str= keymap_mouse_menu(); - uiDefButS(block, MENU, 0, str, xstart,(int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->type, 0, 0, 0, 0, "Mouse button"); - xstart+= butw2+5; - break; - case OL_KM_TWEAK: - str= keymap_tweak_menu(); - uiDefButS(block, MENU, 0, str, xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->type, 0, 0, 0, 0, "Tweak gesture"); - xstart+= butw2+5; - str= keymap_tweak_dir_menu(); - uiDefButS(block, MENU, 0, str, xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->val, 0, 0, 0, 0, "Tweak gesture direction"); - xstart+= butw2+5; - break; - } - - /* modifiers */ - uiDefButS(block, OPTION, 0, "Shift", xstart, (int)te->ys+1, butw3+5, UI_UNIT_Y-1, &kmi->shift, 0, 0, 0, 0, "Modifier"); xstart+= butw3+5; - uiDefButS(block, OPTION, 0, "Ctrl", xstart, (int)te->ys+1, butw3, UI_UNIT_Y-1, &kmi->ctrl, 0, 0, 0, 0, "Modifier"); xstart+= butw3; - uiDefButS(block, OPTION, 0, "Alt", xstart, (int)te->ys+1, butw3, UI_UNIT_Y-1, &kmi->alt, 0, 0, 0, 0, "Modifier"); xstart+= butw3; - uiDefButS(block, OPTION, 0, "OS", xstart, (int)te->ys+1, butw3, UI_UNIT_Y-1, &kmi->oskey, 0, 0, 0, 0, "Modifier"); xstart+= butw3; - xstart+= 5; - uiDefKeyevtButS(block, 0, "", xstart, (int)te->ys+1, butw3, UI_UNIT_Y-1, &kmi->keymodifier, "Key Modifier code"); - xstart+= butw3+5; - - /* rna property */ - if(kmi->ptr && kmi->ptr->data) { - uiDefBut(block, LABEL, 0, "(RNA property)", xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->oskey, 0, 0, 0, 0, ""); xstart+= butw2; - } - - (void)xstart; - } - } - - if((tselem->flag & TSE_CLOSED)==0) outliner_draw_keymapbuts(block, ar, soops, &te->subtree); - } -} - - -static void outliner_buttons(const bContext *C, uiBlock *block, ARegion *ar, SpaceOops *soops, ListBase *lb) -{ - uiBut *bt; - TreeElement *te; - TreeStoreElem *tselem; - int spx, dx, len; - - for(te= lb->first; te; te= te->next) { - tselem= TREESTORE(te); - if(te->ys+2*UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { - - if(tselem->flag & TSE_TEXTBUT) { - - /* If we add support to rename Sequence. - * need change this. - */ - if(tselem->type == TSE_POSE_BASE) continue; // prevent crash when trying to rename 'pose' entry of armature - - if(tselem->type==TSE_EBONE) len = sizeof(((EditBone*) 0)->name); - else if (tselem->type==TSE_MODIFIER) len = sizeof(((ModifierData*) 0)->name); - else if(tselem->id && GS(tselem->id->name)==ID_LI) len = sizeof(((Library*) 0)->name); - else len= MAX_ID_NAME-2; - - - dx= (int)UI_GetStringWidth(te->name); - if(dx<100) dx= 100; - spx=te->xs+2*UI_UNIT_X-4; - if(spx+dx+10>ar->v2d.cur.xmax) dx = ar->v2d.cur.xmax-spx-10; - - bt= uiDefBut(block, TEX, OL_NAMEBUTTON, "", spx, (int)te->ys, dx+10, UI_UNIT_Y-1, (void *)te->name, 1.0, (float)len, 0, 0, ""); - uiButSetRenameFunc(bt, namebutton_cb, tselem); - - /* returns false if button got removed */ - if( 0 == uiButActiveOnly(C, block, bt) ) - tselem->flag &= ~TSE_TEXTBUT; - } - } - - if((tselem->flag & TSE_CLOSED)==0) outliner_buttons(C, block, ar, soops, &te->subtree); - } -} - -void draw_outliner(const bContext *C) -{ - Main *mainvar= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - ARegion *ar= CTX_wm_region(C); - View2D *v2d= &ar->v2d; - SpaceOops *soops= CTX_wm_space_outliner(C); - uiBlock *block; - int sizey= 0, sizex= 0, sizex_rna= 0; - - outliner_build_tree(mainvar, scene, soops); // always - - /* get extents of data */ - outliner_height(soops, &soops->tree, &sizey); - - if (ELEM3(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF, SO_KEYMAP)) { - /* RNA has two columns: - * - column 1 is (max_width + OL_RNA_COL_SPACEX) or - * (OL_RNA_COL_X), whichever is wider... - * - column 2 is fixed at OL_RNA_COL_SIZEX - * - * (*) XXX max width for now is a fixed factor of UI_UNIT_X*(max_indention+100) - */ - - /* get actual width of column 1 */ - outliner_rna_width(soops, &soops->tree, &sizex_rna, 0); - sizex_rna= MAX2(OL_RNA_COLX, sizex_rna+OL_RNA_COL_SPACEX); - - /* get width of data (for setting 'tot' rect, this is column 1 + column 2 + a bit extra) */ - if (soops->outlinevis == SO_KEYMAP) - sizex= sizex_rna + OL_RNA_COL_SIZEX*3 + 50; // XXX this is only really a quick hack to make this wide enough... - else - sizex= sizex_rna + OL_RNA_COL_SIZEX + 50; - } - else { - /* width must take into account restriction columns (if visible) so that entries will still be visible */ - //outliner_width(soops, &soops->tree, &sizex); - outliner_rna_width(soops, &soops->tree, &sizex, 0); // XXX should use outliner_width instead when te->xend will be set correctly... - - /* constant offset for restriction columns */ - // XXX this isn't that great yet... - if ((soops->flag & SO_HIDE_RESTRICTCOLS)==0) - sizex += OL_TOGW*3; - } - - /* tweak to display last line (when list bigger than window) */ - sizey += V2D_SCROLL_HEIGHT; - - /* adds vertical offset */ - sizey += OL_Y_OFFSET; - - /* update size of tot-rect (extents of data/viewable area) */ - UI_view2d_totRect_set(v2d, sizex, sizey); - - /* force display to pixel coords */ - v2d->flag |= (V2D_PIXELOFS_X|V2D_PIXELOFS_Y); - /* set matrix for 2d-view controls */ - UI_view2d_view_ortho(v2d); - - /* draw outliner stuff (background, hierachy lines and names) */ - outliner_back(ar); - block= uiBeginBlock(C, ar, "outliner buttons", UI_EMBOSS); - outliner_draw_tree((bContext *)C, block, scene, ar, soops); - - if(ELEM(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF)) { - /* draw rna buttons */ - outliner_draw_rnacols(ar, sizex_rna); - outliner_draw_rnabuts(block, scene, ar, soops, sizex_rna, &soops->tree); - } - else if(soops->outlinevis == SO_KEYMAP) { - outliner_draw_keymapbuts(block, ar, soops, &soops->tree); - } - else if (!(soops->flag & SO_HIDE_RESTRICTCOLS)) { - /* draw restriction columns */ - outliner_draw_restrictcols(ar); - outliner_draw_restrictbuts(block, scene, ar, soops, &soops->tree); - } - - /* draw edit buttons if nessecery */ - outliner_buttons(C, block, ar, soops, &soops->tree); - - uiEndBlock(C, block); - uiDrawBlock(C, block); - - /* clear flag that allows quick redraws */ - soops->storeflag &= ~SO_TREESTORE_REDRAW; -} - diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c new file mode 100644 index 00000000000..17b44022c80 --- /dev/null +++ b/source/blender/editors/space_outliner/outliner_draw.c @@ -0,0 +1,1671 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2004 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Joshua Leung + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/editors/space_outliner/outliner_draw.c + * \ingroup spoutliner + */ + +#include +#include + +#include "MEM_guardedalloc.h" + +#include "DNA_anim_types.h" +#include "DNA_armature_types.h" +#include "DNA_camera_types.h" +#include "DNA_group_types.h" +#include "DNA_key_types.h" +#include "DNA_lamp_types.h" +#include "DNA_material_types.h" +#include "DNA_mesh_types.h" +#include "DNA_meta_types.h" +#include "DNA_particle_types.h" +#include "DNA_scene_types.h" +#include "DNA_world_types.h" +#include "DNA_sequence_types.h" +#include "DNA_object_types.h" + +#include "BLI_blenlib.h" +#include "BLI_utildefines.h" + +#include "BKE_animsys.h" +#include "BKE_context.h" +#include "BKE_deform.h" +#include "BKE_depsgraph.h" +#include "BKE_fcurve.h" +#include "BKE_global.h" +#include "BKE_group.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_modifier.h" +#include "BKE_report.h" +#include "BKE_scene.h" +#include "BKE_sequencer.h" + +#include "BLI_ghash.h" + +#include "ED_armature.h" +#include "ED_object.h" +#include "ED_screen.h" +#include "ED_util.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "BIF_gl.h" +#include "BIF_glutil.h" + +#include "UI_interface.h" +#include "UI_interface_icons.h" +#include "UI_resources.h" +#include "UI_view2d.h" + +#include "RNA_access.h" +#include "RNA_define.h" + +#include "outliner_intern.h" + +/* ****************************************************** */ +/* Tree Size Functions */ + +static void outliner_height(SpaceOops *soops, ListBase *lb, int *h) +{ + TreeElement *te= lb->first; + while(te) { + TreeStoreElem *tselem= TREESTORE(te); + if((tselem->flag & TSE_CLOSED)==0) + outliner_height(soops, &te->subtree, h); + (*h) += UI_UNIT_Y; + te= te->next; + } +} + +#if 0 // XXX this is currently disabled until te->xend is set correctly +static void outliner_width(SpaceOops *soops, ListBase *lb, int *w) +{ + TreeElement *te= lb->first; + while(te) { +// TreeStoreElem *tselem= TREESTORE(te); + + // XXX fixme... te->xend is not set yet + if(tselem->flag & TSE_CLOSED) { + if (te->xend > *w) + *w = te->xend; + } + outliner_width(soops, &te->subtree, w); + te= te->next; + } +} +#endif + +static void outliner_rna_width(SpaceOops *soops, ListBase *lb, int *w, int startx) +{ + TreeElement *te= lb->first; + while(te) { + TreeStoreElem *tselem= TREESTORE(te); + // XXX fixme... (currently, we're using a fixed length of 100)! + /*if(te->xend) { + if(te->xend > *w) + *w = te->xend; + }*/ + if(startx+100 > *w) + *w = startx+100; + + if((tselem->flag & TSE_CLOSED)==0) + outliner_rna_width(soops, &te->subtree, w, startx+UI_UNIT_X); + te= te->next; + } +} + +/* ****************************************************** */ + +static void restrictbutton_view_cb(bContext *C, void *poin, void *poin2) +{ + Scene *scene = (Scene *)poin; + Object *ob = (Object *)poin2; + + if(!common_restrict_check(C, ob)) return; + + /* deselect objects that are invisible */ + if (ob->restrictflag & OB_RESTRICT_VIEW) { + /* Ouch! There is no backwards pointer from Object to Base, + * so have to do loop to find it. */ + ED_base_object_select(object_in_scene(ob, scene), BA_DESELECT); + } + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + +} + +static void restrictbutton_sel_cb(bContext *C, void *poin, void *poin2) +{ + Scene *scene = (Scene *)poin; + Object *ob = (Object *)poin2; + + if(!common_restrict_check(C, ob)) return; + + /* if select restriction has just been turned on */ + if (ob->restrictflag & OB_RESTRICT_SELECT) { + /* Ouch! There is no backwards pointer from Object to Base, + * so have to do loop to find it. */ + ED_base_object_select(object_in_scene(ob, scene), BA_DESELECT); + } + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + +} + +static void restrictbutton_rend_cb(bContext *C, void *poin, void *UNUSED(poin2)) +{ + WM_event_add_notifier(C, NC_SCENE|ND_OB_RENDER, poin); +} + +static void restrictbutton_r_lay_cb(bContext *C, void *poin, void *UNUSED(poin2)) +{ + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, poin); +} + +static void restrictbutton_modifier_cb(bContext *C, void *UNUSED(poin), void *poin2) +{ + Object *ob = (Object *)poin2; + + DAG_id_tag_update(&ob->id, OB_RECALC_DATA); + + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); +} + +static void restrictbutton_bone_cb(bContext *C, void *UNUSED(poin), void *poin2) +{ + Bone *bone= (Bone *)poin2; + if(bone && (bone->flag & BONE_HIDDEN_P)) + bone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); +} + +static void restrictbutton_ebone_cb(bContext *C, void *UNUSED(poin), void *poin2) +{ + EditBone *ebone= (EditBone *)poin2; + if(ebone && (ebone->flag & BONE_HIDDEN_A)) + ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); + + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); +} + +static int group_restrict_flag(Group *gr, int flag) +{ + GroupObject *gob; + + for(gob= gr->gobject.first; gob; gob= gob->next) { + if((gob->ob->restrictflag & flag) == 0) + return 0; + } + + return 1; +} + +static int group_select_flag(Group *gr) +{ + GroupObject *gob; + + for(gob= gr->gobject.first; gob; gob= gob->next) + if((gob->ob->flag & SELECT)) + return 1; + + return 0; +} + +static void restrictbutton_gr_restrict_flag(void *poin, void *poin2, int flag) +{ + Scene *scene = (Scene *)poin; + GroupObject *gob; + Group *gr = (Group *)poin2; + + if(group_restrict_flag(gr, flag)) { + for(gob= gr->gobject.first; gob; gob= gob->next) { + gob->ob->restrictflag &= ~flag; + + if(flag==OB_RESTRICT_VIEW) + if(gob->ob->flag & SELECT) + ED_base_object_select(object_in_scene(gob->ob, scene), BA_DESELECT); + } + } + else { + for(gob= gr->gobject.first; gob; gob= gob->next) { + /* not in editmode */ + if(scene->obedit!=gob->ob) { + gob->ob->restrictflag |= flag; + + if(flag==OB_RESTRICT_VIEW) + if((gob->ob->flag & SELECT) == 0) + ED_base_object_select(object_in_scene(gob->ob, scene), BA_SELECT); + } + } + } +} + +static void restrictbutton_gr_restrict_view(bContext *C, void *poin, void *poin2) +{ + restrictbutton_gr_restrict_flag(poin, poin2, OB_RESTRICT_VIEW); + WM_event_add_notifier(C, NC_GROUP, NULL); +} +static void restrictbutton_gr_restrict_select(bContext *C, void *poin, void *poin2) +{ + restrictbutton_gr_restrict_flag(poin, poin2, OB_RESTRICT_SELECT); + WM_event_add_notifier(C, NC_GROUP, NULL); +} +static void restrictbutton_gr_restrict_render(bContext *C, void *poin, void *poin2) +{ + restrictbutton_gr_restrict_flag(poin, poin2, OB_RESTRICT_RENDER); + WM_event_add_notifier(C, NC_GROUP, NULL); +} + + +static void namebutton_cb(bContext *C, void *tsep, char *oldname) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + Scene *scene= CTX_data_scene(C); + Object *obedit= CTX_data_edit_object(C); + TreeStore *ts= soops->treestore; + TreeStoreElem *tselem= tsep; + + if(ts && tselem) { + TreeElement *te= outliner_find_tse(soops, tselem); + + if(tselem->type==0) { + test_idbutton(tselem->id->name+2); // library.c, unique name and alpha sort + + switch(GS(tselem->id->name)) { + case ID_MA: + WM_event_add_notifier(C, NC_MATERIAL, NULL); break; + case ID_TE: + WM_event_add_notifier(C, NC_TEXTURE, NULL); break; + case ID_IM: + WM_event_add_notifier(C, NC_IMAGE, NULL); break; + case ID_SCE: + WM_event_add_notifier(C, NC_SCENE, NULL); break; + default: + WM_event_add_notifier(C, NC_ID|NA_RENAME, NULL); break; + } + /* Check the library target exists */ + if (te->idcode == ID_LI) { + char expanded[FILE_MAXDIR + FILE_MAXFILE]; + BLI_strncpy(expanded, ((Library *)tselem->id)->name, FILE_MAXDIR + FILE_MAXFILE); + BLI_path_abs(expanded, G.main->name); + if (!BLI_exists(expanded)) { + BKE_report(CTX_wm_reports(C), RPT_ERROR, "This path does not exist, correct this before saving"); + } + } + } + else { + switch(tselem->type) { + case TSE_DEFGROUP: + defgroup_unique_name(te->directdata, (Object *)tselem->id); // id = object + break; + case TSE_NLA_ACTION: + test_idbutton(tselem->id->name+2); + break; + case TSE_EBONE: + { + bArmature *arm= (bArmature *)tselem->id; + if(arm->edbo) { + EditBone *ebone= te->directdata; + char newname[sizeof(ebone->name)]; + + /* restore bone name */ + BLI_strncpy(newname, ebone->name, sizeof(ebone->name)); + BLI_strncpy(ebone->name, oldname, sizeof(ebone->name)); + ED_armature_bone_rename(obedit->data, oldname, newname); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, OBACT); + } + } + break; + + case TSE_BONE: + { + Bone *bone= te->directdata; + Object *ob; + char newname[sizeof(bone->name)]; + + // always make current object active + tree_element_active(C, scene, soops, te, 1); // was set_active_object() + ob= OBACT; + + /* restore bone name */ + BLI_strncpy(newname, bone->name, sizeof(bone->name)); + BLI_strncpy(bone->name, oldname, sizeof(bone->name)); + ED_armature_bone_rename(ob->data, oldname, newname); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); + } + break; + case TSE_POSE_CHANNEL: + { + bPoseChannel *pchan= te->directdata; + Object *ob; + char newname[sizeof(pchan->name)]; + + // always make current object active + tree_element_active(C, scene, soops, te, 1); // was set_active_object() + ob= OBACT; + + /* restore bone name */ + BLI_strncpy(newname, pchan->name, sizeof(pchan->name)); + BLI_strncpy(pchan->name, oldname, sizeof(pchan->name)); + ED_armature_bone_rename(ob->data, oldname, newname); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); + } + break; + case TSE_POSEGRP: + { + Object *ob= (Object *)tselem->id; // id = object + bActionGroup *grp= te->directdata; + + BLI_uniquename(&ob->pose->agroups, grp, "Group", '.', offsetof(bActionGroup, name), sizeof(grp->name)); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); + } + break; + case TSE_R_LAYER: + break; + } + } + tselem->flag &= ~TSE_TEXTBUT; + } +} + +static void outliner_draw_restrictbuts(uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, ListBase *lb) +{ + uiBut *bt; + TreeElement *te; + TreeStoreElem *tselem; + Object *ob = NULL; + Group *gr = NULL; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(te->ys+2*UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { + /* objects have toggle-able restriction flags */ + if(tselem->type==0 && te->idcode==ID_OB) { + PointerRNA ptr; + + ob = (Object *)tselem->id; + RNA_pointer_create((ID *)ob, &RNA_Object, ob, &ptr); + + uiBlockSetEmboss(block, UI_EMBOSSN); + bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_VIEW_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, + &ptr, "hide", -1, 0, 0, -1, -1, NULL); + uiButSetFunc(bt, restrictbutton_view_cb, scene, ob); + + bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_SELECT_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, + &ptr, "hide_select", -1, 0, 0, -1, -1, NULL); + uiButSetFunc(bt, restrictbutton_sel_cb, scene, ob); + + bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_RENDER_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, + &ptr, "hide_render", -1, 0, 0, -1, -1, NULL); + uiButSetFunc(bt, restrictbutton_rend_cb, scene, ob); + + uiBlockSetEmboss(block, UI_EMBOSS); + + } + if(tselem->type==0 && te->idcode==ID_GR){ + int restrict_bool; + gr = (Group *)tselem->id; + + uiBlockSetEmboss(block, UI_EMBOSSN); + + restrict_bool= group_restrict_flag(gr, OB_RESTRICT_VIEW); + bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_VIEW_ON : ICON_RESTRICT_VIEW_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, NULL, 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); + uiButSetFunc(bt, restrictbutton_gr_restrict_view, scene, gr); + + restrict_bool= group_restrict_flag(gr, OB_RESTRICT_SELECT); + bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_SELECT_ON : ICON_RESTRICT_SELECT_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, NULL, 0, 0, 0, 0, "Restrict/Allow selection in the 3D View"); + uiButSetFunc(bt, restrictbutton_gr_restrict_select, scene, gr); + + restrict_bool= group_restrict_flag(gr, OB_RESTRICT_RENDER); + bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_RENDER_ON : ICON_RESTRICT_RENDER_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, NULL, 0, 0, 0, 0, "Restrict/Allow renderability"); + uiButSetFunc(bt, restrictbutton_gr_restrict_render, scene, gr); + + uiBlockSetEmboss(block, UI_EMBOSS); + } + /* scene render layers and passes have toggle-able flags too! */ + else if(tselem->type==TSE_R_LAYER) { + uiBlockSetEmboss(block, UI_EMBOSSN); + + bt= uiDefIconButBitI(block, ICONTOGN, SCE_LAY_DISABLE, 0, ICON_CHECKBOX_HLT-1, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, te->directdata, 0, 0, 0, 0, "Render this RenderLayer"); + uiButSetFunc(bt, restrictbutton_r_lay_cb, tselem->id, NULL); + + uiBlockSetEmboss(block, UI_EMBOSS); + } + else if(tselem->type==TSE_R_PASS) { + int *layflag= te->directdata; + int passflag= 1<nr; + + uiBlockSetEmboss(block, UI_EMBOSSN); + + + bt= uiDefIconButBitI(block, ICONTOG, passflag, 0, ICON_CHECKBOX_HLT-1, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, layflag, 0, 0, 0, 0, "Render this Pass"); + uiButSetFunc(bt, restrictbutton_r_lay_cb, tselem->id, NULL); + + layflag++; /* is lay_xor */ + if(ELEM8(passflag, SCE_PASS_SPEC, SCE_PASS_SHADOW, SCE_PASS_AO, SCE_PASS_REFLECT, SCE_PASS_REFRACT, SCE_PASS_INDIRECT, SCE_PASS_EMIT, SCE_PASS_ENVIRONMENT)) + bt= uiDefIconButBitI(block, TOG, passflag, 0, (*layflag & passflag)?ICON_DOT:ICON_BLANK1, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, layflag, 0, 0, 0, 0, "Exclude this Pass from Combined"); + uiButSetFunc(bt, restrictbutton_r_lay_cb, tselem->id, NULL); + + uiBlockSetEmboss(block, UI_EMBOSS); + } + else if(tselem->type==TSE_MODIFIER) { + ModifierData *md= (ModifierData *)te->directdata; + ob = (Object *)tselem->id; + + uiBlockSetEmboss(block, UI_EMBOSSN); + bt= uiDefIconButBitI(block, ICONTOGN, eModifierMode_Realtime, 0, ICON_RESTRICT_VIEW_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(md->mode), 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); + uiButSetFunc(bt, restrictbutton_modifier_cb, scene, ob); + + bt= uiDefIconButBitI(block, ICONTOGN, eModifierMode_Render, 0, ICON_RESTRICT_RENDER_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(md->mode), 0, 0, 0, 0, "Restrict/Allow renderability"); + uiButSetFunc(bt, restrictbutton_modifier_cb, scene, ob); + } + else if(tselem->type==TSE_POSE_CHANNEL) { + bPoseChannel *pchan= (bPoseChannel *)te->directdata; + Bone *bone = pchan->bone; + + uiBlockSetEmboss(block, UI_EMBOSSN); + bt= uiDefIconButBitI(block, ICONTOG, BONE_HIDDEN_P, 0, ICON_RESTRICT_VIEW_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(bone->flag), 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); + uiButSetFunc(bt, restrictbutton_bone_cb, NULL, bone); + + bt= uiDefIconButBitI(block, ICONTOG, BONE_UNSELECTABLE, 0, ICON_RESTRICT_SELECT_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(bone->flag), 0, 0, 0, 0, "Restrict/Allow selection in the 3D View"); + uiButSetFunc(bt, restrictbutton_bone_cb, NULL, NULL); + } + else if(tselem->type==TSE_EBONE) { + EditBone *ebone= (EditBone *)te->directdata; + + uiBlockSetEmboss(block, UI_EMBOSSN); + bt= uiDefIconButBitI(block, ICONTOG, BONE_HIDDEN_A, 0, ICON_RESTRICT_VIEW_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(ebone->flag), 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); + uiButSetFunc(bt, restrictbutton_ebone_cb, NULL, ebone); + + bt= uiDefIconButBitI(block, ICONTOG, BONE_UNSELECTABLE, 0, ICON_RESTRICT_SELECT_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X-1, UI_UNIT_Y-1, &(ebone->flag), 0, 0, 0, 0, "Restrict/Allow selection in the 3D View"); + uiButSetFunc(bt, restrictbutton_ebone_cb, NULL, NULL); + } + } + + if((tselem->flag & TSE_CLOSED)==0) outliner_draw_restrictbuts(block, scene, ar, soops, &te->subtree); + } +} + +static void outliner_draw_rnacols(ARegion *ar, int sizex) +{ + View2D *v2d= &ar->v2d; + + float miny = v2d->cur.ymin-V2D_SCROLL_HEIGHT; + if(minytot.ymin) miny = v2d->tot.ymin; + + UI_ThemeColorShadeAlpha(TH_BACK, -15, -200); + + /* draw column separator lines */ + fdrawline((float)sizex, + v2d->cur.ymax, + (float)sizex, + miny); + + fdrawline((float)sizex+OL_RNA_COL_SIZEX, + v2d->cur.ymax, + (float)sizex+OL_RNA_COL_SIZEX, + miny); +} + +static void outliner_draw_rnabuts(uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, int sizex, ListBase *lb) +{ + TreeElement *te; + TreeStoreElem *tselem; + PointerRNA *ptr; + PropertyRNA *prop; + + uiBlockSetEmboss(block, UI_EMBOSST); + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(te->ys+2*UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { + if(tselem->type == TSE_RNA_PROPERTY) { + ptr= &te->rnaptr; + prop= te->directdata; + + if(!(RNA_property_type(prop) == PROP_POINTER && (tselem->flag & TSE_CLOSED)==0)) + uiDefAutoButR(block, ptr, prop, -1, "", ICON_NONE, sizex, (int)te->ys, OL_RNA_COL_SIZEX, UI_UNIT_Y-1); + } + else if(tselem->type == TSE_RNA_ARRAY_ELEM) { + ptr= &te->rnaptr; + prop= te->directdata; + + uiDefAutoButR(block, ptr, prop, te->index, "", ICON_NONE, sizex, (int)te->ys, OL_RNA_COL_SIZEX, UI_UNIT_Y-1); + } + } + + if((tselem->flag & TSE_CLOSED)==0) outliner_draw_rnabuts(block, scene, ar, soops, sizex, &te->subtree); + } +} + +static void operator_call_cb(struct bContext *UNUSED(C), void *arg_kmi, void *arg2) +{ + wmOperatorType *ot= arg2; + wmKeyMapItem *kmi= arg_kmi; + + if(ot) + BLI_strncpy(kmi->idname, ot->idname, OP_MAX_TYPENAME); +} + +static void operator_search_cb(const struct bContext *UNUSED(C), void *UNUSED(arg_kmi), const char *str, uiSearchItems *items) +{ + GHashIterator *iter= WM_operatortype_iter(); + + for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) { + wmOperatorType *ot= BLI_ghashIterator_getValue(iter); + + if(BLI_strcasestr(ot->idname, str)) { + char name[OP_MAX_TYPENAME]; + + /* display name for menu */ + WM_operator_py_idname(name, ot->idname); + + if(0==uiSearchItemAdd(items, name, ot, 0)) + break; + } + } + BLI_ghashIterator_free(iter); +} + +/* operator Search browse menu, open */ +static uiBlock *operator_search_menu(bContext *C, ARegion *ar, void *arg_kmi) +{ + static char search[OP_MAX_TYPENAME]; + wmEvent event; + wmWindow *win= CTX_wm_window(C); + wmKeyMapItem *kmi= arg_kmi; + wmOperatorType *ot= WM_operatortype_find(kmi->idname, 0); + uiBlock *block; + uiBut *but; + + /* clear initial search string, then all items show */ + search[0]= 0; + + block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); + uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_RET_1); + + /* fake button, it holds space for search items */ + uiDefBut(block, LABEL, 0, "", 10, 15, 150, uiSearchBoxhHeight(), NULL, 0, 0, 0, 0, NULL); + + but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 0, 150, UI_UNIT_Y, 0, 0, ""); + uiButSetSearchFunc(but, operator_search_cb, arg_kmi, operator_call_cb, ot); + + uiBoundsBlock(block, 6); + uiBlockSetDirection(block, UI_DOWN); + uiEndBlock(C, block); + + event= *(win->eventstate); /* XXX huh huh? make api call */ + event.type= EVT_BUT_OPEN; + event.val= KM_PRESS; + event.customdata= but; + event.customdatafree= FALSE; + wm_event_add(win, &event); + + return block; +} + +#define OL_KM_KEYBOARD 0 +#define OL_KM_MOUSE 1 +#define OL_KM_TWEAK 2 +#define OL_KM_SPECIALS 3 + +static short keymap_menu_type(short type) +{ + if(ISKEYBOARD(type)) return OL_KM_KEYBOARD; + if(ISTWEAK(type)) return OL_KM_TWEAK; + if(ISMOUSE(type)) return OL_KM_MOUSE; +// return OL_KM_SPECIALS; + return 0; +} + +static const char *keymap_type_menu(void) +{ + static const char string[]= + "Event Type%t" + "|Keyboard%x" STRINGIFY(OL_KM_KEYBOARD) + "|Mouse%x" STRINGIFY(OL_KM_MOUSE) + "|Tweak%x" STRINGIFY(OL_KM_TWEAK) +// "|Specials%x" STRINGIFY(OL_KM_SPECIALS) + ; + + return string; +} + +static const char *keymap_mouse_menu(void) +{ + static const char string[]= + "Mouse Event%t" + "|Left Mouse%x" STRINGIFY(LEFTMOUSE) + "|Middle Mouse%x" STRINGIFY(MIDDLEMOUSE) + "|Right Mouse%x" STRINGIFY(RIGHTMOUSE) + "|Middle Mouse%x" STRINGIFY(MIDDLEMOUSE) + "|Right Mouse%x" STRINGIFY(RIGHTMOUSE) + "|Button4 Mouse%x" STRINGIFY(BUTTON4MOUSE) + "|Button5 Mouse%x" STRINGIFY(BUTTON5MOUSE) + "|Action Mouse%x" STRINGIFY(ACTIONMOUSE) + "|Select Mouse%x" STRINGIFY(SELECTMOUSE) + "|Mouse Move%x" STRINGIFY(MOUSEMOVE) + "|Wheel Up%x" STRINGIFY(WHEELUPMOUSE) + "|Wheel Down%x" STRINGIFY(WHEELDOWNMOUSE) + "|Wheel In%x" STRINGIFY(WHEELINMOUSE) + "|Wheel Out%x" STRINGIFY(WHEELOUTMOUSE) + "|Mouse/Trackpad Pan%x" STRINGIFY(MOUSEPAN) + "|Mouse/Trackpad Zoom%x" STRINGIFY(MOUSEZOOM) + "|Mouse/Trackpad Rotate%x" STRINGIFY(MOUSEROTATE) + ; + + return string; +} + +static const char *keymap_tweak_menu(void) +{ + static const char string[]= + "Tweak Event%t" + "|Left Mouse%x" STRINGIFY(EVT_TWEAK_L) + "|Middle Mouse%x" STRINGIFY(EVT_TWEAK_M) + "|Right Mouse%x" STRINGIFY(EVT_TWEAK_R) + "|Action Mouse%x" STRINGIFY(EVT_TWEAK_A) + "|Select Mouse%x" STRINGIFY(EVT_TWEAK_S) + ; + + return string; +} + +static const char *keymap_tweak_dir_menu(void) +{ + static const char string[]= + "Tweak Direction%t" + "|Any%x" STRINGIFY(KM_ANY) + "|North%x" STRINGIFY(EVT_GESTURE_N) + "|North-East%x" STRINGIFY(EVT_GESTURE_NE) + "|East%x" STRINGIFY(EVT_GESTURE_E) + "|Sout-East%x" STRINGIFY(EVT_GESTURE_SE) + "|South%x" STRINGIFY(EVT_GESTURE_S) + "|South-West%x" STRINGIFY(EVT_GESTURE_SW) + "|West%x" STRINGIFY(EVT_GESTURE_W) + "|North-West%x" STRINGIFY(EVT_GESTURE_NW) + ; + + return string; +} + + +static void keymap_type_cb(bContext *C, void *kmi_v, void *UNUSED(arg_v)) +{ + wmKeyMapItem *kmi= kmi_v; + short maptype= keymap_menu_type(kmi->type); + + if(maptype!=kmi->maptype) { + switch(kmi->maptype) { + case OL_KM_KEYBOARD: + kmi->type= AKEY; + kmi->val= KM_PRESS; + break; + case OL_KM_MOUSE: + kmi->type= LEFTMOUSE; + kmi->val= KM_PRESS; + break; + case OL_KM_TWEAK: + kmi->type= EVT_TWEAK_L; + kmi->val= KM_ANY; + break; + case OL_KM_SPECIALS: + kmi->type= AKEY; + kmi->val= KM_PRESS; + } + ED_region_tag_redraw(CTX_wm_region(C)); + } +} + +static void outliner_draw_keymapbuts(uiBlock *block, ARegion *ar, SpaceOops *soops, ListBase *lb) +{ + TreeElement *te; + TreeStoreElem *tselem; + + uiBlockSetEmboss(block, UI_EMBOSST); + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(te->ys+2*UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { + uiBut *but; + const char *str; + int xstart= 240; + int butw1= UI_UNIT_X; /* operator */ + int butw2= 90; /* event type, menus */ + int butw3= 43; /* modifiers */ + + if(tselem->type == TSE_KEYMAP_ITEM) { + wmKeyMapItem *kmi= te->directdata; + + /* modal map? */ + if(kmi->propvalue); + else { + uiDefBlockBut(block, operator_search_menu, kmi, "", xstart, (int)te->ys+1, butw1, UI_UNIT_Y-1, "Assign new Operator"); + } + xstart+= butw1+10; + + /* map type button */ + kmi->maptype= keymap_menu_type(kmi->type); + + str= keymap_type_menu(); + but= uiDefButS(block, MENU, 0, str, xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->maptype, 0, 0, 0, 0, "Event type"); + uiButSetFunc(but, keymap_type_cb, kmi, NULL); + xstart+= butw2+5; + + /* edit actual event */ + switch(kmi->maptype) { + case OL_KM_KEYBOARD: + uiDefKeyevtButS(block, 0, "", xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->type, "Key code"); + xstart+= butw2+5; + break; + case OL_KM_MOUSE: + str= keymap_mouse_menu(); + uiDefButS(block, MENU, 0, str, xstart,(int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->type, 0, 0, 0, 0, "Mouse button"); + xstart+= butw2+5; + break; + case OL_KM_TWEAK: + str= keymap_tweak_menu(); + uiDefButS(block, MENU, 0, str, xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->type, 0, 0, 0, 0, "Tweak gesture"); + xstart+= butw2+5; + str= keymap_tweak_dir_menu(); + uiDefButS(block, MENU, 0, str, xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->val, 0, 0, 0, 0, "Tweak gesture direction"); + xstart+= butw2+5; + break; + } + + /* modifiers */ + uiDefButS(block, OPTION, 0, "Shift", xstart, (int)te->ys+1, butw3+5, UI_UNIT_Y-1, &kmi->shift, 0, 0, 0, 0, "Modifier"); xstart+= butw3+5; + uiDefButS(block, OPTION, 0, "Ctrl", xstart, (int)te->ys+1, butw3, UI_UNIT_Y-1, &kmi->ctrl, 0, 0, 0, 0, "Modifier"); xstart+= butw3; + uiDefButS(block, OPTION, 0, "Alt", xstart, (int)te->ys+1, butw3, UI_UNIT_Y-1, &kmi->alt, 0, 0, 0, 0, "Modifier"); xstart+= butw3; + uiDefButS(block, OPTION, 0, "OS", xstart, (int)te->ys+1, butw3, UI_UNIT_Y-1, &kmi->oskey, 0, 0, 0, 0, "Modifier"); xstart+= butw3; + xstart+= 5; + uiDefKeyevtButS(block, 0, "", xstart, (int)te->ys+1, butw3, UI_UNIT_Y-1, &kmi->keymodifier, "Key Modifier code"); + xstart+= butw3+5; + + /* rna property */ + if(kmi->ptr && kmi->ptr->data) { + uiDefBut(block, LABEL, 0, "(RNA property)", xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->oskey, 0, 0, 0, 0, ""); xstart+= butw2; + } + + (void)xstart; + } + } + + if((tselem->flag & TSE_CLOSED)==0) outliner_draw_keymapbuts(block, ar, soops, &te->subtree); + } +} + + +static void outliner_buttons(const bContext *C, uiBlock *block, ARegion *ar, SpaceOops *soops, ListBase *lb) +{ + uiBut *bt; + TreeElement *te; + TreeStoreElem *tselem; + int spx, dx, len; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(te->ys+2*UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { + + if(tselem->flag & TSE_TEXTBUT) { + + /* If we add support to rename Sequence. + * need change this. + */ + if(tselem->type == TSE_POSE_BASE) continue; // prevent crash when trying to rename 'pose' entry of armature + + if(tselem->type==TSE_EBONE) len = sizeof(((EditBone*) 0)->name); + else if (tselem->type==TSE_MODIFIER) len = sizeof(((ModifierData*) 0)->name); + else if(tselem->id && GS(tselem->id->name)==ID_LI) len = sizeof(((Library*) 0)->name); + else len= MAX_ID_NAME-2; + + + dx= (int)UI_GetStringWidth(te->name); + if(dx<100) dx= 100; + spx=te->xs+2*UI_UNIT_X-4; + if(spx+dx+10>ar->v2d.cur.xmax) dx = ar->v2d.cur.xmax-spx-10; + + bt= uiDefBut(block, TEX, OL_NAMEBUTTON, "", spx, (int)te->ys, dx+10, UI_UNIT_Y-1, (void *)te->name, 1.0, (float)len, 0, 0, ""); + uiButSetRenameFunc(bt, namebutton_cb, tselem); + + /* returns false if button got removed */ + if( 0 == uiButActiveOnly(C, block, bt) ) + tselem->flag &= ~TSE_TEXTBUT; + } + } + + if((tselem->flag & TSE_CLOSED)==0) outliner_buttons(C, block, ar, soops, &te->subtree); + } +} + +/* ****************************************************** */ +/* Normal Drawing... */ + +/* make function calls a bit compacter */ +struct DrawIconArg { + uiBlock *block; + ID *id; + int xmax, x, y; + float alpha; +}; + +static void tselem_draw_icon_uibut(struct DrawIconArg *arg, int icon) +{ + /* restrict collumn clip... it has been coded by simply overdrawing, doesnt work for buttons */ + if(arg->x >= arg->xmax) + UI_icon_draw(arg->x, arg->y, icon); + else { + /* XXX investigate: button placement of icons is way different than UI_icon_draw? */ + float ufac= UI_UNIT_X/20.0f; + uiBut *but= uiDefIconBut(arg->block, LABEL, 0, icon, arg->x-3.0f*ufac, arg->y, UI_UNIT_X-4.0f*ufac, UI_UNIT_Y-4.0f*ufac, NULL, 0.0, 0.0, 1.0, arg->alpha, (arg->id && arg->id->lib) ? arg->id->lib->name : ""); + + if(arg->id) + uiButSetDragID(but, arg->id); + } + +} + +static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeStoreElem *tselem, TreeElement *te, float alpha) +{ + struct DrawIconArg arg; + + /* make function calls a bit compacter */ + arg.block= block; + arg.id= tselem->id; + arg.xmax= xmax; + arg.x= x; + arg.y= y; + arg.alpha= alpha; + + if(tselem->type) { + switch( tselem->type) { + case TSE_ANIM_DATA: + UI_icon_draw(x, y, ICON_ANIM_DATA); break; // xxx + case TSE_NLA: + UI_icon_draw(x, y, ICON_NLA); break; + case TSE_NLA_TRACK: + UI_icon_draw(x, y, ICON_NLA); break; // XXX + case TSE_NLA_ACTION: + UI_icon_draw(x, y, ICON_ACTION); break; + case TSE_DRIVER_BASE: + +#if 0 // GSOC_PEPPER + + UI_icon_draw(x, y, ICON_DRIVER); break; + +#endif // GSOC_PEPPER + + case TSE_DEFGROUP_BASE: + UI_icon_draw(x, y, ICON_GROUP_VERTEX); break; + case TSE_BONE: + case TSE_EBONE: + UI_icon_draw(x, y, ICON_BONE_DATA); break; + case TSE_CONSTRAINT_BASE: + UI_icon_draw(x, y, ICON_CONSTRAINT); break; + case TSE_MODIFIER_BASE: + UI_icon_draw(x, y, ICON_MODIFIER); break; + case TSE_LINKED_OB: + UI_icon_draw(x, y, ICON_OBJECT_DATA); break; + case TSE_LINKED_PSYS: + UI_icon_draw(x, y, ICON_PARTICLES); break; + case TSE_MODIFIER: + { + Object *ob= (Object *)tselem->id; + ModifierData *md= BLI_findlink(&ob->modifiers, tselem->nr); + switch(md->type) { + case eModifierType_Subsurf: + UI_icon_draw(x, y, ICON_MOD_SUBSURF); break; + case eModifierType_Armature: + UI_icon_draw(x, y, ICON_MOD_ARMATURE); break; + case eModifierType_Lattice: + UI_icon_draw(x, y, ICON_MOD_LATTICE); break; + case eModifierType_Curve: + UI_icon_draw(x, y, ICON_MOD_CURVE); break; + case eModifierType_Build: + UI_icon_draw(x, y, ICON_MOD_BUILD); break; + case eModifierType_Mirror: + UI_icon_draw(x, y, ICON_MOD_MIRROR); break; + case eModifierType_Decimate: + UI_icon_draw(x, y, ICON_MOD_DECIM); break; + case eModifierType_Wave: + UI_icon_draw(x, y, ICON_MOD_WAVE); break; + case eModifierType_Hook: + UI_icon_draw(x, y, ICON_HOOK); break; + case eModifierType_Softbody: + UI_icon_draw(x, y, ICON_MOD_SOFT); break; + case eModifierType_Boolean: + UI_icon_draw(x, y, ICON_MOD_BOOLEAN); break; + case eModifierType_ParticleSystem: + UI_icon_draw(x, y, ICON_MOD_PARTICLES); break; + case eModifierType_ParticleInstance: + UI_icon_draw(x, y, ICON_MOD_PARTICLES); break; + case eModifierType_EdgeSplit: + UI_icon_draw(x, y, ICON_MOD_EDGESPLIT); break; + case eModifierType_Array: + UI_icon_draw(x, y, ICON_MOD_ARRAY); break; + case eModifierType_UVProject: + UI_icon_draw(x, y, ICON_MOD_UVPROJECT); break; + case eModifierType_Displace: + UI_icon_draw(x, y, ICON_MOD_DISPLACE); break; + case eModifierType_Shrinkwrap: + UI_icon_draw(x, y, ICON_MOD_SHRINKWRAP); break; + case eModifierType_Cast: + UI_icon_draw(x, y, ICON_MOD_CAST); break; + case eModifierType_MeshDeform: + UI_icon_draw(x, y, ICON_MOD_MESHDEFORM); break; + case eModifierType_Bevel: + UI_icon_draw(x, y, ICON_MOD_BEVEL); break; + case eModifierType_Smooth: + UI_icon_draw(x, y, ICON_MOD_SMOOTH); break; + case eModifierType_SimpleDeform: + UI_icon_draw(x, y, ICON_MOD_SIMPLEDEFORM); break; + case eModifierType_Mask: + UI_icon_draw(x, y, ICON_MOD_MASK); break; + case eModifierType_Cloth: + UI_icon_draw(x, y, ICON_MOD_CLOTH); break; + case eModifierType_Explode: + UI_icon_draw(x, y, ICON_MOD_EXPLODE); break; + case eModifierType_Collision: + UI_icon_draw(x, y, ICON_MOD_PHYSICS); break; + case eModifierType_Fluidsim: + UI_icon_draw(x, y, ICON_MOD_FLUIDSIM); break; + case eModifierType_Multires: + UI_icon_draw(x, y, ICON_MOD_MULTIRES); break; + case eModifierType_Smoke: + UI_icon_draw(x, y, ICON_MOD_SMOKE); break; + case eModifierType_Solidify: + UI_icon_draw(x, y, ICON_MOD_SOLIDIFY); break; + case eModifierType_Screw: + UI_icon_draw(x, y, ICON_MOD_SCREW); break; + default: + UI_icon_draw(x, y, ICON_DOT); break; + } + break; + } + case TSE_SCRIPT_BASE: + UI_icon_draw(x, y, ICON_TEXT); break; + case TSE_POSE_BASE: + UI_icon_draw(x, y, ICON_ARMATURE_DATA); break; + case TSE_POSE_CHANNEL: + UI_icon_draw(x, y, ICON_BONE_DATA); break; + case TSE_PROXY: + UI_icon_draw(x, y, ICON_GHOST); break; + case TSE_R_LAYER_BASE: + UI_icon_draw(x, y, ICON_RENDERLAYERS); break; + case TSE_R_LAYER: + UI_icon_draw(x, y, ICON_RENDERLAYERS); break; + case TSE_LINKED_LAMP: + UI_icon_draw(x, y, ICON_LAMP_DATA); break; + case TSE_LINKED_MAT: + UI_icon_draw(x, y, ICON_MATERIAL_DATA); break; + case TSE_POSEGRP_BASE: + UI_icon_draw(x, y, ICON_VERTEXSEL); break; + case TSE_SEQUENCE: + if(te->idcode==SEQ_MOVIE) + UI_icon_draw(x, y, ICON_SEQUENCE); + else if(te->idcode==SEQ_META) + UI_icon_draw(x, y, ICON_DOT); + else if(te->idcode==SEQ_SCENE) + UI_icon_draw(x, y, ICON_SCENE); + else if(te->idcode==SEQ_SOUND) + UI_icon_draw(x, y, ICON_SOUND); + else if(te->idcode==SEQ_IMAGE) + UI_icon_draw(x, y, ICON_IMAGE_COL); + else + UI_icon_draw(x, y, ICON_PARTICLES); + break; + case TSE_SEQ_STRIP: + UI_icon_draw(x, y, ICON_LIBRARY_DATA_DIRECT); + break; + case TSE_SEQUENCE_DUP: + UI_icon_draw(x, y, ICON_OBJECT_DATA); + break; + case TSE_RNA_STRUCT: + if(RNA_struct_is_ID(te->rnaptr.type)) { + arg.id= (ID *)te->rnaptr.data; + tselem_draw_icon_uibut(&arg, RNA_struct_ui_icon(te->rnaptr.type)); + } + else + UI_icon_draw(x, y, RNA_struct_ui_icon(te->rnaptr.type)); + break; + default: + UI_icon_draw(x, y, ICON_DOT); break; + } + } + else if (GS(tselem->id->name) == ID_OB) { + Object *ob= (Object *)tselem->id; + switch (ob->type) { + case OB_LAMP: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_LAMP); break; + case OB_MESH: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_MESH); break; + case OB_CAMERA: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_CAMERA); break; + case OB_CURVE: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_CURVE); break; + case OB_MBALL: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_META); break; + case OB_LATTICE: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_LATTICE); break; + case OB_ARMATURE: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_ARMATURE); break; + case OB_FONT: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_FONT); break; + case OB_SURF: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_SURFACE); break; + +#if 0 // GSOC_PEPPER + + case OB_SPEAKER: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_SPEAKER); break; + +#endif // GSOC_PEPPER + + case OB_EMPTY: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_EMPTY); break; + + } + } + else { + switch( GS(tselem->id->name)) { + case ID_SCE: + tselem_draw_icon_uibut(&arg, ICON_SCENE_DATA); break; + case ID_ME: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_MESH); break; + case ID_CU: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_CURVE); break; + case ID_MB: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_META); break; + case ID_LT: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_LATTICE); break; + case ID_LA: + { + Lamp *la= (Lamp *)tselem->id; + + switch(la->type) { + case LA_LOCAL: + tselem_draw_icon_uibut(&arg, ICON_LAMP_POINT); break; + case LA_SUN: + tselem_draw_icon_uibut(&arg, ICON_LAMP_SUN); break; + case LA_SPOT: + tselem_draw_icon_uibut(&arg, ICON_LAMP_SPOT); break; + case LA_HEMI: + tselem_draw_icon_uibut(&arg, ICON_LAMP_HEMI); break; + case LA_AREA: + tselem_draw_icon_uibut(&arg, ICON_LAMP_AREA); break; + default: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_LAMP); break; + } + break; + } + case ID_MA: + tselem_draw_icon_uibut(&arg, ICON_MATERIAL_DATA); break; + case ID_TE: + tselem_draw_icon_uibut(&arg, ICON_TEXTURE_DATA); break; + case ID_IM: + tselem_draw_icon_uibut(&arg, ICON_IMAGE_DATA); break; + +#if 0 // GSOC_PEPPER + + case ID_SPK: + case ID_SO: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_SPEAKER); break; + +#endif // GSOC_PEPPER + + case ID_AR: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_ARMATURE); break; + case ID_CA: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_CAMERA); break; + case ID_KE: + tselem_draw_icon_uibut(&arg, ICON_SHAPEKEY_DATA); break; + case ID_WO: + tselem_draw_icon_uibut(&arg, ICON_WORLD_DATA); break; + case ID_AC: + tselem_draw_icon_uibut(&arg, ICON_ACTION); break; + case ID_NLA: + tselem_draw_icon_uibut(&arg, ICON_NLA); break; + case ID_TXT: + tselem_draw_icon_uibut(&arg, ICON_SCRIPT); break; + case ID_GR: + tselem_draw_icon_uibut(&arg, ICON_GROUP); break; + case ID_LI: + tselem_draw_icon_uibut(&arg, ICON_LIBRARY_DATA_DIRECT); break; + } + } +} + +static void outliner_draw_iconrow(bContext *C, uiBlock *block, Scene *scene, SpaceOops *soops, ListBase *lb, int level, int xmax, int *offsx, int ys) +{ + TreeElement *te; + TreeStoreElem *tselem; + int active; + + for(te= lb->first; te; te= te->next) { + + /* exit drawing early */ + if((*offsx) - UI_UNIT_X > xmax) + break; + + tselem= TREESTORE(te); + + /* object hierarchy always, further constrained on level */ + if(level<1 || (tselem->type==0 && te->idcode==ID_OB)) { + + /* active blocks get white circle */ + if(tselem->type==0) { + if(te->idcode==ID_OB) active= (OBACT==(Object *)tselem->id); + else if(scene->obedit && scene->obedit->data==tselem->id) active= 1; // XXX use context? + else active= tree_element_active(C, scene, soops, te, 0); + } + else active= tree_element_type_active(NULL, scene, soops, te, tselem, 0); + + if(active) { + float ufac= UI_UNIT_X/20.0f; + + uiSetRoundBox(15); + glColor4ub(255, 255, 255, 100); + uiRoundBox( (float)*offsx-0.5f*ufac, (float)ys-1.0f*ufac, (float)*offsx+UI_UNIT_Y-3.0f*ufac, (float)ys+UI_UNIT_Y-3.0f*ufac, UI_UNIT_Y/2.0f-2.0f*ufac); + glEnable(GL_BLEND); /* roundbox disables */ + } + + tselem_draw_icon(block, xmax, (float)*offsx, (float)ys, tselem, te, 0.5f); + te->xs= (float)*offsx; + te->ys= (float)ys; + te->xend= (short)*offsx+UI_UNIT_X; + te->flag |= TE_ICONROW; // for click + + (*offsx) += UI_UNIT_X; + } + + /* this tree element always has same amount of branches, so dont draw */ + if(tselem->type!=TSE_R_LAYER) + outliner_draw_iconrow(C, block, scene, soops, &te->subtree, level+1, xmax, offsx, ys); + } + +} + +/* closed tree element */ +static void outliner_set_coord_tree_element(SpaceOops *soops, TreeElement *te, int startx, int *starty) +{ + TreeElement *ten; + + /* store coord and continue, we need coordinates for elements outside view too */ + te->xs= (float)startx; + te->ys= (float)(*starty); + + for(ten= te->subtree.first; ten; ten= ten->next) { + outliner_set_coord_tree_element(soops, ten, startx+UI_UNIT_X, starty); + } +} + + +static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int startx, int *starty) +{ + TreeElement *ten; + TreeStoreElem *tselem; + float ufac= UI_UNIT_X/20.0f; + int offsx= 0, active=0; // active=1 active obj, else active data + + tselem= TREESTORE(te); + + if(*starty+2*UI_UNIT_Y >= ar->v2d.cur.ymin && *starty<= ar->v2d.cur.ymax) { + int xmax= ar->v2d.cur.xmax; + + /* icons can be ui buts, we dont want it to overlap with restrict */ + if((soops->flag & SO_HIDE_RESTRICTCOLS)==0) + xmax-= OL_TOGW+UI_UNIT_X; + + glEnable(GL_BLEND); + + /* colors for active/selected data */ + if(tselem->type==0) { + if(te->idcode==ID_SCE) { + if(tselem->id == (ID *)scene) { + glColor4ub(255, 255, 255, 100); + active= 2; + } + } + else if(te->idcode==ID_GR) { + Group *gr = (Group *)tselem->id; + + if(group_select_flag(gr)) { + char col[4]; + UI_GetThemeColorType4ubv(TH_SELECT, SPACE_VIEW3D, col); + col[3]= 100; + glColor4ubv((GLubyte *)col); + + active= 2; + } + } + else if(te->idcode==ID_OB) { + Object *ob= (Object *)tselem->id; + + if(ob==OBACT || (ob->flag & SELECT)) { + char col[4]= {0, 0, 0, 0}; + + /* outliner active ob: always white text, circle color now similar to view3d */ + + active= 2; /* means it draws a color circle */ + if(ob==OBACT) { + if(ob->flag & SELECT) { + UI_GetThemeColorType4ubv(TH_ACTIVE, SPACE_VIEW3D, col); + col[3]= 100; + } + + active= 1; /* means it draws white text */ + } + else if(ob->flag & SELECT) { + UI_GetThemeColorType4ubv(TH_SELECT, SPACE_VIEW3D, col); + col[3]= 100; + } + + glColor4ubv((GLubyte *)col); + } + + } + else if(scene->obedit && scene->obedit->data==tselem->id) { + glColor4ub(255, 255, 255, 100); + active= 2; + } + else { + if(tree_element_active(C, scene, soops, te, 0)) { + glColor4ub(220, 220, 255, 100); + active= 2; + } + } + } + else { + if( tree_element_type_active(NULL, scene, soops, te, tselem, 0) ) active= 2; + glColor4ub(220, 220, 255, 100); + } + + /* active circle */ + if(active) { + uiSetRoundBox(15); + uiRoundBox( (float)startx+UI_UNIT_Y-1.5f*ufac, (float)*starty+2.0f*ufac, (float)startx+2.0f*UI_UNIT_Y-4.0f*ufac, (float)*starty+UI_UNIT_Y-1.0f*ufac, UI_UNIT_Y/2.0f-2.0f*ufac); + glEnable(GL_BLEND); /* roundbox disables it */ + + te->flag |= TE_ACTIVE; // for lookup in display hierarchies + } + + /* open/close icon, only when sublevels, except for scene */ + if(te->subtree.first || (tselem->type==0 && te->idcode==ID_SCE) || (te->flag & TE_LAZY_CLOSED)) { + int icon_x; + if(tselem->type==0 && ELEM(te->idcode, ID_OB, ID_SCE)) + icon_x = startx; + else + icon_x = startx+5*ufac; + + // icons a bit higher + if(tselem->flag & TSE_CLOSED) + UI_icon_draw((float)icon_x, (float)*starty+2*ufac, ICON_DISCLOSURE_TRI_RIGHT); + else + UI_icon_draw((float)icon_x, (float)*starty+2*ufac, ICON_DISCLOSURE_TRI_DOWN); + } + offsx+= UI_UNIT_X; + + /* datatype icon */ + + if(!(ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM))) { + // icons a bit higher + tselem_draw_icon(block, xmax, (float)startx+offsx - 0.5f*ufac, (float)*starty+2.0f*ufac, tselem, te, 1.0f); + + offsx+= UI_UNIT_X; + } + else + offsx+= 2*ufac; + + if(tselem->type==0 && tselem->id->lib) { + glPixelTransferf(GL_ALPHA_SCALE, 0.5f); + if(tselem->id->flag & LIB_INDIRECT) + UI_icon_draw((float)startx+offsx, (float)*starty+2*ufac, ICON_LIBRARY_DATA_INDIRECT); + else + UI_icon_draw((float)startx+offsx, (float)*starty+2*ufac, ICON_LIBRARY_DATA_DIRECT); + glPixelTransferf(GL_ALPHA_SCALE, 1.0f); + offsx+= UI_UNIT_X; + } + glDisable(GL_BLEND); + + /* name */ + if(active==1) UI_ThemeColor(TH_TEXT_HI); + else if(ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) UI_ThemeColorBlend(TH_BACK, TH_TEXT, 0.75f); + else UI_ThemeColor(TH_TEXT); + + UI_DrawString(startx+offsx, *starty+5*ufac, te->name); + + offsx+= (int)(UI_UNIT_X + UI_GetStringWidth(te->name)); + + /* closed item, we draw the icons, not when it's a scene, or master-server list though */ + if(tselem->flag & TSE_CLOSED) { + if(te->subtree.first) { + if(tselem->type==0 && te->idcode==ID_SCE); + else if(tselem->type!=TSE_R_LAYER) { /* this tree element always has same amount of branches, so dont draw */ + int tempx= startx+offsx; + + // divider + UI_ThemeColorShade(TH_BACK, -40); + glRecti(tempx -10, *starty+4, tempx -8, *starty+UI_UNIT_Y-4); + + glEnable(GL_BLEND); + glPixelTransferf(GL_ALPHA_SCALE, 0.5); + + outliner_draw_iconrow(C, block, scene, soops, &te->subtree, 0, xmax, &tempx, *starty+2); + + glPixelTransferf(GL_ALPHA_SCALE, 1.0); + glDisable(GL_BLEND); + } + } + } + } + /* store coord and continue, we need coordinates for elements outside view too */ + te->xs= (float)startx; + te->ys= (float)*starty; + te->xend= startx+offsx; + + if((tselem->flag & TSE_CLOSED)==0) { + *starty-= UI_UNIT_Y; + + for(ten= te->subtree.first; ten; ten= ten->next) + outliner_draw_tree_element(C, block, scene, ar, soops, ten, startx+UI_UNIT_X, starty); + } + else { + for(ten= te->subtree.first; ten; ten= ten->next) + outliner_set_coord_tree_element(soops, te, startx, starty); + + *starty-= UI_UNIT_Y; + } +} + +static void outliner_draw_hierarchy(SpaceOops *soops, ListBase *lb, int startx, int *starty) +{ + TreeElement *te; + TreeStoreElem *tselem; + int y1, y2; + + if(lb->first==NULL) return; + + y1=y2= *starty; /* for vertical lines between objects */ + for(te=lb->first; te; te= te->next) { + y2= *starty; + tselem= TREESTORE(te); + + /* horizontal line? */ + if(tselem->type==0 && (te->idcode==ID_OB || te->idcode==ID_SCE)) + glRecti(startx, *starty, startx+UI_UNIT_X, *starty-1); + + *starty-= UI_UNIT_Y; + + if((tselem->flag & TSE_CLOSED)==0) + outliner_draw_hierarchy(soops, &te->subtree, startx+UI_UNIT_X, starty); + } + + /* vertical line */ + te= lb->last; + if(te->parent || lb->first!=lb->last) { + tselem= TREESTORE(te); + if(tselem->type==0 && te->idcode==ID_OB) { + + glRecti(startx, y1+UI_UNIT_Y, startx+1, y2); + } + } +} + +static void outliner_draw_struct_marks(ARegion *ar, SpaceOops *soops, ListBase *lb, int *starty) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + + /* selection status */ + if((tselem->flag & TSE_CLOSED)==0) + if(tselem->type == TSE_RNA_STRUCT) + glRecti(0, *starty+1, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, *starty+UI_UNIT_Y-1); + + *starty-= UI_UNIT_Y; + if((tselem->flag & TSE_CLOSED)==0) { + outliner_draw_struct_marks(ar, soops, &te->subtree, starty); + if(tselem->type == TSE_RNA_STRUCT) + fdrawline(0, (float)*starty+UI_UNIT_Y, ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, (float)*starty+UI_UNIT_Y); + } + } +} + +static void outliner_draw_selection(ARegion *ar, SpaceOops *soops, ListBase *lb, int *starty) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + + /* selection status */ + if(tselem->flag & TSE_SELECTED) { + glRecti(0, *starty+1, (int)ar->v2d.cur.xmax, *starty+UI_UNIT_Y-1); + } + *starty-= UI_UNIT_Y; + if((tselem->flag & TSE_CLOSED)==0) outliner_draw_selection(ar, soops, &te->subtree, starty); + } +} + + +static void outliner_draw_tree(bContext *C, uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops) +{ + TreeElement *te; + int starty, startx; + float col[4]; + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // only once + + if (ELEM(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF)) { + /* struct marks */ + UI_ThemeColorShadeAlpha(TH_BACK, -15, -200); + //UI_ThemeColorShade(TH_BACK, -20); + starty= (int)ar->v2d.tot.ymax-UI_UNIT_Y-OL_Y_OFFSET; + outliner_draw_struct_marks(ar, soops, &soops->tree, &starty); + } + + /* always draw selection fill before hierarchy */ + UI_GetThemeColor3fv(TH_BACK, col); + glColor3f(col[0]+0.06f, col[1]+0.08f, col[2]+0.10f); + starty= (int)ar->v2d.tot.ymax-UI_UNIT_Y-OL_Y_OFFSET; + outliner_draw_selection(ar, soops, &soops->tree, &starty); + + // grey hierarchy lines + UI_ThemeColorBlend(TH_BACK, TH_TEXT, 0.4f); + starty= (int)ar->v2d.tot.ymax-UI_UNIT_Y/2-OL_Y_OFFSET; + startx= 6; + outliner_draw_hierarchy(soops, &soops->tree, startx, &starty); + + // items themselves + starty= (int)ar->v2d.tot.ymax-UI_UNIT_Y-OL_Y_OFFSET; + startx= 0; + for(te= soops->tree.first; te; te= te->next) { + outliner_draw_tree_element(C, block, scene, ar, soops, te, startx, &starty); + } +} + + +static void outliner_back(ARegion *ar) +{ + int ystart; + + UI_ThemeColorShade(TH_BACK, 6); + ystart= (int)ar->v2d.tot.ymax; + ystart= UI_UNIT_Y*(ystart/(UI_UNIT_Y))-OL_Y_OFFSET; + + while(ystart+2*UI_UNIT_Y > ar->v2d.cur.ymin) { + glRecti(0, ystart, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, ystart+UI_UNIT_Y); + ystart-= 2*UI_UNIT_Y; + } +} + +static void outliner_draw_restrictcols(ARegion *ar) +{ + int ystart; + + /* background underneath */ + UI_ThemeColor(TH_BACK); + glRecti((int)ar->v2d.cur.xmax-OL_TOGW, (int)ar->v2d.cur.ymin-V2D_SCROLL_HEIGHT-1, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, (int)ar->v2d.cur.ymax); + + UI_ThemeColorShade(TH_BACK, 6); + ystart= (int)ar->v2d.tot.ymax; + ystart= UI_UNIT_Y*(ystart/(UI_UNIT_Y))-OL_Y_OFFSET; + + while(ystart+2*UI_UNIT_Y > ar->v2d.cur.ymin) { + glRecti((int)ar->v2d.cur.xmax-OL_TOGW, ystart, (int)ar->v2d.cur.xmax, ystart+UI_UNIT_Y); + ystart-= 2*UI_UNIT_Y; + } + + UI_ThemeColorShadeAlpha(TH_BACK, -15, -200); + + /* view */ + fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, + ar->v2d.cur.ymax, + ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, + ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT); + + /* render */ + fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, + ar->v2d.cur.ymax, + ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, + ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT); + + /* render */ + fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, + ar->v2d.cur.ymax, + ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, + ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT); +} + +/* ****************************************************** */ +/* Main Entrypoint - Draw contents of Outliner editor */ + +void draw_outliner(const bContext *C) +{ + Main *mainvar= CTX_data_main(C); + Scene *scene= CTX_data_scene(C); + ARegion *ar= CTX_wm_region(C); + View2D *v2d= &ar->v2d; + SpaceOops *soops= CTX_wm_space_outliner(C); + uiBlock *block; + int sizey= 0, sizex= 0, sizex_rna= 0; + + outliner_build_tree(mainvar, scene, soops); // always + + /* get extents of data */ + outliner_height(soops, &soops->tree, &sizey); + + if (ELEM3(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF, SO_KEYMAP)) { + /* RNA has two columns: + * - column 1 is (max_width + OL_RNA_COL_SPACEX) or + * (OL_RNA_COL_X), whichever is wider... + * - column 2 is fixed at OL_RNA_COL_SIZEX + * + * (*) XXX max width for now is a fixed factor of UI_UNIT_X*(max_indention+100) + */ + + /* get actual width of column 1 */ + outliner_rna_width(soops, &soops->tree, &sizex_rna, 0); + sizex_rna= MAX2(OL_RNA_COLX, sizex_rna+OL_RNA_COL_SPACEX); + + /* get width of data (for setting 'tot' rect, this is column 1 + column 2 + a bit extra) */ + if (soops->outlinevis == SO_KEYMAP) + sizex= sizex_rna + OL_RNA_COL_SIZEX*3 + 50; // XXX this is only really a quick hack to make this wide enough... + else + sizex= sizex_rna + OL_RNA_COL_SIZEX + 50; + } + else { + /* width must take into account restriction columns (if visible) so that entries will still be visible */ + //outliner_width(soops, &soops->tree, &sizex); + outliner_rna_width(soops, &soops->tree, &sizex, 0); // XXX should use outliner_width instead when te->xend will be set correctly... + + /* constant offset for restriction columns */ + // XXX this isn't that great yet... + if ((soops->flag & SO_HIDE_RESTRICTCOLS)==0) + sizex += OL_TOGW*3; + } + + /* tweak to display last line (when list bigger than window) */ + sizey += V2D_SCROLL_HEIGHT; + + /* adds vertical offset */ + sizey += OL_Y_OFFSET; + + /* update size of tot-rect (extents of data/viewable area) */ + UI_view2d_totRect_set(v2d, sizex, sizey); + + /* force display to pixel coords */ + v2d->flag |= (V2D_PIXELOFS_X|V2D_PIXELOFS_Y); + /* set matrix for 2d-view controls */ + UI_view2d_view_ortho(v2d); + + /* draw outliner stuff (background, hierachy lines and names) */ + outliner_back(ar); + block= uiBeginBlock(C, ar, "outliner buttons", UI_EMBOSS); + outliner_draw_tree((bContext *)C, block, scene, ar, soops); + + if(ELEM(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF)) { + /* draw rna buttons */ + outliner_draw_rnacols(ar, sizex_rna); + outliner_draw_rnabuts(block, scene, ar, soops, sizex_rna, &soops->tree); + } + else if(soops->outlinevis == SO_KEYMAP) { + outliner_draw_keymapbuts(block, ar, soops, &soops->tree); + } + else if (!(soops->flag & SO_HIDE_RESTRICTCOLS)) { + /* draw restriction columns */ + outliner_draw_restrictcols(ar); + outliner_draw_restrictbuts(block, scene, ar, soops, &soops->tree); + } + + /* draw edit buttons if nessecery */ + outliner_buttons(C, block, ar, soops, &soops->tree); + + uiEndBlock(C, block); + uiDrawBlock(C, block); + + /* clear flag that allows quick redraws */ + soops->storeflag &= ~SO_TREESTORE_REDRAW; +} diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c new file mode 100644 index 00000000000..15167a3ba2c --- /dev/null +++ b/source/blender/editors/space_outliner/outliner_edit.c @@ -0,0 +1,1398 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2004 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Joshua Leung + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/editors/space_outliner/outliner_edit.c + * \ingroup spoutliner + */ + +#include +#include +#include +#include + +#include "MEM_guardedalloc.h" + +#include "DNA_anim_types.h" +#include "DNA_armature_types.h" +#include "DNA_constraint_types.h" +#include "DNA_camera_types.h" +#include "DNA_group_types.h" +#include "DNA_key_types.h" +#include "DNA_lamp_types.h" +#include "DNA_material_types.h" +#include "DNA_mesh_types.h" +#include "DNA_meta_types.h" +#include "DNA_particle_types.h" +#include "DNA_scene_types.h" +#include "DNA_world_types.h" +#include "DNA_sequence_types.h" +#include "DNA_object_types.h" + +#include "BLI_blenlib.h" +#include "BLI_utildefines.h" +#include "BLI_math_base.h" + +#if defined WIN32 && !defined _LIBC +# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ +#else +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif +# include +#endif + + +#include "BKE_animsys.h" +#include "BKE_context.h" +#include "BKE_deform.h" +#include "BKE_depsgraph.h" +#include "BKE_fcurve.h" +#include "BKE_global.h" +#include "BKE_group.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_modifier.h" +#include "BKE_report.h" +#include "BKE_scene.h" +#include "BKE_sequencer.h" + +#include "ED_armature.h" +#include "ED_object.h" +#include "ED_screen.h" +#include "ED_util.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "BIF_gl.h" +#include "BIF_glutil.h" + +#include "UI_interface.h" +#include "UI_interface_icons.h" +#include "UI_resources.h" +#include "UI_view2d.h" + +#include "RNA_access.h" +#include "RNA_define.h" +#include "RNA_enum_types.h" + +#include "ED_keyframing.h" + +#include "outliner_intern.h" + +/* ************************************************************** */ +/* Unused Utilities */ +// XXX: where to place these? + +/* This is not used anywhere at the moment */ +#if 0 +/* return 1 when levels were opened */ +static int outliner_open_back(SpaceOops *soops, TreeElement *te) +{ + TreeStoreElem *tselem; + int retval= 0; + + for (te= te->parent; te; te= te->parent) { + tselem= TREESTORE(te); + if (tselem->flag & TSE_CLOSED) { + tselem->flag &= ~TSE_CLOSED; + retval= 1; + } + } + return retval; +} + +static void outliner_open_reveal(SpaceOops *soops, ListBase *lb, TreeElement *teFind, int *found) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for (te= lb->first; te; te= te->next) { + /* check if this tree-element was the one we're seeking */ + if (te == teFind) { + *found= 1; + return; + } + + /* try to see if sub-tree contains it then */ + outliner_open_reveal(soops, &te->subtree, teFind, found); + if (*found) { + tselem= TREESTORE(te); + if (tselem->flag & TSE_CLOSED) + tselem->flag &= ~TSE_CLOSED; + return; + } + } +} +#endif + +/* ************************************************************** */ +/* Click Activated */ + +/* Toggle Open/Closed ------------------------------------------- */ + +static int do_outliner_item_openclose(bContext *C, SpaceOops *soops, TreeElement *te, int all, const float mval[2]) +{ + + if(mval[1]>te->ys && mval[1]ys+UI_UNIT_Y) { + TreeStoreElem *tselem= TREESTORE(te); + + /* all below close/open? */ + if(all) { + tselem->flag &= ~TSE_CLOSED; + outliner_set_flag(soops, &te->subtree, TSE_CLOSED, !outliner_has_one_flag(soops, &te->subtree, TSE_CLOSED, 1)); + } + else { + if(tselem->flag & TSE_CLOSED) tselem->flag &= ~TSE_CLOSED; + else tselem->flag |= TSE_CLOSED; + } + + return 1; + } + + for(te= te->subtree.first; te; te= te->next) { + if(do_outliner_item_openclose(C, soops, te, all, mval)) + return 1; + } + return 0; + +} + +/* event can enterkey, then it opens/closes */ +static int outliner_item_openclose(bContext *C, wmOperator *op, wmEvent *event) +{ + ARegion *ar= CTX_wm_region(C); + SpaceOops *soops= CTX_wm_space_outliner(C); + TreeElement *te; + float fmval[2]; + int all= RNA_boolean_get(op->ptr, "all"); + + UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1); + + for(te= soops->tree.first; te; te= te->next) { + if(do_outliner_item_openclose(C, soops, te, all, fmval)) + break; + } + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_item_openclose(wmOperatorType *ot) +{ + ot->name= "Open/Close Item"; + ot->idname= "OUTLINER_OT_item_openclose"; + ot->description= "Toggle whether item under cursor is enabled or closed"; + + ot->invoke= outliner_item_openclose; + + ot->poll= ED_operator_outliner_active; + + RNA_def_boolean(ot->srna, "all", 1, "All", "Close or open all items."); +} + +/* Rename --------------------------------------------------- */ + +static int do_outliner_item_rename(bContext *C, ARegion *ar, SpaceOops *soops, TreeElement *te, const float mval[2]) +{ + ReportList *reports= CTX_wm_reports(C); // XXX + + if(mval[1]>te->ys && mval[1]ys+UI_UNIT_Y) { + TreeStoreElem *tselem= TREESTORE(te); + + /* name and first icon */ + if(mval[0]>te->xs+UI_UNIT_X && mval[0]xend) { + + /* can't rename rna datablocks entries */ + if(ELEM3(tselem->type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) + ; + else if(ELEM10(tselem->type, TSE_ANIM_DATA, TSE_NLA, TSE_DEFGROUP_BASE, TSE_CONSTRAINT_BASE, TSE_MODIFIER_BASE, TSE_SCRIPT_BASE, TSE_POSE_BASE, TSE_POSEGRP_BASE, TSE_R_LAYER_BASE, TSE_R_PASS)) + BKE_report(reports, RPT_WARNING, "Cannot edit builtin name"); + else if(ELEM3(tselem->type, TSE_SEQUENCE, TSE_SEQ_STRIP, TSE_SEQUENCE_DUP)) + BKE_report(reports, RPT_WARNING, "Cannot edit sequence name"); + else if(tselem->id->lib) { + // XXX error_libdata(); + } + else if(te->idcode == ID_LI && te->parent) { + BKE_report(reports, RPT_WARNING, "Cannot edit the path of an indirectly linked library"); + } + else { + tselem->flag |= TSE_TEXTBUT; + ED_region_tag_redraw(ar); + } + } + return 1; + } + + for(te= te->subtree.first; te; te= te->next) { + if(do_outliner_item_rename(C, ar, soops, te, mval)) return 1; + } + return 0; +} + +static int outliner_item_rename(bContext *C, wmOperator *UNUSED(op), wmEvent *event) +{ + ARegion *ar= CTX_wm_region(C); + SpaceOops *soops= CTX_wm_space_outliner(C); + TreeElement *te; + float fmval[2]; + + UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1); + + for(te= soops->tree.first; te; te= te->next) { + if(do_outliner_item_rename(C, ar, soops, te, fmval)) break; + } + + return OPERATOR_FINISHED; +} + + +void OUTLINER_OT_item_rename(wmOperatorType *ot) +{ + ot->name= "Rename Item"; + ot->idname= "OUTLINER_OT_item_rename"; + ot->description= "Rename item under cursor"; + + ot->invoke= outliner_item_rename; + + ot->poll= ED_operator_outliner_active; +} + +/* ************************************************************** */ +/* Setting Toggling Operators */ + +/* =============================================== */ +/* Toggling Utilities (Exported) */ + +/* Apply Settings ------------------------------- */ + +static int outliner_count_levels(SpaceOops *soops, ListBase *lb, int curlevel) +{ + TreeElement *te; + int level=curlevel, lev; + + for(te= lb->first; te; te= te->next) { + + lev= outliner_count_levels(soops, &te->subtree, curlevel+1); + if(lev>level) level= lev; + } + return level; +} + +int outliner_has_one_flag(SpaceOops *soops, ListBase *lb, short flag, short curlevel) +{ + TreeElement *te; + TreeStoreElem *tselem; + int level; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(tselem->flag & flag) return curlevel; + + level= outliner_has_one_flag(soops, &te->subtree, flag, curlevel+1); + if(level) return level; + } + return 0; +} + +void outliner_set_flag(SpaceOops *soops, ListBase *lb, short flag, short set) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(set==0) tselem->flag &= ~flag; + else tselem->flag |= flag; + outliner_set_flag(soops, &te->subtree, flag, set); + } +} + +/* Restriction Columns ------------------------------- */ + +/* same check needed for both object operation and restrict column button func + * return 0 when in edit mode (cannot restrict view or select) + * otherwise return 1 */ +int common_restrict_check(bContext *C, Object *ob) +{ + /* Don't allow hide an object in edit mode, + * check the bug #22153 and #21609, #23977 + */ + Object *obedit= CTX_data_edit_object(C); + if (obedit && obedit == ob) { + /* found object is hidden, reset */ + if (ob->restrictflag & OB_RESTRICT_VIEW) + ob->restrictflag &= ~OB_RESTRICT_VIEW; + /* found object is unselectable, reset */ + if (ob->restrictflag & OB_RESTRICT_SELECT) + ob->restrictflag &= ~OB_RESTRICT_SELECT; + return 0; + } + + return 1; +} + +/* =============================================== */ +/* Restriction toggles */ + +/* Toggle Visibility ---------------------------------------- */ + +void object_toggle_visibility_cb(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + Base *base= (Base *)te->directdata; + Object *ob = (Object *)tselem->id; + + /* add check for edit mode */ + if(!common_restrict_check(C, ob)) return; + + if(base || (base= object_in_scene(ob, scene))) { + if((base->object->restrictflag ^= OB_RESTRICT_VIEW)) { + ED_base_object_select(base, BA_DESELECT); + } + } +} + +static int outliner_toggle_visibility_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + Scene *scene= CTX_data_scene(C); + ARegion *ar= CTX_wm_region(C); + + outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_visibility_cb); + + WM_event_add_notifier(C, NC_SCENE|ND_OB_VISIBLE, scene); + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_visibility_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Visibility"; + ot->idname= "OUTLINER_OT_visibility_toggle"; + ot->description= "Toggle the visibility of selected items"; + + /* callbacks */ + ot->exec= outliner_toggle_visibility_exec; + ot->poll= ED_operator_outliner_active_no_editobject; + + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/* Toggle Selectability ---------------------------------------- */ + +void object_toggle_selectability_cb(bContext *UNUSED(C), Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + Base *base= (Base *)te->directdata; + + if(base==NULL) base= object_in_scene((Object *)tselem->id, scene); + if(base) { + base->object->restrictflag^=OB_RESTRICT_SELECT; + } +} + +static int outliner_toggle_selectability_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + Scene *scene= CTX_data_scene(C); + ARegion *ar= CTX_wm_region(C); + + outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_selectability_cb); + + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_selectability_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Selectability"; + ot->idname= "OUTLINER_OT_selectability_toggle"; + ot->description= "Toggle the selectability"; + + /* callbacks */ + ot->exec= outliner_toggle_selectability_exec; + ot->poll= ED_operator_outliner_active_no_editobject; + + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/* Toggle Renderability ---------------------------------------- */ + +void object_toggle_renderability_cb(bContext *UNUSED(C), Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + Base *base= (Base *)te->directdata; + + if(base==NULL) base= object_in_scene((Object *)tselem->id, scene); + if(base) { + base->object->restrictflag^=OB_RESTRICT_RENDER; + } +} + +static int outliner_toggle_renderability_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + Scene *scene= CTX_data_scene(C); + ARegion *ar= CTX_wm_region(C); + + outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_renderability_cb); + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_renderability_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Renderability"; + ot->idname= "OUTLINER_OT_renderability_toggle"; + ot->description= "Toggle the renderability of selected items"; + + /* callbacks */ + ot->exec= outliner_toggle_renderability_exec; + ot->poll= ED_operator_outliner_active; + + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/* =============================================== */ +/* Outliner setting toggles */ + +/* Toggle Expanded (Outliner) ---------------------------------------- */ + +static int outliner_toggle_expanded_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + ARegion *ar= CTX_wm_region(C); + + if (outliner_has_one_flag(soops, &soops->tree, TSE_CLOSED, 1)) + outliner_set_flag(soops, &soops->tree, TSE_CLOSED, 0); + else + outliner_set_flag(soops, &soops->tree, TSE_CLOSED, 1); + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_expanded_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Expand/Collapse All"; + ot->idname= "OUTLINER_OT_expanded_toggle"; + ot->description= "Expand/Collapse all items"; + + /* callbacks */ + ot->exec= outliner_toggle_expanded_exec; + ot->poll= ED_operator_outliner_active; + + /* no undo or registry, UI option */ +} + +/* Toggle Selected (Outliner) ---------------------------------------- */ + +static int outliner_toggle_selected_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + ARegion *ar= CTX_wm_region(C); + Scene *scene= CTX_data_scene(C); + + if (outliner_has_one_flag(soops, &soops->tree, TSE_SELECTED, 1)) + outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 0); + else + outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 1); + + soops->storeflag |= SO_TREESTORE_REDRAW; + + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_selected_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Selected"; + ot->idname= "OUTLINER_OT_selected_toggle"; + ot->description= "Toggle the Outliner selection of items"; + + /* callbacks */ + ot->exec= outliner_toggle_selected_exec; + ot->poll= ED_operator_outliner_active; + + /* no undo or registry, UI option */ +} + +/* ************************************************************** */ +/* Hotkey Only Operators */ + +/* Show Active --------------------------------------------------- */ + +static int outliner_show_active_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceOops *so= CTX_wm_space_outliner(C); + Scene *scene= CTX_data_scene(C); + ARegion *ar= CTX_wm_region(C); + View2D *v2d= &ar->v2d; + + TreeElement *te; + int xdelta, ytop; + + // TODO: make this get this info from context instead... + if (OBACT == NULL) + return OPERATOR_CANCELLED; + + te= outliner_find_id(so, &so->tree, (ID *)OBACT); + if (te) { + /* make te->ys center of view */ + ytop= (int)(te->ys + (v2d->mask.ymax - v2d->mask.ymin)/2); + if (ytop>0) ytop= 0; + + v2d->cur.ymax= (float)ytop; + v2d->cur.ymin= (float)(ytop-(v2d->mask.ymax - v2d->mask.ymin)); + + /* make te->xs ==> te->xend center of view */ + xdelta = (int)(te->xs - v2d->cur.xmin); + v2d->cur.xmin += xdelta; + v2d->cur.xmax += xdelta; + + so->storeflag |= SO_TREESTORE_REDRAW; + } + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_show_active(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Show Active"; + ot->idname= "OUTLINER_OT_show_active"; + ot->description= "Adjust the view so that the active Object is shown centered"; + + /* callbacks */ + ot->exec= outliner_show_active_exec; + ot->poll= ED_operator_outliner_active; +} + +/* View Panning --------------------------------------------------- */ + +static int outliner_scroll_page_exec(bContext *C, wmOperator *op) +{ + ARegion *ar= CTX_wm_region(C); + int dy= ar->v2d.mask.ymax - ar->v2d.mask.ymin; + int up= 0; + + if(RNA_boolean_get(op->ptr, "up")) + up= 1; + + if(up == 0) dy= -dy; + ar->v2d.cur.ymin+= dy; + ar->v2d.cur.ymax+= dy; + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + + +void OUTLINER_OT_scroll_page(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Scroll Page"; + ot->idname= "OUTLINER_OT_scroll_page"; + ot->description= "Scroll page up or down"; + + /* callbacks */ + ot->exec= outliner_scroll_page_exec; + ot->poll= ED_operator_outliner_active; + + /* properties */ + RNA_def_boolean(ot->srna, "up", 0, "Up", "Scroll up one page."); +} + +/* Search ------------------------------------------------------- */ +// TODO: probably obsolete now with filtering? + +#if 0 + +/* recursive helper for function below */ +static void outliner_set_coordinates_element(SpaceOops *soops, TreeElement *te, int startx, int *starty) +{ + TreeStoreElem *tselem= TREESTORE(te); + + /* store coord and continue, we need coordinates for elements outside view too */ + te->xs= (float)startx; + te->ys= (float)(*starty); + *starty-= UI_UNIT_Y; + + if((tselem->flag & TSE_CLOSED)==0) { + TreeElement *ten; + for(ten= te->subtree.first; ten; ten= ten->next) { + outliner_set_coordinates_element(soops, ten, startx+UI_UNIT_X, starty); + } + } + +} + +/* to retrieve coordinates with redrawing the entire tree */ +static void outliner_set_coordinates(ARegion *ar, SpaceOops *soops) +{ + TreeElement *te; + int starty= (int)(ar->v2d.tot.ymax)-UI_UNIT_Y; + int startx= 0; + + for(te= soops->tree.first; te; te= te->next) { + outliner_set_coordinates_element(soops, te, startx, &starty); + } +} + +/* find next element that has this name */ +static TreeElement *outliner_find_named(SpaceOops *soops, ListBase *lb, char *name, int flags, TreeElement *prev, int *prevFound) +{ + TreeElement *te, *tes; + + for (te= lb->first; te; te= te->next) { + int found = outliner_filter_has_name(te, name, flags); + + if(found) { + /* name is right, but is element the previous one? */ + if (prev) { + if ((te != prev) && (*prevFound)) + return te; + if (te == prev) { + *prevFound = 1; + } + } + else + return te; + } + + tes= outliner_find_named(soops, &te->subtree, name, flags, prev, prevFound); + if(tes) return tes; + } + + /* nothing valid found */ + return NULL; +} + +static void outliner_find_panel(Scene *UNUSED(scene), ARegion *ar, SpaceOops *soops, int again, int flags) +{ + ReportList *reports = NULL; // CTX_wm_reports(C); + TreeElement *te= NULL; + TreeElement *last_find; + TreeStoreElem *tselem; + int ytop, xdelta, prevFound=0; + char name[32]; + + /* get last found tree-element based on stored search_tse */ + last_find= outliner_find_tse(soops, &soops->search_tse); + + /* determine which type of search to do */ + if (again && last_find) { + /* no popup panel - previous + user wanted to search for next after previous */ + BLI_strncpy(name, soops->search_string, sizeof(name)); + flags= soops->search_flags; + + /* try to find matching element */ + te= outliner_find_named(soops, &soops->tree, name, flags, last_find, &prevFound); + if (te==NULL) { + /* no more matches after previous, start from beginning again */ + prevFound= 1; + te= outliner_find_named(soops, &soops->tree, name, flags, last_find, &prevFound); + } + } + else { + /* pop up panel - no previous, or user didn't want search after previous */ + strcpy(name, ""); +// XXX if (sbutton(name, 0, sizeof(name)-1, "Find: ") && name[0]) { +// te= outliner_find_named(soops, &soops->tree, name, flags, NULL, &prevFound); +// } +// else return; /* XXX RETURN! XXX */ + } + + /* do selection and reveal */ + if (te) { + tselem= TREESTORE(te); + if (tselem) { + /* expand branches so that it will be visible, we need to get correct coordinates */ + if( outliner_open_back(soops, te)) + outliner_set_coordinates(ar, soops); + + /* deselect all visible, and select found element */ + outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 0); + tselem->flag |= TSE_SELECTED; + + /* make te->ys center of view */ + ytop= (int)(te->ys + (ar->v2d.mask.ymax-ar->v2d.mask.ymin)/2); + if(ytop>0) ytop= 0; + ar->v2d.cur.ymax= (float)ytop; + ar->v2d.cur.ymin= (float)(ytop-(ar->v2d.mask.ymax-ar->v2d.mask.ymin)); + + /* make te->xs ==> te->xend center of view */ + xdelta = (int)(te->xs - ar->v2d.cur.xmin); + ar->v2d.cur.xmin += xdelta; + ar->v2d.cur.xmax += xdelta; + + /* store selection */ + soops->search_tse= *tselem; + + BLI_strncpy(soops->search_string, name, 33); + soops->search_flags= flags; + + /* redraw */ + soops->storeflag |= SO_TREESTORE_REDRAW; + } + } + else { + /* no tree-element found */ + BKE_report(reports, RPT_WARNING, "Not found: %s", name); + } +} +#endif + +/* Show One Level ----------------------------------------------- */ + +/* helper function for Show/Hide one level operator */ +static void outliner_openclose_level(SpaceOops *soops, ListBase *lb, int curlevel, int level, int open) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + + if(open) { + if(curlevel<=level) tselem->flag &= ~TSE_CLOSED; + } + else { + if(curlevel>=level) tselem->flag |= TSE_CLOSED; + } + + outliner_openclose_level(soops, &te->subtree, curlevel+1, level, open); + } +} + +static int outliner_one_level_exec(bContext *C, wmOperator *op) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + ARegion *ar= CTX_wm_region(C); + int add= RNA_boolean_get(op->ptr, "open"); + int level; + + level= outliner_has_one_flag(soops, &soops->tree, TSE_CLOSED, 1); + if(add==1) { + if(level) outliner_openclose_level(soops, &soops->tree, 1, level, 1); + } + else { + if(level==0) level= outliner_count_levels(soops, &soops->tree, 0); + if(level) outliner_openclose_level(soops, &soops->tree, 1, level-1, 0); + } + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_show_one_level(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Show/Hide One Level"; + ot->idname= "OUTLINER_OT_show_one_level"; + ot->description= "Expand/collapse all entries by one level"; + + /* callbacks */ + ot->exec= outliner_one_level_exec; + ot->poll= ED_operator_outliner_active; + + /* no undo or registry, UI option */ + + /* properties */ + RNA_def_boolean(ot->srna, "open", 1, "Open", "Expand all entries one level deep."); +} + +/* Show Hierarchy ----------------------------------------------- */ + +/* helper function for tree_element_shwo_hierarchy() - recursively checks whether subtrees have any objects*/ +static int subtree_has_objects(SpaceOops *soops, ListBase *lb) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(tselem->type==0 && te->idcode==ID_OB) return 1; + if( subtree_has_objects(soops, &te->subtree)) return 1; + } + return 0; +} + +/* recursive helper function for Show Hierarchy operator */ +static void tree_element_show_hierarchy(Scene *scene, SpaceOops *soops, ListBase *lb) +{ + TreeElement *te; + TreeStoreElem *tselem; + + /* open all object elems, close others */ + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + + if(tselem->type==0) { + if(te->idcode==ID_SCE) { + if(tselem->id!=(ID *)scene) tselem->flag |= TSE_CLOSED; + else tselem->flag &= ~TSE_CLOSED; + } + else if(te->idcode==ID_OB) { + if(subtree_has_objects(soops, &te->subtree)) tselem->flag &= ~TSE_CLOSED; + else tselem->flag |= TSE_CLOSED; + } + } + else tselem->flag |= TSE_CLOSED; + + if(tselem->flag & TSE_CLOSED); else tree_element_show_hierarchy(scene, soops, &te->subtree); + } +} + +/* show entire object level hierarchy */ +static int outliner_show_hierarchy_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + ARegion *ar= CTX_wm_region(C); + Scene *scene= CTX_data_scene(C); + + /* recursively open/close levels */ + tree_element_show_hierarchy(scene, soops, &soops->tree); + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_show_hierarchy(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Show Hierarchy"; + ot->idname= "OUTLINER_OT_show_hierarchy"; + ot->description= "Open all object entries and close all others"; + + /* callbacks */ + ot->exec= outliner_show_hierarchy_exec; + ot->poll= ED_operator_outliner_active; // TODO: shouldn't be allowed in RNA views... + + /* no undo or registry, UI option */ +} + +/* ************************************************************** */ +/* ANIMATO OPERATIONS */ +/* KeyingSet and Driver Creation - Helper functions */ + +/* specialised poll callback for these operators to work in Datablocks view only */ +static int ed_operator_outliner_datablocks_active(bContext *C) +{ + ScrArea *sa= CTX_wm_area(C); + if ((sa) && (sa->spacetype==SPACE_OUTLINER)) { + SpaceOops *so= CTX_wm_space_outliner(C); + return (so->outlinevis == SO_DATABLOCKS); + } + return 0; +} + + +/* Helper func to extract an RNA path from selected tree element + * NOTE: the caller must zero-out all values of the pointers that it passes here first, as + * this function does not do that yet + */ +static void tree_element_to_path(SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, + ID **id, char **path, int *array_index, short *flag, short *UNUSED(groupmode)) +{ + ListBase hierarchy = {NULL, NULL}; + LinkData *ld; + TreeElement *tem, *temnext, *temsub; + TreeStoreElem *tse, *tsenext; + PointerRNA *ptr, *nextptr; + PropertyRNA *prop; + char *newpath=NULL; + + /* optimise tricks: + * - Don't do anything if the selected item is a 'struct', but arrays are allowed + */ + if (tselem->type == TSE_RNA_STRUCT) + return; + + /* Overview of Algorithm: + * 1. Go up the chain of parents until we find the 'root', taking note of the + * levels encountered in reverse-order (i.e. items are added to the start of the list + * for more convenient looping later) + * 2. Walk down the chain, adding from the first ID encountered + * (which will become the 'ID' for the KeyingSet Path), and build a + * path as we step through the chain + */ + + /* step 1: flatten out hierarchy of parents into a flat chain */ + for (tem= te->parent; tem; tem= tem->parent) { + ld= MEM_callocN(sizeof(LinkData), "LinkData for tree_element_to_path()"); + ld->data= tem; + BLI_addhead(&hierarchy, ld); + } + + /* step 2: step down hierarchy building the path (NOTE: addhead in previous loop was needed so that we can loop like this) */ + for (ld= hierarchy.first; ld; ld= ld->next) { + /* get data */ + tem= (TreeElement *)ld->data; + tse= TREESTORE(tem); + ptr= &tem->rnaptr; + prop= tem->directdata; + + /* check if we're looking for first ID, or appending to path */ + if (*id) { + /* just 'append' property to path + * - to prevent memory leaks, we must write to newpath not path, then free old path + swap them + */ + if(tse->type == TSE_RNA_PROPERTY) { + if(RNA_property_type(prop) == PROP_POINTER) { + /* for pointer we just append property name */ + newpath= RNA_path_append(*path, ptr, prop, 0, NULL); + } + else if(RNA_property_type(prop) == PROP_COLLECTION) { + char buf[128], *name; + + temnext= (TreeElement*)(ld->next->data); + tsenext= TREESTORE(temnext); + + nextptr= &temnext->rnaptr; + name= RNA_struct_name_get_alloc(nextptr, buf, sizeof(buf)); + + if(name) { + /* if possible, use name as a key in the path */ + newpath= RNA_path_append(*path, NULL, prop, 0, name); + + if(name != buf) + MEM_freeN(name); + } + else { + /* otherwise use index */ + int index= 0; + + for(temsub=tem->subtree.first; temsub; temsub=temsub->next, index++) + if(temsub == temnext) + break; + + newpath= RNA_path_append(*path, NULL, prop, index, NULL); + } + + ld= ld->next; + } + } + + if(newpath) { + if (*path) MEM_freeN(*path); + *path= newpath; + newpath= NULL; + } + } + else { + /* no ID, so check if entry is RNA-struct, and if that RNA-struct is an ID datablock to extract info from */ + if (tse->type == TSE_RNA_STRUCT) { + /* ptr->data not ptr->id.data seems to be the one we want, since ptr->data is sometimes the owner of this ID? */ + if(RNA_struct_is_ID(ptr->type)) { + *id= (ID *)ptr->data; + + /* clear path */ + if(*path) { + MEM_freeN(*path); + path= NULL; + } + } + } + } + } + + /* step 3: if we've got an ID, add the current item to the path */ + if (*id) { + /* add the active property to the path */ + ptr= &te->rnaptr; + prop= te->directdata; + + /* array checks */ + if (tselem->type == TSE_RNA_ARRAY_ELEM) { + /* item is part of an array, so must set the array_index */ + *array_index= te->index; + } + else if (RNA_property_array_length(ptr, prop)) { + /* entire array was selected, so keyframe all */ + *flag |= KSP_FLAG_WHOLE_ARRAY; + } + + /* path */ + newpath= RNA_path_append(*path, NULL, prop, 0, NULL); + if (*path) MEM_freeN(*path); + *path= newpath; + } + + /* free temp data */ + BLI_freelistN(&hierarchy); +} + +/* =============================================== */ +/* Driver Operations */ + +/* These operators are only available in databrowser mode for now, as + * they depend on having RNA paths and/or hierarchies available. + */ +enum { + DRIVERS_EDITMODE_ADD = 0, + DRIVERS_EDITMODE_REMOVE, +} /*eDrivers_EditModes*/; + +/* Utilities ---------------------------------- */ + +/* Recursively iterate over tree, finding and working on selected items */ +static void do_outliner_drivers_editop(SpaceOops *soops, ListBase *tree, ReportList *reports, short mode) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for (te= tree->first; te; te=te->next) { + tselem= TREESTORE(te); + + /* if item is selected, perform operation */ + if (tselem->flag & TSE_SELECTED) { + ID *id= NULL; + char *path= NULL; + int array_index= 0; + short flag= 0; + short groupmode= KSP_GROUP_KSNAME; + + /* check if RNA-property described by this selected element is an animateable prop */ + if (ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM) && RNA_property_animateable(&te->rnaptr, te->directdata)) { + /* get id + path + index info from the selected element */ + tree_element_to_path(soops, te, tselem, + &id, &path, &array_index, &flag, &groupmode); + } + + /* only if ID and path were set, should we perform any actions */ + if (id && path) { + short dflags = CREATEDRIVER_WITH_DEFAULT_DVAR; + int arraylen = 1; + + /* array checks */ + if (flag & KSP_FLAG_WHOLE_ARRAY) { + /* entire array was selected, so add drivers for all */ + arraylen= RNA_property_array_length(&te->rnaptr, te->directdata); + } + else + arraylen= array_index; + + /* we should do at least one step */ + if (arraylen == array_index) + arraylen++; + + /* for each array element we should affect, add driver */ + for (; array_index < arraylen; array_index++) { + /* action depends on mode */ + switch (mode) { + case DRIVERS_EDITMODE_ADD: + { + /* add a new driver with the information obtained (only if valid) */ + ANIM_add_driver(reports, id, path, array_index, dflags, DRIVER_TYPE_PYTHON); + } + break; + case DRIVERS_EDITMODE_REMOVE: + { + /* remove driver matching the information obtained (only if valid) */ + ANIM_remove_driver(reports, id, path, array_index, dflags); + } + break; + } + } + + /* free path, since it had to be generated */ + MEM_freeN(path); + } + + + } + + /* go over sub-tree */ + if ((tselem->flag & TSE_CLOSED)==0) + do_outliner_drivers_editop(soops, &te->subtree, reports, mode); + } +} + +/* Add Operator ---------------------------------- */ + +static int outliner_drivers_addsel_exec(bContext *C, wmOperator *op) +{ + SpaceOops *soutliner= CTX_wm_space_outliner(C); + + /* check for invalid states */ + if (soutliner == NULL) + return OPERATOR_CANCELLED; + + /* recursively go into tree, adding selected items */ + do_outliner_drivers_editop(soutliner, &soutliner->tree, op->reports, DRIVERS_EDITMODE_ADD); + + /* send notifiers */ + WM_event_add_notifier(C, NC_ANIMATION|ND_FCURVES_ORDER, NULL); // XXX + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_drivers_add_selected(wmOperatorType *ot) +{ + /* api callbacks */ + ot->idname= "OUTLINER_OT_drivers_add_selected"; + ot->name= "Add Drivers for Selected"; + ot->description= "Add drivers to selected items"; + + /* api callbacks */ + ot->exec= outliner_drivers_addsel_exec; + ot->poll= ed_operator_outliner_datablocks_active; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + + +/* Remove Operator ---------------------------------- */ + +static int outliner_drivers_deletesel_exec(bContext *C, wmOperator *op) +{ + SpaceOops *soutliner= CTX_wm_space_outliner(C); + + /* check for invalid states */ + if (soutliner == NULL) + return OPERATOR_CANCELLED; + + /* recursively go into tree, adding selected items */ + do_outliner_drivers_editop(soutliner, &soutliner->tree, op->reports, DRIVERS_EDITMODE_REMOVE); + + /* send notifiers */ + WM_event_add_notifier(C, ND_KEYS, NULL); // XXX + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_drivers_delete_selected(wmOperatorType *ot) +{ + /* identifiers */ + ot->idname= "OUTLINER_OT_drivers_delete_selected"; + ot->name= "Delete Drivers for Selected"; + ot->description= "Delete drivers assigned to selected items"; + + /* api callbacks */ + ot->exec= outliner_drivers_deletesel_exec; + ot->poll= ed_operator_outliner_datablocks_active; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/* =============================================== */ +/* Keying Set Operations */ + +/* These operators are only available in databrowser mode for now, as + * they depend on having RNA paths and/or hierarchies available. + */ +enum { + KEYINGSET_EDITMODE_ADD = 0, + KEYINGSET_EDITMODE_REMOVE, +} /*eKeyingSet_EditModes*/; + +/* Utilities ---------------------------------- */ + +/* find the 'active' KeyingSet, and add if not found (if adding is allowed) */ +// TODO: should this be an API func? +static KeyingSet *verify_active_keyingset(Scene *scene, short add) +{ + KeyingSet *ks= NULL; + + /* sanity check */ + if (scene == NULL) + return NULL; + + /* try to find one from scene */ + if (scene->active_keyingset > 0) + ks= BLI_findlink(&scene->keyingsets, scene->active_keyingset-1); + + /* add if none found */ + // XXX the default settings have yet to evolve + if ((add) && (ks==NULL)) { + ks= BKE_keyingset_add(&scene->keyingsets, NULL, KEYINGSET_ABSOLUTE, 0); + scene->active_keyingset= BLI_countlist(&scene->keyingsets); + } + + return ks; +} + +/* Recursively iterate over tree, finding and working on selected items */ +static void do_outliner_keyingset_editop(SpaceOops *soops, KeyingSet *ks, ListBase *tree, short mode) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for (te= tree->first; te; te=te->next) { + tselem= TREESTORE(te); + + /* if item is selected, perform operation */ + if (tselem->flag & TSE_SELECTED) { + ID *id= NULL; + char *path= NULL; + int array_index= 0; + short flag= 0; + short groupmode= KSP_GROUP_KSNAME; + + /* check if RNA-property described by this selected element is an animateable prop */ + if (ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM) && RNA_property_animateable(&te->rnaptr, te->directdata)) { + /* get id + path + index info from the selected element */ + tree_element_to_path(soops, te, tselem, + &id, &path, &array_index, &flag, &groupmode); + } + + /* only if ID and path were set, should we perform any actions */ + if (id && path) { + /* action depends on mode */ + switch (mode) { + case KEYINGSET_EDITMODE_ADD: + { + /* add a new path with the information obtained (only if valid) */ + // TODO: what do we do with group name? for now, we don't supply one, and just let this use the KeyingSet name + BKE_keyingset_add_path(ks, id, NULL, path, array_index, flag, groupmode); + ks->active_path= BLI_countlist(&ks->paths); + } + break; + case KEYINGSET_EDITMODE_REMOVE: + { + /* find the relevant path, then remove it from the KeyingSet */ + KS_Path *ksp= BKE_keyingset_find_path(ks, id, NULL, path, array_index, groupmode); + + if (ksp) { + /* free path's data */ + BKE_keyingset_free_path(ks, ksp); + + ks->active_path= 0; + } + } + break; + } + + /* free path, since it had to be generated */ + MEM_freeN(path); + } + } + + /* go over sub-tree */ + if ((tselem->flag & TSE_CLOSED)==0) + do_outliner_keyingset_editop(soops, ks, &te->subtree, mode); + } +} + +/* Add Operator ---------------------------------- */ + +static int outliner_keyingset_additems_exec(bContext *C, wmOperator *op) +{ + SpaceOops *soutliner= CTX_wm_space_outliner(C); + Scene *scene= CTX_data_scene(C); + KeyingSet *ks= verify_active_keyingset(scene, 1); + + /* check for invalid states */ + if (ks == NULL) { + BKE_report(op->reports, RPT_ERROR, "Operation requires an Active Keying Set"); + return OPERATOR_CANCELLED; + } + if (soutliner == NULL) + return OPERATOR_CANCELLED; + + /* recursively go into tree, adding selected items */ + do_outliner_keyingset_editop(soutliner, ks, &soutliner->tree, KEYINGSET_EDITMODE_ADD); + + /* send notifiers */ + WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_keyingset_add_selected(wmOperatorType *ot) +{ + /* identifiers */ + ot->idname= "OUTLINER_OT_keyingset_add_selected"; + ot->name= "Keying Set Add Selected"; + ot->description= "Add selected items (blue-grey rows) to active Keying Set"; + + /* api callbacks */ + ot->exec= outliner_keyingset_additems_exec; + ot->poll= ed_operator_outliner_datablocks_active; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + + +/* Remove Operator ---------------------------------- */ + +static int outliner_keyingset_removeitems_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceOops *soutliner= CTX_wm_space_outliner(C); + Scene *scene= CTX_data_scene(C); + KeyingSet *ks= verify_active_keyingset(scene, 1); + + /* check for invalid states */ + if (soutliner == NULL) + return OPERATOR_CANCELLED; + + /* recursively go into tree, adding selected items */ + do_outliner_keyingset_editop(soutliner, ks, &soutliner->tree, KEYINGSET_EDITMODE_REMOVE); + + /* send notifiers */ + WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_keyingset_remove_selected(wmOperatorType *ot) +{ + /* identifiers */ + ot->idname= "OUTLINER_OT_keyingset_remove_selected"; + ot->name= "Keying Set Remove Selected"; + ot->description = "Remove selected items (blue-grey rows) from active Keying Set"; + + /* api callbacks */ + ot->exec= outliner_keyingset_removeitems_exec; + ot->poll= ed_operator_outliner_datablocks_active; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} diff --git a/source/blender/editors/space_outliner/outliner_intern.h b/source/blender/editors/space_outliner/outliner_intern.h index cbb26d79c4b..85bbbd4fffb 100644 --- a/source/blender/editors/space_outliner/outliner_intern.h +++ b/source/blender/editors/space_outliner/outliner_intern.h @@ -44,6 +44,8 @@ struct TreeStoreElem; struct bContext; struct Scene; struct ARegion; +struct ID; +struct Object; typedef struct TreeElement { struct TreeElement *next, *prev, *parent; @@ -107,27 +109,65 @@ typedef struct TreeElement { /* button events */ #define OL_NAMEBUTTON 1 +/* get TreeStoreElem associated with a TreeElement + * < a: (TreeElement) tree element to find stored element for + */ +#define TREESTORE(a) ((a)?soops->treestore->data+(a)->store_index:NULL) -/* outliner_ops.c */ -void outliner_operatortypes(void); -void outliner_keymap(struct wmKeyConfig *keyconf); +/* size constants */ +#define OL_Y_OFFSET 2 -/* outliner_header.c */ -void outliner_header_buttons(const struct bContext *C, struct ARegion *ar); +#define OL_TOG_RESTRICT_VIEWX (UI_UNIT_X*3) +#define OL_TOG_RESTRICT_SELECTX (UI_UNIT_X*2) +#define OL_TOG_RESTRICT_RENDERX UI_UNIT_X + +#define OL_TOGW OL_TOG_RESTRICT_VIEWX + +#define OL_RNA_COLX (UI_UNIT_X*15) +#define OL_RNA_COL_SIZEX (UI_UNIT_X*7.5) +#define OL_RNA_COL_SPACEX (UI_UNIT_X*2.5) + + +/* outliner_tree.c ----------------------------------------------- */ + +void outliner_free_tree(ListBase *lb); + +TreeElement *outliner_find_tse(struct SpaceOops *soops, TreeStoreElem *tse); +TreeElement *outliner_find_id(struct SpaceOops *soops, ListBase *lb, struct ID *id); +struct ID *outliner_search_back(SpaceOops *soops, TreeElement *te, short idcode); + +void outliner_build_tree(struct Main *mainvar, struct Scene *scene, struct SpaceOops *soops); + +/* outliner_draw.c ---------------------------------------------- */ -/* outliner.c */ -void outliner_free_tree(struct ListBase *lb); -void outliner_select(struct SpaceOops *soops, struct ListBase *lb, int *index, short *selecting); void draw_outliner(const struct bContext *C); +/* outliner_select.c -------------------------------------------- */ + +void outliner_select(struct SpaceOops *soops, ListBase *lb, int *index, short *selecting); + +int tree_element_type_active(struct bContext *C, struct Scene *scene, struct SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, int set); +int tree_element_active(struct bContext *C, struct Scene *scene, SpaceOops *soops, TreeElement *te, int set); + +/* outliner_edit.c ---------------------------------------------- */ + +void outliner_do_object_operation(struct bContext *C, struct Scene *scene, struct SpaceOops *soops, struct ListBase *lb, + void (*operation_cb)(struct bContext *C, struct Scene *scene, struct TreeElement *, struct TreeStoreElem *, TreeStoreElem *)); + +int common_restrict_check(struct bContext *C, struct Object *ob); + +int outliner_has_one_flag(struct SpaceOops *soops, ListBase *lb, short flag, short curlevel); +void outliner_set_flag(struct SpaceOops *soops, ListBase *lb, short flag, short set); + +void object_toggle_visibility_cb(struct bContext *C, struct Scene *scene, TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem); +void object_toggle_selectability_cb(struct bContext *C, struct Scene *scene, TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem); +void object_toggle_renderability_cb(struct bContext *C, struct Scene *scene, TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem); + +/* ...................................................... */ + void OUTLINER_OT_item_activate(struct wmOperatorType *ot); void OUTLINER_OT_item_openclose(struct wmOperatorType *ot); void OUTLINER_OT_item_rename(struct wmOperatorType *ot); -void OUTLINER_OT_operation(struct wmOperatorType *ot); -void OUTLINER_OT_object_operation(struct wmOperatorType *ot); -void OUTLINER_OT_group_operation(struct wmOperatorType *ot); -void OUTLINER_OT_id_operation(struct wmOperatorType *ot); -void OUTLINER_OT_data_operation(struct wmOperatorType *ot); void OUTLINER_OT_show_one_level(struct wmOperatorType *ot); void OUTLINER_OT_show_active(struct wmOperatorType *ot); @@ -148,5 +188,23 @@ void OUTLINER_OT_keyingset_remove_selected(struct wmOperatorType *ot); void OUTLINER_OT_drivers_add_selected(struct wmOperatorType *ot); void OUTLINER_OT_drivers_delete_selected(struct wmOperatorType *ot); -#endif /* ED_OUTLINER_INTERN_H */ +/* outliner_tools.c ---------------------------------------------- */ +void OUTLINER_OT_operation(struct wmOperatorType *ot); +void OUTLINER_OT_object_operation(struct wmOperatorType *ot); +void OUTLINER_OT_group_operation(struct wmOperatorType *ot); +void OUTLINER_OT_id_operation(struct wmOperatorType *ot); +void OUTLINER_OT_data_operation(struct wmOperatorType *ot); +void OUTLINER_OT_animdata_operation(struct wmOperatorType *ot); +void OUTLINER_OT_action_set(struct wmOperatorType *ot); + +/* ---------------------------------------------------------------- */ + +/* outliner_ops.c */ +void outliner_operatortypes(void); +void outliner_keymap(struct wmKeyConfig *keyconf); + +/* outliner_header.c */ +void outliner_header_buttons(const struct bContext *C, struct ARegion *ar); + +#endif /* ED_OUTLINER_INTERN_H */ diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c index 8bd30235931..f3e2c352172 100644 --- a/source/blender/editors/space_outliner/outliner_ops.c +++ b/source/blender/editors/space_outliner/outliner_ops.c @@ -57,6 +57,13 @@ void outliner_operatortypes(void) WM_operatortype_append(OUTLINER_OT_group_operation); WM_operatortype_append(OUTLINER_OT_id_operation); WM_operatortype_append(OUTLINER_OT_data_operation); + WM_operatortype_append(OUTLINER_OT_animdata_operation); + +#if 0 // GSOC_PEPPER + + WM_operatortype_append(OUTLINER_OT_action_set); + +#endif // GSOC_PEPPER WM_operatortype_append(OUTLINER_OT_show_one_level); WM_operatortype_append(OUTLINER_OT_show_active); diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c new file mode 100644 index 00000000000..620a936a944 --- /dev/null +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -0,0 +1,867 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2004 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Joshua Leung + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/editors/space_outliner/outliner_select.c + * \ingroup spoutliner + */ + +#include +#include +#include +#include + +#include "MEM_guardedalloc.h" + +#include "DNA_anim_types.h" +#include "DNA_armature_types.h" +#include "DNA_constraint_types.h" +#include "DNA_camera_types.h" +#include "DNA_group_types.h" +#include "DNA_key_types.h" +#include "DNA_lamp_types.h" +#include "DNA_material_types.h" +#include "DNA_mesh_types.h" +#include "DNA_meta_types.h" +#include "DNA_particle_types.h" +#include "DNA_scene_types.h" +#include "DNA_world_types.h" +#include "DNA_sequence_types.h" +#include "DNA_object_types.h" + +#include "BLI_blenlib.h" +#include "BLI_utildefines.h" +#include "BLI_math_base.h" + +#if defined WIN32 && !defined _LIBC +# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ +#else +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif +# include +#endif + + +#include "BKE_animsys.h" +#include "BKE_context.h" +#include "BKE_deform.h" +#include "BKE_depsgraph.h" +#include "BKE_fcurve.h" +#include "BKE_global.h" +#include "BKE_group.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_modifier.h" +#include "BKE_report.h" +#include "BKE_scene.h" +#include "BKE_sequencer.h" + +#include "ED_armature.h" +#include "ED_object.h" +#include "ED_screen.h" +#include "ED_util.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "BIF_gl.h" +#include "BIF_glutil.h" + +#include "UI_interface.h" +#include "UI_interface_icons.h" +#include "UI_resources.h" +#include "UI_view2d.h" + +#include "RNA_access.h" +#include "RNA_define.h" + +#include "outliner_intern.h" + +/* ****************************************************** */ +/* Outliner Selection (grey-blue highlight for rows) */ + +void outliner_select(SpaceOops *soops, ListBase *lb, int *index, short *selecting) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for (te= lb->first; te && *index >= 0; te=te->next, (*index)--) { + tselem= TREESTORE(te); + + /* if we've encountered the right item, set its 'Outliner' selection status */ + if (*index == 0) { + /* this should be the last one, so no need to do anything with index */ + if ((te->flag & TE_ICONROW)==0) { + /* -1 value means toggle testing for now... */ + if (*selecting == -1) { + if (tselem->flag & TSE_SELECTED) + *selecting= 0; + else + *selecting= 1; + } + + /* set selection */ + if (*selecting) + tselem->flag |= TSE_SELECTED; + else + tselem->flag &= ~TSE_SELECTED; + } + } + else if ((tselem->flag & TSE_CLOSED)==0) { + /* Only try selecting sub-elements if we haven't hit the right element yet + * + * Hack warning: + * Index must be reduced before supplying it to the sub-tree to try to do + * selection, however, we need to increment it again for the next loop to + * function correctly + */ + (*index)--; + outliner_select(soops, &te->subtree, index, selecting); + (*index)++; + } + } +} + +/* ****************************************************** */ +/* Outliner Element Selection/Activation on Click */ + +static int tree_element_active_renderlayer(bContext *C, TreeElement *te, TreeStoreElem *tselem, int set) +{ + Scene *sce; + + /* paranoia check */ + if(te->idcode!=ID_SCE) + return 0; + sce= (Scene *)tselem->id; + + if(set) { + sce->r.actlay= tselem->nr; + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, sce); + } + else { + return sce->r.actlay==tselem->nr; + } + return 0; +} + +static int tree_element_set_active_object(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) +{ + TreeStoreElem *tselem= TREESTORE(te); + Scene *sce; + Base *base; + Object *ob= NULL; + + /* if id is not object, we search back */ + if(te->idcode==ID_OB) ob= (Object *)tselem->id; + else { + ob= (Object *)outliner_search_back(soops, te, ID_OB); + if(ob==OBACT) return 0; + } + if(ob==NULL) return 0; + + sce= (Scene *)outliner_search_back(soops, te, ID_SCE); + if(sce && scene != sce) { + ED_screen_set_scene(C, sce); + } + + /* find associated base in current scene */ + base= object_in_scene(ob, scene); + + if(base) { + if(set==2) { + /* swap select */ + if(base->flag & SELECT) + ED_base_object_select(base, BA_DESELECT); + else + ED_base_object_select(base, BA_SELECT); + } + else { + /* deleselect all */ + scene_deselect_all(scene); + ED_base_object_select(base, BA_SELECT); + } + if(C) { + ED_base_object_activate(C, base); /* adds notifier */ + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + } + } + + if(ob!=scene->obedit) + ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); + + return 1; +} + +static int tree_element_active_material(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) +{ + TreeElement *tes; + Object *ob; + + /* we search for the object parent */ + ob= (Object *)outliner_search_back(soops, te, ID_OB); + // note: ob->matbits can be NULL when a local object points to a library mesh. + if(ob==NULL || ob!=OBACT || ob->matbits==NULL) return 0; // just paranoia + + /* searching in ob mat array? */ + tes= te->parent; + if(tes->idcode==ID_OB) { + if(set) { + ob->actcol= te->index+1; + ob->matbits[te->index]= 1; // make ob material active too + ob->colbits |= (1<index); + } + else { + if(ob->actcol == te->index+1) + if(ob->matbits[te->index]) return 1; + } + } + /* or we search for obdata material */ + else { + if(set) { + ob->actcol= te->index+1; + ob->matbits[te->index]= 0; // make obdata material active too + ob->colbits &= ~(1<index); + } + else { + if(ob->actcol == te->index+1) + if(ob->matbits[te->index]==0) return 1; + } + } + if(set) { + WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, NULL); + } + return 0; +} + +static int tree_element_active_texture(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) +{ + TreeElement *tep; + TreeStoreElem /* *tselem,*/ *tselemp; + Object *ob=OBACT; + SpaceButs *sbuts=NULL; + + if(ob==NULL) return 0; // no active object + + /*tselem= TREESTORE(te);*/ /*UNUSED*/ + + /* find buttons area (note, this is undefined really still, needs recode in blender) */ + /* XXX removed finding sbuts */ + + /* where is texture linked to? */ + tep= te->parent; + tselemp= TREESTORE(tep); + + if(tep->idcode==ID_WO) { + World *wrld= (World *)tselemp->id; + + if(set) { + if(sbuts) { + // XXX sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c + // XXX sbuts->texfrom= 1; + } +// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture + wrld->texact= te->index; + } + else if(tselemp->id == (ID *)(scene->world)) { + if(wrld->texact==te->index) return 1; + } + } + else if(tep->idcode==ID_LA) { + Lamp *la= (Lamp *)tselemp->id; + if(set) { + if(sbuts) { + // XXX sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c + // XXX sbuts->texfrom= 2; + } +// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture + la->texact= te->index; + } + else { + if(tselemp->id == ob->data) { + if(la->texact==te->index) return 1; + } + } + } + else if(tep->idcode==ID_MA) { + Material *ma= (Material *)tselemp->id; + if(set) { + if(sbuts) { + //sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c + // XXX sbuts->texfrom= 0; + } +// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture + ma->texact= (char)te->index; + + /* also set active material */ + ob->actcol= tep->index+1; + } + else if(tep->flag & TE_ACTIVE) { // this is active material + if(ma->texact==te->index) return 1; + } + } + + if(set) + WM_event_add_notifier(C, NC_TEXTURE, NULL); + + return 0; +} + + +static int tree_element_active_lamp(bContext *UNUSED(C), Scene *scene, SpaceOops *soops, TreeElement *te, int set) +{ + Object *ob; + + /* we search for the object parent */ + ob= (Object *)outliner_search_back(soops, te, ID_OB); + if(ob==NULL || ob!=OBACT) return 0; // just paranoia + + if(set) { +// XXX extern_set_butspace(F5KEY, 0); + } + else return 1; + + return 0; +} + +static int tree_element_active_camera(bContext *UNUSED(C), Scene *scene, SpaceOops *soops, TreeElement *te, int set) +{ + Object *ob= (Object *)outliner_search_back(soops, te, ID_OB); + + if(set) + return 0; + + return scene->camera == ob; +} + +static int tree_element_active_world(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) +{ + TreeElement *tep; + TreeStoreElem *tselem=NULL; + Scene *sce=NULL; + + tep= te->parent; + if(tep) { + tselem= TREESTORE(tep); + sce= (Scene *)tselem->id; + } + + if(set) { // make new scene active + if(sce && scene != sce) { + ED_screen_set_scene(C, sce); + } + } + + if(tep==NULL || tselem->id == (ID *)scene) { + if(set) { +// XXX extern_set_butspace(F8KEY, 0); + } + else { + return 1; + } + } + return 0; +} + +static int tree_element_active_defgroup(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set) +{ + Object *ob; + + /* id in tselem is object */ + ob= (Object *)tselem->id; + if(set) { + ob->actdef= te->index+1; + DAG_id_tag_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + } + else { + if(ob==OBACT) + if(ob->actdef== te->index+1) return 1; + } + return 0; +} + +static int tree_element_active_posegroup(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set) +{ + Object *ob= (Object *)tselem->id; + + if(set) { + if (ob->pose) { + ob->pose->active_group= te->index+1; + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + } + } + else { + if(ob==OBACT && ob->pose) { + if (ob->pose->active_group== te->index+1) return 1; + } + } + return 0; +} + +static int tree_element_active_posechannel(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set) +{ + Object *ob= (Object *)tselem->id; + bArmature *arm= ob->data; + bPoseChannel *pchan= te->directdata; + + if(set) { + if(!(pchan->bone->flag & BONE_HIDDEN_P)) { + + if(set==2) ED_pose_deselectall(ob, 2); // 2 = clear active tag + else ED_pose_deselectall(ob, 0); // 0 = deselect + + if(set==2 && (pchan->bone->flag & BONE_SELECTED)) { + pchan->bone->flag &= ~BONE_SELECTED; + } else { + pchan->bone->flag |= BONE_SELECTED; + arm->act_bone= pchan->bone; + } + + WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, ob); + + } + } + else { + if(ob==OBACT && ob->pose) { + if (pchan->bone->flag & BONE_SELECTED) return 1; + } + } + return 0; +} + +static int tree_element_active_bone(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set) +{ + bArmature *arm= (bArmature *)tselem->id; + Bone *bone= te->directdata; + + if(set) { + if(!(bone->flag & BONE_HIDDEN_P)) { + if(set==2) ED_pose_deselectall(OBACT, 2); // 2 is clear active tag + else ED_pose_deselectall(OBACT, 0); + + if(set==2 && (bone->flag & BONE_SELECTED)) { + bone->flag &= ~BONE_SELECTED; + } else { + bone->flag |= BONE_SELECTED; + arm->act_bone= bone; + } + + WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, OBACT); + } + } + else { + Object *ob= OBACT; + + if(ob && ob->data==arm) { + if (bone->flag & BONE_SELECTED) return 1; + } + } + return 0; +} + + +/* ebones only draw in editmode armature */ +static void tree_element_active_ebone__sel(bContext *C, Scene *scene, bArmature *arm, EditBone *ebone, short sel) +{ + if(sel) { + ebone->flag |= BONE_SELECTED|BONE_ROOTSEL|BONE_TIPSEL; + arm->act_edbone= ebone; + // flush to parent? + if(ebone->parent && (ebone->flag & BONE_CONNECTED)) ebone->parent->flag |= BONE_TIPSEL; + } + else { + ebone->flag &= ~(BONE_SELECTED|BONE_ROOTSEL|BONE_TIPSEL); + // flush to parent? + if(ebone->parent && (ebone->flag & BONE_CONNECTED)) ebone->parent->flag &= ~BONE_TIPSEL; + } + + WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, scene->obedit); +} +static int tree_element_active_ebone(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tselem), int set) +{ + bArmature *arm= scene->obedit->data; + EditBone *ebone= te->directdata; + + if(set==1) { + if(!(ebone->flag & BONE_HIDDEN_A)) { + ED_armature_deselect_all(scene->obedit, 0); // deselect + tree_element_active_ebone__sel(C, scene, arm, ebone, TRUE); + return 1; + } + } + else if (set==2) { + if(!(ebone->flag & BONE_HIDDEN_A)) { + if(!(ebone->flag & BONE_SELECTED)) { + tree_element_active_ebone__sel(C, scene, arm, ebone, TRUE); + return 1; + } + else { + /* entirely selected, so de-select */ + tree_element_active_ebone__sel(C, scene, arm, ebone, FALSE); + return 0; + } + } + } + else if (ebone->flag & BONE_SELECTED) { + return 1; + } + return 0; +} + +static int tree_element_active_modifier(bContext *C, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set) +{ + if(set) { + Object *ob= (Object *)tselem->id; + + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + +// XXX extern_set_butspace(F9KEY, 0); + } + + return 0; +} + +static int tree_element_active_psys(bContext *C, Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *tselem, int set) +{ + if(set) { + Object *ob= (Object *)tselem->id; + + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); + +// XXX extern_set_butspace(F7KEY, 0); + } + + return 0; +} + +static int tree_element_active_constraint(bContext *C, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set) +{ + if(set) { + Object *ob= (Object *)tselem->id; + + WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); +// XXX extern_set_butspace(F7KEY, 0); + } + + return 0; +} + +static int tree_element_active_text(bContext *UNUSED(C), Scene *UNUSED(scene), SpaceOops *UNUSED(soops), TreeElement *UNUSED(te), int UNUSED(set)) +{ + // XXX removed + return 0; +} + +static int tree_element_active_pose(bContext *C, Scene *scene, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set) +{ + Object *ob= (Object *)tselem->id; + Base *base= object_in_scene(ob, scene); + + if(set) { + if(scene->obedit) + ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); + + if(ob->mode & OB_MODE_POSE) + ED_armature_exit_posemode(C, base); + else + ED_armature_enter_posemode(C, base); + } + else { + if(ob->mode & OB_MODE_POSE) return 1; + } + return 0; +} + +static int tree_element_active_sequence(TreeElement *te, TreeStoreElem *UNUSED(tselem), int set) +{ + Sequence *seq= (Sequence*) te->directdata; + + if(set) { +// XXX select_single_seq(seq, 1); + } + else { + if(seq->flag & SELECT) + return(1); + } + return(0); +} + +static int tree_element_active_sequence_dup(Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tselem), int set) +{ + Sequence *seq, *p; + Editing *ed= seq_give_editing(scene, FALSE); + + seq= (Sequence*)te->directdata; + if(set==0) { + if(seq->flag & SELECT) + return(1); + return(0); + } + +// XXX select_single_seq(seq, 1); + p= ed->seqbasep->first; + while(p) { + if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) { + p= p->next; + continue; + } + +// if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name)) +// XXX select_single_seq(p, 0); + p= p->next; + } + return(0); +} + +static int tree_element_active_keymap_item(bContext *UNUSED(C), TreeElement *te, TreeStoreElem *UNUSED(tselem), int set) +{ + wmKeyMapItem *kmi= te->directdata; + + if(set==0) { + if(kmi->flag & KMI_INACTIVE) return 0; + return 1; + } + else { + kmi->flag ^= KMI_INACTIVE; + } + return 0; +} + +/* ---------------------------------------------- */ + +/* generic call for ID data check or make/check active in UI */ +int tree_element_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) +{ + + switch(te->idcode) { + /* Note: no ID_OB: objects are handled specially to allow multiple + selection. See do_outliner_item_activate. */ + case ID_MA: + return tree_element_active_material(C, scene, soops, te, set); + case ID_WO: + return tree_element_active_world(C, scene, soops, te, set); + case ID_LA: + return tree_element_active_lamp(C, scene, soops, te, set); + case ID_TE: + return tree_element_active_texture(C, scene, soops, te, set); + case ID_TXT: + return tree_element_active_text(C, scene, soops, te, set); + case ID_CA: + return tree_element_active_camera(C, scene, soops, te, set); + } + return 0; +} + +/* generic call for non-id data to make/check active in UI */ +/* Context can be NULL when set==0 */ +int tree_element_type_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, int set) +{ + switch(tselem->type) { + case TSE_DEFGROUP: + return tree_element_active_defgroup(C, scene, te, tselem, set); + case TSE_BONE: + return tree_element_active_bone(C, scene, te, tselem, set); + case TSE_EBONE: + return tree_element_active_ebone(C, scene, te, tselem, set); + case TSE_MODIFIER: + return tree_element_active_modifier(C, te, tselem, set); + case TSE_LINKED_OB: + if(set) tree_element_set_active_object(C, scene, soops, te, set); + else if(tselem->id==(ID *)OBACT) return 1; + break; + case TSE_LINKED_PSYS: + return tree_element_active_psys(C, scene, te, tselem, set); + case TSE_POSE_BASE: + return tree_element_active_pose(C, scene, te, tselem, set); + case TSE_POSE_CHANNEL: + return tree_element_active_posechannel(C, scene, te, tselem, set); + case TSE_CONSTRAINT: + return tree_element_active_constraint(C, te, tselem, set); + case TSE_R_LAYER: + return tree_element_active_renderlayer(C, te, tselem, set); + case TSE_POSEGRP: + return tree_element_active_posegroup(C, scene, te, tselem, set); + case TSE_SEQUENCE: + return tree_element_active_sequence(te, tselem, set); + case TSE_SEQUENCE_DUP: + return tree_element_active_sequence_dup(scene, te, tselem, set); + case TSE_KEYMAP_ITEM: + return tree_element_active_keymap_item(C, te, tselem, set); + + } + return 0; +} + +/* ================================================ */ + +static int do_outliner_item_activate(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int extend, const float mval[2]) +{ + + if(mval[1]>te->ys && mval[1]ys+UI_UNIT_Y) { + TreeStoreElem *tselem= TREESTORE(te); + int openclose= 0; + + /* open close icon */ + if((te->flag & TE_ICONROW)==0) { // hidden icon, no open/close + if( mval[0]>te->xs && mval[0]xs+UI_UNIT_X) + openclose= 1; + } + + if(openclose) { + /* all below close/open? */ + if(extend) { + tselem->flag &= ~TSE_CLOSED; + outliner_set_flag(soops, &te->subtree, TSE_CLOSED, !outliner_has_one_flag(soops, &te->subtree, TSE_CLOSED, 1)); + } + else { + if(tselem->flag & TSE_CLOSED) tselem->flag &= ~TSE_CLOSED; + else tselem->flag |= TSE_CLOSED; + + } + + return 1; + } + /* name and first icon */ + else if(mval[0]>te->xs+UI_UNIT_X && mval[0]xend) { + + /* always makes active object */ + if(tselem->type!=TSE_SEQUENCE && tselem->type!=TSE_SEQ_STRIP && tselem->type!=TSE_SEQUENCE_DUP) + tree_element_set_active_object(C, scene, soops, te, 1 + (extend!=0 && tselem->type==0)); + + if(tselem->type==0) { // the lib blocks + /* editmode? */ + if(te->idcode==ID_SCE) { + if(scene!=(Scene *)tselem->id) { + ED_screen_set_scene(C, (Scene *)tselem->id); + } + } + else if(te->idcode==ID_GR) { + Group *gr= (Group *)tselem->id; + GroupObject *gob; + + if(extend) { + int sel= BA_SELECT; + for(gob= gr->gobject.first; gob; gob= gob->next) { + if(gob->ob->flag & SELECT) { + sel= BA_DESELECT; + break; + } + } + + for(gob= gr->gobject.first; gob; gob= gob->next) { + ED_base_object_select(object_in_scene(gob->ob, scene), sel); + } + } + else { + scene_deselect_all(scene); + + for(gob= gr->gobject.first; gob; gob= gob->next) { + if((gob->ob->flag & SELECT) == 0) + ED_base_object_select(object_in_scene(gob->ob, scene), BA_SELECT); + } + } + + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + } + else if(ELEM5(te->idcode, ID_ME, ID_CU, ID_MB, ID_LT, ID_AR)) { + WM_operator_name_call(C, "OBJECT_OT_editmode_toggle", WM_OP_INVOKE_REGION_WIN, NULL); + } else { // rest of types + tree_element_active(C, scene, soops, te, 1); + } + + } + else tree_element_type_active(C, scene, soops, te, tselem, 1+(extend!=0)); + + return 1; + } + } + + for(te= te->subtree.first; te; te= te->next) { + if(do_outliner_item_activate(C, scene, ar, soops, te, extend, mval)) return 1; + } + return 0; +} + +/* event can enterkey, then it opens/closes */ +static int outliner_item_activate(bContext *C, wmOperator *op, wmEvent *event) +{ + Scene *scene= CTX_data_scene(C); + ARegion *ar= CTX_wm_region(C); + SpaceOops *soops= CTX_wm_space_outliner(C); + TreeElement *te; + float fmval[2]; + int extend= RNA_boolean_get(op->ptr, "extend"); + + UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1); + + if(!ELEM3(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF, SO_KEYMAP) && !(soops->flag & SO_HIDE_RESTRICTCOLS) && fmval[0] > ar->v2d.cur.xmax - OL_TOG_RESTRICT_VIEWX) + return OPERATOR_CANCELLED; + + for(te= soops->tree.first; te; te= te->next) { + if(do_outliner_item_activate(C, scene, ar, soops, te, extend, fmval)) break; + } + + if(te) { + ED_undo_push(C, "Outliner click event"); + } + else { + short selecting= -1; + int row; + + /* get row number - 100 here is just a dummy value since we don't need the column */ + UI_view2d_listview_view_to_cell(&ar->v2d, 1000, UI_UNIT_Y, 0.0f, OL_Y_OFFSET, + fmval[0], fmval[1], NULL, &row); + + /* select relevant row */ + outliner_select(soops, &soops->tree, &row, &selecting); + + soops->storeflag |= SO_TREESTORE_REDRAW; + + ED_undo_push(C, "Outliner selection event"); + } + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_item_activate(wmOperatorType *ot) +{ + ot->name= "Activate Item"; + ot->idname= "OUTLINER_OT_item_activate"; + ot->description= "Handle mouse clicks to activate/select items"; + + ot->invoke= outliner_item_activate; + + ot->poll= ED_operator_outliner_active; + + RNA_def_boolean(ot->srna, "extend", 1, "Extend", "Extend selection for activation."); +} + +/* ****************************************************** */ diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c new file mode 100644 index 00000000000..f5e1a67010e --- /dev/null +++ b/source/blender/editors/space_outliner/outliner_tools.c @@ -0,0 +1,1217 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2004 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Joshua Leung + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/editors/space_outliner/outliner_tools.c + * \ingroup spoutliner + */ + +#include +#include +#include +#include + +#include "MEM_guardedalloc.h" + +#include "DNA_anim_types.h" +#include "DNA_armature_types.h" +#include "DNA_constraint_types.h" +#include "DNA_camera_types.h" +#include "DNA_group_types.h" +#include "DNA_key_types.h" +#include "DNA_lamp_types.h" +#include "DNA_material_types.h" +#include "DNA_mesh_types.h" +#include "DNA_meta_types.h" +#include "DNA_particle_types.h" +#include "DNA_scene_types.h" +#include "DNA_world_types.h" +#include "DNA_sequence_types.h" +#include "DNA_object_types.h" + +#include "BLI_blenlib.h" +#include "BLI_utildefines.h" +#include "BLI_math_base.h" + +#if defined WIN32 && !defined _LIBC +# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ +#else +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif +# include +#endif + + +#include "BKE_animsys.h" +#include "BKE_context.h" +#include "BKE_deform.h" +#include "BKE_depsgraph.h" +#include "BKE_fcurve.h" +#include "BKE_global.h" +#include "BKE_group.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_modifier.h" +#include "BKE_report.h" +#include "BKE_scene.h" +#include "BKE_sequencer.h" + +#include "ED_armature.h" +#include "ED_object.h" +#include "ED_screen.h" +#include "ED_util.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "BIF_gl.h" +#include "BIF_glutil.h" + +#include "UI_interface.h" +#include "UI_interface_icons.h" +#include "UI_resources.h" +#include "UI_view2d.h" + +#include "RNA_access.h" +#include "RNA_define.h" +#include "RNA_enum_types.h" + +#include "outliner_intern.h" + +/* ****************************************************** */ + +/* ************ SELECTION OPERATIONS ********* */ + +static void set_operation_types(SpaceOops *soops, ListBase *lb, + int *scenelevel, + int *objectlevel, + int *idlevel, + int *datalevel) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(tselem->flag & TSE_SELECTED) { + if(tselem->type) { + if(*datalevel==0) + *datalevel= tselem->type; + else if(*datalevel!=tselem->type) + *datalevel= -1; + } + else { + int idcode= GS(tselem->id->name); + switch(idcode) { + case ID_SCE: + *scenelevel= 1; + break; + case ID_OB: + *objectlevel= 1; + break; + + case ID_ME: case ID_CU: case ID_MB: case ID_LT: + case ID_LA: case ID_AR: case ID_CA: /* case ID_SPK: */ /* GSOC_PEPPER */ + case ID_MA: case ID_TE: case ID_IP: case ID_IM: + case ID_SO: case ID_KE: case ID_WO: case ID_AC: + case ID_NLA: case ID_TXT: case ID_GR: + if(*idlevel==0) *idlevel= idcode; + else if(*idlevel!=idcode) *idlevel= -1; + break; + } + } + } + if((tselem->flag & TSE_CLOSED)==0) { + set_operation_types(soops, &te->subtree, + scenelevel, objectlevel, idlevel, datalevel); + } + } +} + +#if 0 // GSOC_PEPPER + +static void unlink_action_cb(bContext *C, Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *tsep, TreeStoreElem *UNUSED(tselem)) +{ + /* just set action to NULL */ + BKE_animdata_set_action(CTX_wm_reports(C), tsep->id, NULL); +} + +#endif // GSOC_PEPPER + +static void unlink_material_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *te, TreeStoreElem *tsep, TreeStoreElem *UNUSED(tselem)) +{ + Material **matar=NULL; + int a, totcol=0; + + if( GS(tsep->id->name)==ID_OB) { + Object *ob= (Object *)tsep->id; + totcol= ob->totcol; + matar= ob->mat; + } + else if( GS(tsep->id->name)==ID_ME) { + Mesh *me= (Mesh *)tsep->id; + totcol= me->totcol; + matar= me->mat; + } + else if( GS(tsep->id->name)==ID_CU) { + Curve *cu= (Curve *)tsep->id; + totcol= cu->totcol; + matar= cu->mat; + } + else if( GS(tsep->id->name)==ID_MB) { + MetaBall *mb= (MetaBall *)tsep->id; + totcol= mb->totcol; + matar= mb->mat; + } + + for(a=0; aindex && matar[a]) { + matar[a]->id.us--; + matar[a]= NULL; + } + } +} + +static void unlink_texture_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *te, TreeStoreElem *tsep, TreeStoreElem *UNUSED(tselem)) +{ + MTex **mtex= NULL; + int a; + + if( GS(tsep->id->name)==ID_MA) { + Material *ma= (Material *)tsep->id; + mtex= ma->mtex; + } + else if( GS(tsep->id->name)==ID_LA) { + Lamp *la= (Lamp *)tsep->id; + mtex= la->mtex; + } + else if( GS(tsep->id->name)==ID_WO) { + World *wrld= (World *)tsep->id; + mtex= wrld->mtex; + } + else return; + + for(a=0; aindex && mtex[a]) { + if(mtex[a]->tex) { + mtex[a]->tex->id.us--; + mtex[a]->tex= NULL; + } + } + } +} + +static void unlink_group_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *tsep, TreeStoreElem *tselem) +{ + Group *group= (Group *)tselem->id; + + if(tsep) { + if( GS(tsep->id->name)==ID_OB) { + Object *ob= (Object *)tsep->id; + ob->dup_group= NULL; + } + } + else { + unlink_group(group); + } +} + +static void outliner_do_libdata_operation(bContext *C, Scene *scene, SpaceOops *soops, ListBase *lb, + void (*operation_cb)(bContext *C, Scene *scene, TreeElement *, TreeStoreElem *, TreeStoreElem *)) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te=lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(tselem->flag & TSE_SELECTED) { + if(tselem->type==0) { + TreeStoreElem *tsep= TREESTORE(te->parent); + operation_cb(C, scene, te, tsep, tselem); + } + } + if((tselem->flag & TSE_CLOSED)==0) { + outliner_do_libdata_operation(C, scene, soops, &te->subtree, operation_cb); + } + } +} + +/* */ + +static void object_select_cb(bContext *UNUSED(C), Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + Base *base= (Base *)te->directdata; + + if(base==NULL) base= object_in_scene((Object *)tselem->id, scene); + if(base && ((base->object->restrictflag & OB_RESTRICT_VIEW)==0)) { + base->flag |= SELECT; + base->object->flag |= SELECT; + } +} + +static void object_deselect_cb(bContext *UNUSED(C), Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + Base *base= (Base *)te->directdata; + + if(base==NULL) base= object_in_scene((Object *)tselem->id, scene); + if(base) { + base->flag &= ~SELECT; + base->object->flag &= ~SELECT; + } +} + +static void object_delete_cb(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + Base *base= (Base *)te->directdata; + + if(base==NULL) + base= object_in_scene((Object *)tselem->id, scene); + if(base) { + // check also library later + if(scene->obedit==base->object) + ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); + + ED_base_object_free_and_unlink(CTX_data_main(C), scene, base); + te->directdata= NULL; + tselem->id= NULL; + } + +} + +static void id_local_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + if (tselem->id->lib && (tselem->id->flag & LIB_EXTERN)) { + tselem->id->lib= NULL; + tselem->id->flag= LIB_LOCAL; + new_id(NULL, tselem->id, NULL); + } +} + +static void id_fake_user_set_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + ID *id = tselem->id; + + if ((id) && ((id->flag & LIB_FAKEUSER) == 0)) { + id->flag |= LIB_FAKEUSER; + id_us_plus(id); + } +} + +static void id_fake_user_clear_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + ID *id = tselem->id; + + if ((id) && (id->flag & LIB_FAKEUSER)) { + id->flag &= ~LIB_FAKEUSER; + id_us_min(id); + } +} + +#if 0 // GSOC_PEPPER + +static void singleuser_action_cb(bContext *C, Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *tsep, TreeStoreElem *tselem) +{ + ID *id = tselem->id; + + if (id) { + IdAdtTemplate *iat = (IdAdtTemplate *)tsep->id; + PointerRNA ptr = {{0}}; + PropertyRNA *prop; + + RNA_pointer_create(&iat->id, &RNA_AnimData, iat->adt, &ptr); + prop = RNA_struct_find_property(&ptr, "action"); + + id_single_user(C, id, &ptr, prop); + } +} + +#endif + +static void group_linkobs2scene_cb(bContext *UNUSED(C), Scene *scene, TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem) +{ + Group *group= (Group *)tselem->id; + GroupObject *gob; + Base *base; + + for(gob=group->gobject.first; gob; gob=gob->next) { + base= object_in_scene(gob->ob, scene); + if (base) { + base->object->flag |= SELECT; + base->flag |= SELECT; + } else { + /* link to scene */ + base= MEM_callocN( sizeof(Base), "add_base"); + BLI_addhead(&scene->base, base); + base->lay= (1<<20)-1; /*v3d->lay;*/ /* would be nice to use the 3d layer but the include's not here */ + gob->ob->flag |= SELECT; + base->flag = gob->ob->flag; + base->object= gob->ob; + id_lib_extern((ID *)gob->ob); /* incase these are from a linked group */ + } + } +} + +void outliner_do_object_operation(bContext *C, Scene *scene_act, SpaceOops *soops, ListBase *lb, + void (*operation_cb)(bContext *C, Scene *scene, TreeElement *, TreeStoreElem *, TreeStoreElem *)) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te=lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(tselem->flag & TSE_SELECTED) { + if(tselem->type==0 && te->idcode==ID_OB) { + // when objects selected in other scenes... dunno if that should be allowed + Scene *scene_owner= (Scene *)outliner_search_back(soops, te, ID_SCE); + if(scene_owner && scene_act != scene_owner) { + ED_screen_set_scene(C, scene_owner); + } + /* important to use 'scene_owner' not scene_act else deleting objects can crash. + * only use 'scene_act' when 'scene_owner' is NULL, which can happen when the + * outliner isnt showing scenes: Visible Layer draw mode for eg. */ + operation_cb(C, scene_owner ? scene_owner : scene_act, te, NULL, tselem); + } + } + if((tselem->flag & TSE_CLOSED)==0) { + outliner_do_object_operation(C, scene_act, soops, &te->subtree, operation_cb); + } + } +} + +/* ******************************************** */ + +#if 0 // GSOC_PEPPER + +static void unlinkact_animdata_cb(int UNUSED(event), TreeElement *UNUSED(te), TreeStoreElem *tselem) +{ + /* just set action to NULL */ + BKE_animdata_set_action(NULL, tselem->id, NULL); +} + +#endif // GSOC_PEPPER + +static void cleardrivers_animdata_cb(int UNUSED(event), TreeElement *UNUSED(te), TreeStoreElem *tselem) +{ + IdAdtTemplate *iat = (IdAdtTemplate *)tselem->id; + + /* just free drivers - stored as a list of F-Curves */ + free_fcurves(&iat->adt->drivers); +} + +static void refreshdrivers_animdata_cb(int UNUSED(event), TreeElement *UNUSED(te), TreeStoreElem *tselem) +{ + IdAdtTemplate *iat = (IdAdtTemplate *)tselem->id; + FCurve *fcu; + + /* loop over drivers, performing refresh (i.e. check graph_buttons.c and rna_fcurve.c for details) */ + for (fcu = iat->adt->drivers.first; fcu; fcu= fcu->next) { + fcu->flag &= ~FCURVE_DISABLED; + + if (fcu->driver) + fcu->driver->flag &= ~DRIVER_FLAG_INVALID; + } +} + +/* --------------------------------- */ + +static void pchan_cb(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem)) +{ + bPoseChannel *pchan= (bPoseChannel *)te->directdata; + + if(event==1) + pchan->bone->flag |= BONE_SELECTED; + else if(event==2) + pchan->bone->flag &= ~BONE_SELECTED; + else if(event==3) { + pchan->bone->flag |= BONE_HIDDEN_P; + pchan->bone->flag &= ~BONE_SELECTED; + } + else if(event==4) + pchan->bone->flag &= ~BONE_HIDDEN_P; +} + +static void bone_cb(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem)) +{ + Bone *bone= (Bone *)te->directdata; + + if(event==1) + bone->flag |= BONE_SELECTED; + else if(event==2) + bone->flag &= ~BONE_SELECTED; + else if(event==3) { + bone->flag |= BONE_HIDDEN_P; + bone->flag &= ~BONE_SELECTED; + } + else if(event==4) + bone->flag &= ~BONE_HIDDEN_P; +} + +static void ebone_cb(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem)) +{ + EditBone *ebone= (EditBone *)te->directdata; + + if(event==1) + ebone->flag |= BONE_SELECTED; + else if(event==2) + ebone->flag &= ~BONE_SELECTED; + else if(event==3) { + ebone->flag |= BONE_HIDDEN_A; + ebone->flag &= ~BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; + } + else if(event==4) + ebone->flag &= ~BONE_HIDDEN_A; +} + +static void sequence_cb(int event, TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tselem)) +{ +// Sequence *seq= (Sequence*) te->directdata; + if(event==1) { +// XXX select_single_seq(seq, 1); + } +} + +static void outliner_do_data_operation(SpaceOops *soops, int type, int event, ListBase *lb, + void (*operation_cb)(int, TreeElement *, TreeStoreElem *)) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for(te=lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(tselem->flag & TSE_SELECTED) { + if(tselem->type==type) { + operation_cb(event, te, tselem); + } + } + if((tselem->flag & TSE_CLOSED)==0) { + outliner_do_data_operation(soops, type, event, &te->subtree, operation_cb); + } + } +} + +/* **************************************** */ + +static EnumPropertyItem prop_object_op_types[] = { + {1, "SELECT", 0, "Select", ""}, + {2, "DESELECT", 0, "Deselect", ""}, + {4, "DELETE", 0, "Delete", ""}, + {6, "TOGVIS", 0, "Toggle Visible", ""}, + {7, "TOGSEL", 0, "Toggle Selectable", ""}, + {8, "TOGREN", 0, "Toggle Renderable", ""}, + {0, NULL, 0, NULL, NULL} +}; + +static int outliner_object_operation_exec(bContext *C, wmOperator *op) +{ + Main *bmain= CTX_data_main(C); + Scene *scene= CTX_data_scene(C); + SpaceOops *soops= CTX_wm_space_outliner(C); + int event; + const char *str= NULL; + + /* check for invalid states */ + if (soops == NULL) + return OPERATOR_CANCELLED; + + event= RNA_enum_get(op->ptr, "type"); + + if(event==1) { + Scene *sce= scene; // to be able to delete, scenes are set... + outliner_do_object_operation(C, scene, soops, &soops->tree, object_select_cb); + if(scene != sce) { + ED_screen_set_scene(C, sce); + } + + str= "Select Objects"; + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + } + else if(event==2) { + outliner_do_object_operation(C, scene, soops, &soops->tree, object_deselect_cb); + str= "Deselect Objects"; + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + } + else if(event==4) { + outliner_do_object_operation(C, scene, soops, &soops->tree, object_delete_cb); + DAG_scene_sort(bmain, scene); + str= "Delete Objects"; + WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); + } + else if(event==5) { /* disabled, see above enum (ton) */ + outliner_do_object_operation(C, scene, soops, &soops->tree, id_local_cb); + str= "Localized Objects"; + } + else if(event==6) { + outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_visibility_cb); + str= "Toggle Visibility"; + WM_event_add_notifier(C, NC_SCENE|ND_OB_VISIBLE, scene); + } + else if(event==7) { + outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_selectability_cb); + str= "Toggle Selectability"; + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + } + else if(event==8) { + outliner_do_object_operation(C, scene, soops, &soops->tree, object_toggle_renderability_cb); + str= "Toggle Renderability"; + WM_event_add_notifier(C, NC_SCENE|ND_OB_RENDER, scene); + } + + ED_undo_push(C, str); + + return OPERATOR_FINISHED; +} + + +void OUTLINER_OT_object_operation(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Outliner Object Operation"; + ot->idname= "OUTLINER_OT_object_operation"; + ot->description= ""; + + /* callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= outliner_object_operation_exec; + ot->poll= ED_operator_outliner_active; + + ot->flag= 0; + + ot->prop= RNA_def_enum(ot->srna, "type", prop_object_op_types, 0, "Object Operation", ""); +} + +/* **************************************** */ + +static EnumPropertyItem prop_group_op_types[] = { + {1, "UNLINK", 0, "Unlink", ""}, + {2, "LOCAL", 0, "Make Local", ""}, + {3, "LINK", 0, "Link Group Objects to Scene", ""}, + {4, "TOGVIS", 0, "Toggle Visible", ""}, + {5, "TOGSEL", 0, "Toggle Selectable", ""}, + {6, "TOGREN", 0, "Toggle Renderable", ""}, + {0, NULL, 0, NULL, NULL} +}; + +static int outliner_group_operation_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + SpaceOops *soops= CTX_wm_space_outliner(C); + int event; + + /* check for invalid states */ + if (soops == NULL) + return OPERATOR_CANCELLED; + + event= RNA_enum_get(op->ptr, "type"); + + if(event==1) { + outliner_do_libdata_operation(C, scene, soops, &soops->tree, unlink_group_cb); + ED_undo_push(C, "Unlink group"); + } + else if(event==2) { + outliner_do_libdata_operation(C, scene, soops, &soops->tree, id_local_cb); + ED_undo_push(C, "Localized Data"); + } + else if(event==3) { + outliner_do_libdata_operation(C, scene, soops, &soops->tree, group_linkobs2scene_cb); + ED_undo_push(C, "Link Group Objects to Scene"); + } + + + WM_event_add_notifier(C, NC_GROUP, NULL); + + return OPERATOR_FINISHED; +} + + +void OUTLINER_OT_group_operation(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Outliner Group Operation"; + ot->idname= "OUTLINER_OT_group_operation"; + ot->description= ""; + + /* callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= outliner_group_operation_exec; + ot->poll= ED_operator_outliner_active; + + ot->flag= 0; + + ot->prop= RNA_def_enum(ot->srna, "type", prop_group_op_types, 0, "Group Operation", ""); +} + +/* **************************************** */ + +typedef enum eOutlinerIdOpTypes { + OUTLINER_IDOP_INVALID = 0, + + OUTLINER_IDOP_UNLINK, + OUTLINER_IDOP_LOCAL, + OUTLINER_IDOP_SINGLE, + + OUTLINER_IDOP_FAKE_ADD, + OUTLINER_IDOP_FAKE_CLEAR +} eOutlinerIdOpTypes; + +// TODO: implement support for changing the ID-block used +static EnumPropertyItem prop_id_op_types[] = { + {OUTLINER_IDOP_UNLINK, "UNLINK", 0, "Unlink", ""}, + {OUTLINER_IDOP_LOCAL, "LOCAL", 0, "Make Local", ""}, + {OUTLINER_IDOP_SINGLE, "SINGLE", 0, "Make Single User", ""}, + {OUTLINER_IDOP_FAKE_ADD, "ADD_FAKE", 0, "Add Fake User", "Ensure datablock gets saved even if it isn't in use (e.g. for motion and material libraries)"}, + {OUTLINER_IDOP_FAKE_CLEAR, "CLEAR_FAKE", 0, "Clear Fake User", ""}, + {0, NULL, 0, NULL, NULL} +}; + +static int outliner_id_operation_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + SpaceOops *soops= CTX_wm_space_outliner(C); + int scenelevel=0, objectlevel=0, idlevel=0, datalevel=0; + eOutlinerIdOpTypes event; + + /* check for invalid states */ + if (soops == NULL) + return OPERATOR_CANCELLED; + + set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); + + event= RNA_enum_get(op->ptr, "type"); + + switch (event) { + case OUTLINER_IDOP_UNLINK: + { + /* unlink datablock from its parent */ + switch (idlevel) { + +#if 0 // GSOC_PEPPER + + case ID_AC: + outliner_do_libdata_operation(C, scene, soops, &soops->tree, unlink_action_cb); + + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_ACTCHANGE, NULL); + ED_undo_push(C, "Unlink action"); + break; + +#endif // GSOC_PEPPER + + case ID_MA: + outliner_do_libdata_operation(C, scene, soops, &soops->tree, unlink_material_cb); + + WM_event_add_notifier(C, NC_OBJECT|ND_OB_SHADING, NULL); + ED_undo_push(C, "Unlink material"); + break; + case ID_TE: + outliner_do_libdata_operation(C, scene, soops, &soops->tree, unlink_texture_cb); + + WM_event_add_notifier(C, NC_OBJECT|ND_OB_SHADING, NULL); + ED_undo_push(C, "Unlink texture"); + break; + default: + BKE_report(op->reports, RPT_WARNING, "Not Yet"); + break; + } + } + break; + + case OUTLINER_IDOP_LOCAL: + { + /* make local */ + outliner_do_libdata_operation(C, scene, soops, &soops->tree, id_local_cb); + ED_undo_push(C, "Localized Data"); + } + break; + +#if 0 // GSOC_PEPPER + + case OUTLINER_IDOP_SINGLE: + { + /* make single user */ + switch (idlevel) { + case ID_AC: + outliner_do_libdata_operation(C, scene, soops, &soops->tree, singleuser_action_cb); + + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_ACTCHANGE, NULL); + ED_undo_push(C, "Single-User Action"); + break; + + default: + BKE_report(op->reports, RPT_WARNING, "Not Yet"); + break; + } + } + break; + +#endif // GSOC_PEPPER + + case OUTLINER_IDOP_FAKE_ADD: + { + /* set fake user */ + outliner_do_libdata_operation(C, scene, soops, &soops->tree, id_fake_user_set_cb); + + WM_event_add_notifier(C, NC_ID|NA_EDITED, NULL); + ED_undo_push(C, "Add Fake User"); + } + break; + + case OUTLINER_IDOP_FAKE_CLEAR: + { + /* clear fake user */ + outliner_do_libdata_operation(C, scene, soops, &soops->tree, id_fake_user_clear_cb); + + WM_event_add_notifier(C, NC_ID|NA_EDITED, NULL); + ED_undo_push(C, "Clear Fake User"); + } + break; + + default: + // invalid - unhandled + break; + } + + /* wrong notifier still... */ + WM_event_add_notifier(C, NC_ID|NA_EDITED, NULL); + + // XXX: this is just so that outliner is always up to date + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL); + + return OPERATOR_FINISHED; +} + + +void OUTLINER_OT_id_operation(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Outliner ID data Operation"; + ot->idname= "OUTLINER_OT_id_operation"; + ot->description= ""; + + /* callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= outliner_id_operation_exec; + ot->poll= ED_operator_outliner_active; + + ot->flag= 0; + + ot->prop= RNA_def_enum(ot->srna, "type", prop_id_op_types, 0, "ID data Operation", ""); +} + +/* **************************************** */ + +static void outliner_do_id_set_operation(SpaceOops *soops, int type, ListBase *lb, ID *newid, + void (*operation_cb)(TreeElement *, TreeStoreElem *, TreeStoreElem *, ID *)) +{ + TreeElement *te; + TreeStoreElem *tselem; + + for (te=lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if (tselem->flag & TSE_SELECTED) { + if(tselem->type==type) { + TreeStoreElem *tsep = TREESTORE(te->parent); + operation_cb(te, tselem, tsep, newid); + } + } + if ((tselem->flag & TSE_CLOSED)==0) { + outliner_do_id_set_operation(soops, type, &te->subtree, newid, operation_cb); + } + } +} + +/* ------------------------------------------ */ + +#if 0 // GSOC_PEPPER + +static void actionset_id_cb(TreeElement *te, TreeStoreElem *tselem, TreeStoreElem *tsep, ID *actId) +{ + bAction *act = (bAction *)actId; + + if (tselem->type == TSE_ANIM_DATA) { + /* "animation" entries - action is child of this */ + BKE_animdata_set_action(NULL, tselem->id, act); + } + /* TODO: if any other "expander" channels which own actions need to support this menu, + * add: tselem->type = ... + */ + else if (tsep && (tsep->type == TSE_ANIM_DATA)) { + /* "animation" entries case again */ + BKE_animdata_set_action(NULL, tsep->id, act); + } + // TODO: other cases not supported yet +} + +static int outliner_action_set_exec(bContext *C, wmOperator *op) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + int scenelevel=0, objectlevel=0, idlevel=0, datalevel=0; + + bAction *act; + + /* check for invalid states */ + if (soops == NULL) + return OPERATOR_CANCELLED; + set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); + + /* get action to use */ + act= BLI_findlink(&CTX_data_main(C)->action, RNA_enum_get(op->ptr, "action")); + + if (act == NULL) { + BKE_report(op->reports, RPT_ERROR, "No valid Action to add."); + return OPERATOR_CANCELLED; + } + else if (act->idroot == 0) { + /* hopefully in this case (i.e. library of userless actions), the user knows what they're doing... */ + BKE_reportf(op->reports, RPT_WARNING, + "Action '%s' does not specify what datablocks it can be used on. Try setting the 'ID Root Type' setting from the Datablocks Editor for this Action to avoid future problems", + act->id.name+2); + } + + /* perform action if valid channel */ + if (datalevel == TSE_ANIM_DATA) + outliner_do_id_set_operation(soops, datalevel, &soops->tree, (ID*)act, actionset_id_cb); + else if (idlevel == ID_AC) + outliner_do_id_set_operation(soops, idlevel, &soops->tree, (ID*)act, actionset_id_cb); + else + return OPERATOR_CANCELLED; + + /* set notifier that things have changed */ + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_ACTCHANGE, NULL); + ED_undo_push(C, "Set action"); + + /* done */ + return OPERATOR_FINISHED; +} + +void OUTLINER_OT_action_set(wmOperatorType *ot) +{ + PropertyRNA *prop; + + /* identifiers */ + ot->name= "Outliner Set Action"; + ot->idname= "OUTLINER_OT_action_set"; + ot->description= "Change the active action used"; + + /* api callbacks */ + ot->invoke= WM_enum_search_invoke; + ot->exec= outliner_action_set_exec; + ot->poll= ED_operator_outliner_active; + + /* flags */ + ot->flag= 0; + + /* props */ + // TODO: this would be nicer as an ID-pointer... + prop= RNA_def_enum(ot->srna, "action", DummyRNA_NULL_items, 0, "Action", ""); + RNA_def_enum_funcs(prop, RNA_action_itemf); + ot->prop= prop; +} + +#endif // GSOC_PEPPER + +/* **************************************** */ + +typedef enum eOutliner_AnimDataOps { + OUTLINER_ANIMOP_INVALID = 0, + + OUTLINER_ANIMOP_SET_ACT, + OUTLINER_ANIMOP_CLEAR_ACT, + + OUTLINER_ANIMOP_REFRESH_DRV, + OUTLINER_ANIMOP_CLEAR_DRV + + //OUTLINER_ANIMOP_COPY_DRIVERS, + //OUTLINER_ANIMOP_PASTE_DRIVERS +} eOutliner_AnimDataOps; + +static EnumPropertyItem prop_animdata_op_types[] = { + {OUTLINER_ANIMOP_SET_ACT, "SET_ACT", 0, "Set Action", ""}, + {OUTLINER_ANIMOP_CLEAR_ACT, "CLEAR_ACT", 0, "Unlink Action", ""}, + {OUTLINER_ANIMOP_REFRESH_DRV, "REFRESH_DRIVERS", 0, "Refresh Drivers", ""}, + //{OUTLINER_ANIMOP_COPY_DRIVERS, "COPY_DRIVERS", 0, "Copy Drivers", ""}, + //{OUTLINER_ANIMOP_PASTE_DRIVERS, "PASTE_DRIVERS", 0, "Paste Drivers", ""}, + {OUTLINER_ANIMOP_CLEAR_DRV, "CLEAR_DRIVERS", 0, "Clear Drivers", ""}, + {0, NULL, 0, NULL, NULL} +}; + +static int outliner_animdata_operation_exec(bContext *C, wmOperator *op) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + int scenelevel=0, objectlevel=0, idlevel=0, datalevel=0; + eOutliner_AnimDataOps event; + short updateDeps = 0; + + /* check for invalid states */ + if (soops == NULL) + return OPERATOR_CANCELLED; + + event= RNA_enum_get(op->ptr, "type"); + set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); + + if (datalevel != TSE_ANIM_DATA) + return OPERATOR_CANCELLED; + + /* perform the core operation */ + switch (event) { + +#if 0 // GSOC_PEPPER + + case OUTLINER_ANIMOP_SET_ACT: + /* delegate once again... */ + WM_operator_name_call(C, "OUTLINER_OT_action_set", WM_OP_INVOKE_REGION_WIN, NULL); + break; + + case OUTLINER_ANIMOP_CLEAR_ACT: + /* clear active action - using standard rules */ + outliner_do_data_operation(soops, datalevel, event, &soops->tree, unlinkact_animdata_cb); + + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_ACTCHANGE, NULL); + ED_undo_push(C, "Unlink action"); + break; + +#endif // GSOC_PEPPER + + case OUTLINER_ANIMOP_REFRESH_DRV: + outliner_do_data_operation(soops, datalevel, event, &soops->tree, refreshdrivers_animdata_cb); + + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN, NULL); + //ED_undo_push(C, "Refresh Drivers"); /* no undo needed - shouldn't have any impact? */ + updateDeps = 1; + break; + + case OUTLINER_ANIMOP_CLEAR_DRV: + outliner_do_data_operation(soops, datalevel, event, &soops->tree, cleardrivers_animdata_cb); + + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN, NULL); + ED_undo_push(C, "Clear Drivers"); + updateDeps = 1; + break; + + default: // invalid + break; + } + + /* update dependencies */ + if (updateDeps) { + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + + /* rebuild depsgraph for the new deps */ + DAG_scene_sort(bmain, scene); + + /* force an update of depsgraph */ + DAG_ids_flush_update(bmain, 0); + } + + return OPERATOR_FINISHED; +} + + +void OUTLINER_OT_animdata_operation(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Outliner Animation Data Operation"; + ot->idname= "OUTLINER_OT_animdata_operation"; + ot->description= ""; + + /* callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= outliner_animdata_operation_exec; + ot->poll= ED_operator_outliner_active; + + ot->flag= 0; + + ot->prop= RNA_def_enum(ot->srna, "type", prop_animdata_op_types, 0, "Animation Operation", ""); +} + +/* **************************************** */ + +static EnumPropertyItem prop_data_op_types[] = { + {1, "SELECT", 0, "Select", ""}, + {2, "DESELECT", 0, "Deselect", ""}, + {3, "HIDE", 0, "Hide", ""}, + {4, "UNHIDE", 0, "Unhide", ""}, + {0, NULL, 0, NULL, NULL} +}; + +static int outliner_data_operation_exec(bContext *C, wmOperator *op) +{ + SpaceOops *soops= CTX_wm_space_outliner(C); + int scenelevel=0, objectlevel=0, idlevel=0, datalevel=0; + int event; + + /* check for invalid states */ + if (soops == NULL) + return OPERATOR_CANCELLED; + + event= RNA_enum_get(op->ptr, "type"); + set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); + + if(datalevel==TSE_POSE_CHANNEL) { + if(event>0) { + outliner_do_data_operation(soops, datalevel, event, &soops->tree, pchan_cb); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); + ED_undo_push(C, "PoseChannel operation"); + } + } + else if(datalevel==TSE_BONE) { + if(event>0) { + outliner_do_data_operation(soops, datalevel, event, &soops->tree, bone_cb); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); + ED_undo_push(C, "Bone operation"); + } + } + else if(datalevel==TSE_EBONE) { + if(event>0) { + outliner_do_data_operation(soops, datalevel, event, &soops->tree, ebone_cb); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); + ED_undo_push(C, "EditBone operation"); + } + } + else if(datalevel==TSE_SEQUENCE) { + if(event>0) { + outliner_do_data_operation(soops, datalevel, event, &soops->tree, sequence_cb); + } + } + + return OPERATOR_FINISHED; +} + + +void OUTLINER_OT_data_operation(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Outliner Data Operation"; + ot->idname= "OUTLINER_OT_data_operation"; + ot->description= ""; + + /* callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= outliner_data_operation_exec; + ot->poll= ED_operator_outliner_active; + + ot->flag= 0; + + ot->prop= RNA_def_enum(ot->srna, "type", prop_data_op_types, 0, "Data Operation", ""); +} + + +/* ******************** */ + + +static int do_outliner_operation_event(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, wmEvent *event, const float mval[2]) +{ + ReportList *reports = CTX_wm_reports(C); // XXX... + + if(mval[1]>te->ys && mval[1]ys+UI_UNIT_Y) { + int scenelevel=0, objectlevel=0, idlevel=0, datalevel=0; + TreeStoreElem *tselem= TREESTORE(te); + + /* select object that's clicked on and popup context menu */ + if (!(tselem->flag & TSE_SELECTED)) { + + if ( outliner_has_one_flag(soops, &soops->tree, TSE_SELECTED, 1) ) + outliner_set_flag(soops, &soops->tree, TSE_SELECTED, 0); + + tselem->flag |= TSE_SELECTED; + /* redraw, same as outliner_select function */ + soops->storeflag |= SO_TREESTORE_REDRAW; + ED_region_tag_redraw(ar); + } + + set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); + + if(scenelevel) { + //if(objectlevel || datalevel || idlevel) error("Mixed selection"); + //else pupmenu("Scene Operations%t|Delete"); + } + else if(objectlevel) { + WM_operator_name_call(C, "OUTLINER_OT_object_operation", WM_OP_INVOKE_REGION_WIN, NULL); + } + else if(idlevel) { + if(idlevel==-1 || datalevel) BKE_report(reports, RPT_WARNING, "Mixed selection"); + else { + if (idlevel==ID_GR) + WM_operator_name_call(C, "OUTLINER_OT_group_operation", WM_OP_INVOKE_REGION_WIN, NULL); + else + WM_operator_name_call(C, "OUTLINER_OT_id_operation", WM_OP_INVOKE_REGION_WIN, NULL); + } + } + else if(datalevel) { + if(datalevel==-1) BKE_report(reports, RPT_WARNING, "Mixed selection"); + else { + if (datalevel == TSE_ANIM_DATA) + WM_operator_name_call(C, "OUTLINER_OT_animdata_operation", WM_OP_INVOKE_REGION_WIN, NULL); + else if (datalevel == TSE_DRIVER_BASE) + /* do nothing... no special ops needed yet */; + else + WM_operator_name_call(C, "OUTLINER_OT_data_operation", WM_OP_INVOKE_REGION_WIN, NULL); + } + } + + return 1; + } + + for(te= te->subtree.first; te; te= te->next) { + if(do_outliner_operation_event(C, scene, ar, soops, te, event, mval)) + return 1; + } + return 0; +} + + +static int outliner_operation(bContext *C, wmOperator *UNUSED(op), wmEvent *event) +{ + Scene *scene= CTX_data_scene(C); + ARegion *ar= CTX_wm_region(C); + SpaceOops *soops= CTX_wm_space_outliner(C); + TreeElement *te; + float fmval[2]; + + UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1); + + for(te= soops->tree.first; te; te= te->next) { + if(do_outliner_operation_event(C, scene, ar, soops, te, event, fmval)) break; + } + + return OPERATOR_FINISHED; +} + +/* Menu only! Calls other operators */ +void OUTLINER_OT_operation(wmOperatorType *ot) +{ + ot->name= "Execute Operation"; + ot->idname= "OUTLINER_OT_operation"; + ot->description= "Context menu for item operations"; + + ot->invoke= outliner_operation; + + ot->poll= ED_operator_outliner_active; +} + +/* ****************************************************** */ diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c new file mode 100644 index 00000000000..3560bfb9896 --- /dev/null +++ b/source/blender/editors/space_outliner/outliner_tree.c @@ -0,0 +1,1585 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2004 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Joshua Leung + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/editors/space_outliner/outliner_tree.c + * \ingroup spoutliner + */ + +#include +#include +#include +#include + +#include "MEM_guardedalloc.h" + +#include "DNA_anim_types.h" +#include "DNA_armature_types.h" +#include "DNA_constraint_types.h" +#include "DNA_camera_types.h" +#include "DNA_group_types.h" +#include "DNA_key_types.h" +#include "DNA_lamp_types.h" +#include "DNA_material_types.h" +#include "DNA_mesh_types.h" +#include "DNA_meta_types.h" +#include "DNA_particle_types.h" +#include "DNA_scene_types.h" +#include "DNA_world_types.h" +#include "DNA_sequence_types.h" + +#if 0 // GSOC_PEPPER + +#include "DNA_speaker_types.h" + +#endif // GSOC_PEPPER + +#include "DNA_object_types.h" + +#include "BLI_blenlib.h" +#include "BLI_utildefines.h" +#include "BLI_math_base.h" + +#if defined WIN32 && !defined _LIBC +# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ +#else +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif +# include +#endif + + +#include "BKE_animsys.h" +#include "BKE_context.h" +#include "BKE_deform.h" +#include "BKE_depsgraph.h" +#include "BKE_fcurve.h" +#include "BKE_global.h" +#include "BKE_group.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_modifier.h" +#include "BKE_report.h" +#include "BKE_scene.h" +#include "BKE_sequencer.h" + +#include "ED_armature.h" +#include "ED_object.h" +#include "ED_screen.h" +#include "ED_util.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "BIF_gl.h" +#include "BIF_glutil.h" + +#include "UI_interface.h" +#include "UI_interface_icons.h" +#include "UI_resources.h" +#include "UI_view2d.h" + +#include "RNA_access.h" +#include "RNA_define.h" +#include "RNA_enum_types.h" + +#include "outliner_intern.h" + +/* ********************************************************* */ +/* Defines */ + +#define TS_CHUNK 128 + +/* ********************************************************* */ +/* Persistant Data */ + +static void outliner_storage_cleanup(SpaceOops *soops) +{ + TreeStore *ts= soops->treestore; + + if(ts) { + TreeStoreElem *tselem; + int a, unused= 0; + + /* each element used once, for ID blocks with more users to have each a treestore */ + for(a=0, tselem= ts->data; ausedelem; a++, tselem++) tselem->used= 0; + + /* cleanup only after reading file or undo step, and always for + * RNA datablocks view in order to save memory */ + if(soops->storeflag & SO_TREESTORE_CLEANUP) { + + for(a=0, tselem= ts->data; ausedelem; a++, tselem++) { + if(tselem->id==NULL) unused++; + } + + if(unused) { + if(ts->usedelem == unused) { + MEM_freeN(ts->data); + ts->data= NULL; + ts->usedelem= ts->totelem= 0; + } + else { + TreeStoreElem *tsnewar, *tsnew; + + tsnew=tsnewar= MEM_mallocN((ts->usedelem-unused)*sizeof(TreeStoreElem), "new tselem"); + for(a=0, tselem= ts->data; ausedelem; a++, tselem++) { + if(tselem->id) { + *tsnew= *tselem; + tsnew++; + } + } + MEM_freeN(ts->data); + ts->data= tsnewar; + ts->usedelem-= unused; + ts->totelem= ts->usedelem; + } + } + } + } +} + +static void check_persistant(SpaceOops *soops, TreeElement *te, ID *id, short type, short nr) +{ + TreeStore *ts; + TreeStoreElem *tselem; + int a; + + /* case 1; no TreeStore */ + if(soops->treestore==NULL) { + soops->treestore= MEM_callocN(sizeof(TreeStore), "treestore"); + } + ts= soops->treestore; + + /* check if 'te' is in treestore */ + tselem= ts->data; + for(a=0; ausedelem; a++, tselem++) { + if(tselem->id==id && tselem->used==0) { + if((type==0 && tselem->type==0) ||(tselem->type==type && tselem->nr==nr)) { + te->store_index= a; + tselem->used= 1; + return; + } + } + } + + /* add 1 element to treestore */ + if(ts->usedelem==ts->totelem) { + TreeStoreElem *tsnew; + + tsnew= MEM_mallocN((ts->totelem+TS_CHUNK)*sizeof(TreeStoreElem), "treestore data"); + if(ts->data) { + memcpy(tsnew, ts->data, ts->totelem*sizeof(TreeStoreElem)); + MEM_freeN(ts->data); + } + ts->data= tsnew; + ts->totelem+= TS_CHUNK; + } + + tselem= ts->data+ts->usedelem; + + tselem->type= type; + if(type) tselem->nr= nr; // we're picky! :) + else tselem->nr= 0; + tselem->id= id; + tselem->used = 0; + tselem->flag= TSE_CLOSED; + te->store_index= ts->usedelem; + + ts->usedelem++; +} + +/* ********************************************************* */ +/* Tree Management */ + +void outliner_free_tree(ListBase *lb) +{ + while(lb->first) { + TreeElement *te= lb->first; + + outliner_free_tree(&te->subtree); + BLI_remlink(lb, te); + + if(te->flag & TE_FREE_NAME) MEM_freeN((void *)te->name); + MEM_freeN(te); + } +} + +/* Find ith item from the treestore */ +TreeElement *outliner_find_tree_element(ListBase *lb, int store_index) +{ + TreeElement *te= lb->first, *tes; + while(te) { + if(te->store_index==store_index) return te; + tes= outliner_find_tree_element(&te->subtree, store_index); + if(tes) return tes; + te= te->next; + } + return NULL; +} + +/* tse is not in the treestore, we use its contents to find a match */ +TreeElement *outliner_find_tse(SpaceOops *soops, TreeStoreElem *tse) +{ + TreeStore *ts= soops->treestore; + TreeStoreElem *tselem; + int a; + + if(tse->id==NULL) return NULL; + + /* check if 'tse' is in treestore */ + tselem= ts->data; + for(a=0; ausedelem; a++, tselem++) { + if((tse->type==0 && tselem->type==0) || (tselem->type==tse->type && tselem->nr==tse->nr)) { + if(tselem->id==tse->id) { + break; + } + } + } + if(tselem) + return outliner_find_tree_element(&soops->tree, a); + + return NULL; +} + +/* Find treestore that refers to given ID */ +TreeElement *outliner_find_id(SpaceOops *soops, ListBase *lb, ID *id) +{ + TreeElement *te, *tes; + TreeStoreElem *tselem; + + for(te= lb->first; te; te= te->next) { + tselem= TREESTORE(te); + if(tselem->type==0) { + if(tselem->id==id) return te; + /* only deeper on scene or object */ + if( te->idcode==ID_OB || te->idcode==ID_SCE || (soops->outlinevis == SO_GROUPS && te->idcode==ID_GR)) { + tes= outliner_find_id(soops, &te->subtree, id); + if(tes) return tes; + } + } + } + return NULL; +} + + +ID *outliner_search_back(SpaceOops *soops, TreeElement *te, short idcode) +{ + TreeStoreElem *tselem; + te= te->parent; + + while(te) { + tselem= TREESTORE(te); + if(tselem->type==0 && te->idcode==idcode) return tselem->id; + te= te->parent; + } + return NULL; +} + + +/* ********************************************************* */ + +/* Prototype, see functions below */ +static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *idv, + TreeElement *parent, short type, short index); + +/* -------------------------------------------------------- */ + +/* special handling of hierarchical non-lib data */ +static void outliner_add_bone(SpaceOops *soops, ListBase *lb, ID *id, Bone *curBone, + TreeElement *parent, int *a) +{ + TreeElement *te= outliner_add_element(soops, lb, id, parent, TSE_BONE, *a); + + (*a)++; + te->name= curBone->name; + te->directdata= curBone; + + for(curBone= curBone->childbase.first; curBone; curBone=curBone->next) { + outliner_add_bone(soops, &te->subtree, id, curBone, te, a); + } +} + +/* -------------------------------------------------------- */ + +#define LOG2I(x) (int)(log(x)/M_LN2) + +static void outliner_add_passes(SpaceOops *soops, TreeElement *tenla, ID *id, SceneRenderLayer *srl) +{ + TreeStoreElem *tselem = NULL; + TreeElement *te = NULL; + + /* log stuff is to convert bitflags (powers of 2) to small integers, + * in order to not overflow short tselem->nr */ + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_COMBINED)); + te->name= "Combined"; + te->directdata= &srl->passflag; + + /* save cpu cycles, but we add the first to invoke an open/close triangle */ + tselem = TREESTORE(tenla); + if(tselem->flag & TSE_CLOSED) + return; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_Z)); + te->name= "Z"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_VECTOR)); + te->name= "Vector"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_NORMAL)); + te->name= "Normal"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_UV)); + te->name= "UV"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_MIST)); + te->name= "Mist"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDEXOB)); + te->name= "Index Object"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDEXMA)); + te->name= "Index Material"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_RGBA)); + te->name= "Color"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_DIFFUSE)); + te->name= "Diffuse"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_SPEC)); + te->name= "Specular"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_SHADOW)); + te->name= "Shadow"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_AO)); + te->name= "AO"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_REFLECT)); + te->name= "Reflection"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_REFRACT)); + te->name= "Refraction"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDIRECT)); + te->name= "Indirect"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_ENVIRONMENT)); + te->name= "Environment"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_EMIT)); + te->name= "Emit"; + te->directdata= &srl->passflag; +} + +#undef LOG2I + +static void outliner_add_scene_contents(SpaceOops *soops, ListBase *lb, Scene *sce, TreeElement *te) +{ + SceneRenderLayer *srl; + TreeElement *tenla= outliner_add_element(soops, lb, sce, te, TSE_R_LAYER_BASE, 0); + int a; + + tenla->name= "RenderLayers"; + for(a=0, srl= sce->r.layers.first; srl; srl= srl->next, a++) { + TreeElement *tenlay= outliner_add_element(soops, &tenla->subtree, sce, te, TSE_R_LAYER, a); + tenlay->name= srl->name; + tenlay->directdata= &srl->passflag; + + if(srl->light_override) + outliner_add_element(soops, &tenlay->subtree, srl->light_override, tenlay, TSE_LINKED_LAMP, 0); + if(srl->mat_override) + outliner_add_element(soops, &tenlay->subtree, srl->mat_override, tenlay, TSE_LINKED_MAT, 0); + + outliner_add_passes(soops, tenlay, &sce->id, srl); + } + + // TODO: move this to the front? + if (sce->adt) + outliner_add_element(soops, lb, sce, te, TSE_ANIM_DATA, 0); + + outliner_add_element(soops, lb, sce->world, te, 0, 0); +} + +// can be inlined if necessary +static void outliner_add_object_contents(SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, Object *ob) +{ + int a = 0; + + if (ob->adt) + outliner_add_element(soops, &te->subtree, ob, te, TSE_ANIM_DATA, 0); + + outliner_add_element(soops, &te->subtree, ob->poselib, te, 0, 0); // XXX FIXME.. add a special type for this + + if (ob->proxy && ob->id.lib==NULL) + outliner_add_element(soops, &te->subtree, ob->proxy, te, TSE_PROXY, 0); + + outliner_add_element(soops, &te->subtree, ob->data, te, 0, 0); + + if (ob->pose) { + bArmature *arm= ob->data; + bPoseChannel *pchan; + TreeElement *ten; + TreeElement *tenla= outliner_add_element(soops, &te->subtree, ob, te, TSE_POSE_BASE, 0); + + tenla->name= "Pose"; + + /* channels undefined in editmode, but we want the 'tenla' pose icon itself */ + if ((arm->edbo == NULL) && (ob->mode & OB_MODE_POSE)) { + int a= 0, const_index= 1000; /* ensure unique id for bone constraints */ + + for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next, a++) { + ten= outliner_add_element(soops, &tenla->subtree, ob, tenla, TSE_POSE_CHANNEL, a); + ten->name= pchan->name; + ten->directdata= pchan; + pchan->prev= (bPoseChannel *)ten; + + if(pchan->constraints.first) { + //Object *target; + bConstraint *con; + TreeElement *ten1; + TreeElement *tenla1= outliner_add_element(soops, &ten->subtree, ob, ten, TSE_CONSTRAINT_BASE, 0); + //char *str; + + tenla1->name= "Constraints"; + for(con= pchan->constraints.first; con; con= con->next, const_index++) { + ten1= outliner_add_element(soops, &tenla1->subtree, ob, tenla1, TSE_CONSTRAINT, const_index); +#if 0 /* disabled as it needs to be reworked for recoded constraints system */ + target= get_constraint_target(con, &str); + if(str && str[0]) ten1->name= str; + else if(target) ten1->name= target->id.name+2; + else ten1->name= con->name; +#endif + ten1->name= con->name; + ten1->directdata= con; + /* possible add all other types links? */ + } + } + } + /* make hierarchy */ + ten= tenla->subtree.first; + while(ten) { + TreeElement *nten= ten->next, *par; + tselem= TREESTORE(ten); + if(tselem->type==TSE_POSE_CHANNEL) { + pchan= (bPoseChannel *)ten->directdata; + if(pchan->parent) { + BLI_remlink(&tenla->subtree, ten); + par= (TreeElement *)pchan->parent->prev; + BLI_addtail(&par->subtree, ten); + ten->parent= par; + } + } + ten= nten; + } + /* restore prev pointers */ + pchan= ob->pose->chanbase.first; + if(pchan) pchan->prev= NULL; + for(; pchan; pchan= pchan->next) { + if(pchan->next) pchan->next->prev= pchan; + } + } + + /* Pose Groups */ + if(ob->pose->agroups.first) { + bActionGroup *agrp; + TreeElement *ten; + TreeElement *tenla= outliner_add_element(soops, &te->subtree, ob, te, TSE_POSEGRP_BASE, 0); + int a= 0; + + tenla->name= "Bone Groups"; + for (agrp=ob->pose->agroups.first; agrp; agrp=agrp->next, a++) { + ten= outliner_add_element(soops, &tenla->subtree, ob, tenla, TSE_POSEGRP, a); + ten->name= agrp->name; + ten->directdata= agrp; + } + } + } + + for(a=0; atotcol; a++) + outliner_add_element(soops, &te->subtree, ob->mat[a], te, 0, a); + + if(ob->constraints.first) { + //Object *target; + bConstraint *con; + TreeElement *ten; + TreeElement *tenla= outliner_add_element(soops, &te->subtree, ob, te, TSE_CONSTRAINT_BASE, 0); + //char *str; + + tenla->name= "Constraints"; + for (con=ob->constraints.first, a=0; con; con= con->next, a++) { + ten= outliner_add_element(soops, &tenla->subtree, ob, tenla, TSE_CONSTRAINT, a); +#if 0 /* disabled due to constraints system targets recode... code here needs review */ + target= get_constraint_target(con, &str); + if(str && str[0]) ten->name= str; + else if(target) ten->name= target->id.name+2; + else ten->name= con->name; +#endif + ten->name= con->name; + ten->directdata= con; + /* possible add all other types links? */ + } + } + + if (ob->modifiers.first) { + ModifierData *md; + TreeElement *temod = outliner_add_element(soops, &te->subtree, ob, te, TSE_MODIFIER_BASE, 0); + int index; + + temod->name = "Modifiers"; + for (index=0,md=ob->modifiers.first; md; index++,md=md->next) { + TreeElement *te = outliner_add_element(soops, &temod->subtree, ob, temod, TSE_MODIFIER, index); + te->name= md->name; + te->directdata = md; + + if (md->type==eModifierType_Lattice) { + outliner_add_element(soops, &te->subtree, ((LatticeModifierData*) md)->object, te, TSE_LINKED_OB, 0); + } + else if (md->type==eModifierType_Curve) { + outliner_add_element(soops, &te->subtree, ((CurveModifierData*) md)->object, te, TSE_LINKED_OB, 0); + } + else if (md->type==eModifierType_Armature) { + outliner_add_element(soops, &te->subtree, ((ArmatureModifierData*) md)->object, te, TSE_LINKED_OB, 0); + } + else if (md->type==eModifierType_Hook) { + outliner_add_element(soops, &te->subtree, ((HookModifierData*) md)->object, te, TSE_LINKED_OB, 0); + } + else if (md->type==eModifierType_ParticleSystem) { + TreeElement *ten; + ParticleSystem *psys= ((ParticleSystemModifierData*) md)->psys; + + ten = outliner_add_element(soops, &te->subtree, ob, te, TSE_LINKED_PSYS, 0); + ten->directdata = psys; + ten->name = psys->part->id.name+2; + } + } + } + + /* vertex groups */ + if (ob->defbase.first) { + bDeformGroup *defgroup; + TreeElement *ten; + TreeElement *tenla= outliner_add_element(soops, &te->subtree, ob, te, TSE_DEFGROUP_BASE, 0); + + tenla->name= "Vertex Groups"; + for (defgroup=ob->defbase.first, a=0; defgroup; defgroup=defgroup->next, a++) { + ten= outliner_add_element(soops, &tenla->subtree, ob, tenla, TSE_DEFGROUP, a); + ten->name= defgroup->name; + ten->directdata= defgroup; + } + } + + /* duplicated group */ + if (ob->dup_group) + outliner_add_element(soops, &te->subtree, ob->dup_group, te, 0, 0); +} + +// can be inlined if necessary +static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, ID *id) +{ + /* tuck pointer back in object, to construct hierarchy */ + if (GS(id->name)==ID_OB) id->newid= (ID *)te; + + /* expand specific data always */ + switch (GS(id->name)) { + case ID_LI: + { + te->name= ((Library *)id)->name; + } + break; + case ID_SCE: + { + outliner_add_scene_contents(soops, &te->subtree, (Scene *)id, te); + } + break; + case ID_OB: + { + outliner_add_object_contents(soops, te, tselem, (Object *)id); + } + break; + case ID_ME: + { + Mesh *me= (Mesh *)id; + int a; + + if (me->adt) + outliner_add_element(soops, &te->subtree, me, te, TSE_ANIM_DATA, 0); + + outliner_add_element(soops, &te->subtree, me->key, te, 0, 0); + for(a=0; atotcol; a++) + outliner_add_element(soops, &te->subtree, me->mat[a], te, 0, a); + /* could do tfaces with image links, but the images are not grouped nicely. + would require going over all tfaces, sort images in use. etc... */ + } + break; + case ID_CU: + { + Curve *cu= (Curve *)id; + int a; + + if (cu->adt) + outliner_add_element(soops, &te->subtree, cu, te, TSE_ANIM_DATA, 0); + + for(a=0; atotcol; a++) + outliner_add_element(soops, &te->subtree, cu->mat[a], te, 0, a); + } + break; + case ID_MB: + { + MetaBall *mb= (MetaBall *)id; + int a; + + if (mb->adt) + outliner_add_element(soops, &te->subtree, mb, te, TSE_ANIM_DATA, 0); + + for(a=0; atotcol; a++) + outliner_add_element(soops, &te->subtree, mb->mat[a], te, 0, a); + } + break; + case ID_MA: + { + Material *ma= (Material *)id; + int a; + + if (ma->adt) + outliner_add_element(soops, &te->subtree, ma, te, TSE_ANIM_DATA, 0); + + for(a=0; amtex[a]) outliner_add_element(soops, &te->subtree, ma->mtex[a]->tex, te, 0, a); + } + } + break; + case ID_TE: + { + Tex *tex= (Tex *)id; + + if (tex->adt) + outliner_add_element(soops, &te->subtree, tex, te, TSE_ANIM_DATA, 0); + + outliner_add_element(soops, &te->subtree, tex->ima, te, 0, 0); + } + break; + case ID_CA: + { + Camera *ca= (Camera *)id; + + if (ca->adt) + outliner_add_element(soops, &te->subtree, ca, te, TSE_ANIM_DATA, 0); + } + break; + case ID_LA: + { + Lamp *la= (Lamp *)id; + int a; + + if (la->adt) + outliner_add_element(soops, &te->subtree, la, te, TSE_ANIM_DATA, 0); + + for(a=0; amtex[a]) outliner_add_element(soops, &te->subtree, la->mtex[a]->tex, te, 0, a); + } + } + break; + +#if 0 // GSOC_PEPPER + + case ID_SPK: + { + Speaker *spk= (Speaker *)id; + + if(spk->adt) + outliner_add_element(soops, &te->subtree, spk, te, TSE_ANIM_DATA, 0); + } + break; + +#endif // GSOC_PEPPER + + case ID_WO: + { + World *wrld= (World *)id; + int a; + + if (wrld->adt) + outliner_add_element(soops, &te->subtree, wrld, te, TSE_ANIM_DATA, 0); + + for(a=0; amtex[a]) outliner_add_element(soops, &te->subtree, wrld->mtex[a]->tex, te, 0, a); + } + } + break; + case ID_KE: + { + Key *key= (Key *)id; + + if (key->adt) + outliner_add_element(soops, &te->subtree, key, te, TSE_ANIM_DATA, 0); + } + break; + case ID_AC: + { + // XXX do we want to be exposing the F-Curves here? + //bAction *act= (bAction *)id; + } + break; + case ID_AR: + { + bArmature *arm= (bArmature *)id; + int a= 0; + + if (arm->adt) + outliner_add_element(soops, &te->subtree, arm, te, TSE_ANIM_DATA, 0); + + if(arm->edbo) { + EditBone *ebone; + TreeElement *ten; + + for (ebone = arm->edbo->first; ebone; ebone=ebone->next, a++) { + ten= outliner_add_element(soops, &te->subtree, id, te, TSE_EBONE, a); + ten->directdata= ebone; + ten->name= ebone->name; + ebone->temp= ten; + } + /* make hierarchy */ + ten= te->subtree.first; + while(ten) { + TreeElement *nten= ten->next, *par; + ebone= (EditBone *)ten->directdata; + if(ebone->parent) { + BLI_remlink(&te->subtree, ten); + par= ebone->parent->temp; + BLI_addtail(&par->subtree, ten); + ten->parent= par; + } + ten= nten; + } + } + else { + /* do not extend Armature when we have posemode */ + tselem= TREESTORE(te->parent); + if( GS(tselem->id->name)==ID_OB && ((Object *)tselem->id)->mode & OB_MODE_POSE); + else { + Bone *curBone; + for (curBone=arm->bonebase.first; curBone; curBone=curBone->next){ + outliner_add_bone(soops, &te->subtree, id, curBone, te, &a); + } + } + } + } + break; + } +} + +// TODO: this function needs to be split up! It's getting a bit too large... +static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *idv, + TreeElement *parent, short type, short index) +{ + TreeElement *te; + TreeStoreElem *tselem; + ID *id= idv; + int a = 0; + + if(ELEM3(type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) { + id= ((PointerRNA*)idv)->id.data; + if(!id) id= ((PointerRNA*)idv)->data; + } + + if(id==NULL) return NULL; + + te= MEM_callocN(sizeof(TreeElement), "tree elem"); + /* add to the visual tree */ + BLI_addtail(lb, te); + /* add to the storage */ + check_persistant(soops, te, id, type, index); + tselem= TREESTORE(te); + + te->parent= parent; + te->index= index; // for data arays + if(ELEM3(type, TSE_SEQUENCE, TSE_SEQ_STRIP, TSE_SEQUENCE_DUP)); + else if(ELEM3(type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)); + else if(type==TSE_ANIM_DATA); + else { + te->name= id->name+2; // default, can be overridden by Library or non-ID data + te->idcode= GS(id->name); + } + + if(type==0) { + /* ID datablock */ + outliner_add_id_contents(soops, te, tselem, id); + } + else if(type==TSE_ANIM_DATA) { + IdAdtTemplate *iat = (IdAdtTemplate *)idv; + AnimData *adt= (AnimData *)iat->adt; + + /* this element's info */ + te->name= "Animation"; + te->directdata= adt; + + /* Action */ + outliner_add_element(soops, &te->subtree, adt->action, te, 0, 0); + + /* Drivers */ + if (adt->drivers.first) { + TreeElement *ted= outliner_add_element(soops, &te->subtree, adt, te, TSE_DRIVER_BASE, 0); + ID *lastadded= NULL; + FCurve *fcu; + + ted->name= "Drivers"; + + for (fcu= adt->drivers.first; fcu; fcu= fcu->next) { + if (fcu->driver && fcu->driver->variables.first) { + ChannelDriver *driver= fcu->driver; + DriverVar *dvar; + + for (dvar= driver->variables.first; dvar; dvar= dvar->next) { + /* loop over all targets used here */ + DRIVER_TARGETS_USED_LOOPER(dvar) + { + if (lastadded != dtar->id) { + // XXX this lastadded check is rather lame, and also fails quite badly... + outliner_add_element(soops, &ted->subtree, dtar->id, ted, TSE_LINKED_OB, 0); + lastadded= dtar->id; + } + } + DRIVER_TARGETS_LOOPER_END + } + } + } + } + + /* NLA Data */ + if (adt->nla_tracks.first) { + TreeElement *tenla= outliner_add_element(soops, &te->subtree, adt, te, TSE_NLA, 0); + NlaTrack *nlt; + int a= 0; + + tenla->name= "NLA Tracks"; + + for (nlt= adt->nla_tracks.first; nlt; nlt= nlt->next) { + TreeElement *tenlt= outliner_add_element(soops, &tenla->subtree, nlt, tenla, TSE_NLA_TRACK, a); + NlaStrip *strip; + TreeElement *ten; + int b= 0; + + tenlt->name= nlt->name; + + for (strip=nlt->strips.first; strip; strip=strip->next, b++) { + ten= outliner_add_element(soops, &tenlt->subtree, strip->act, tenlt, TSE_NLA_ACTION, b); + if(ten) ten->directdata= strip; + } + } + } + } + else if(type==TSE_SEQUENCE) { + Sequence *seq= (Sequence*) idv; + Sequence *p; + + /* + * The idcode is a little hack, but the outliner + * only check te->idcode if te->type is equal to zero, + * so this is "safe". + */ + te->idcode= seq->type; + te->directdata= seq; + + if(seq->type<7) { + /* + * This work like the sequence. + * If the sequence have a name (not default name) + * show it, in other case put the filename. + */ + if(strcmp(seq->name, "SQ")) + te->name= seq->name; + else { + if((seq->strip) && (seq->strip->stripdata)) + te->name= seq->strip->stripdata->name; + else + te->name= "SQ None"; + } + + if(seq->type==SEQ_META) { + te->name= "Meta Strip"; + p= seq->seqbase.first; + while(p) { + outliner_add_element(soops, &te->subtree, (void*)p, te, TSE_SEQUENCE, index); + p= p->next; + } + } + else + outliner_add_element(soops, &te->subtree, (void*)seq->strip, te, TSE_SEQ_STRIP, index); + } + else + te->name= "Effect"; + } + else if(type==TSE_SEQ_STRIP) { + Strip *strip= (Strip *)idv; + + if(strip->dir) + te->name= strip->dir; + else + te->name= "Strip None"; + te->directdata= strip; + } + else if(type==TSE_SEQUENCE_DUP) { + Sequence *seq= (Sequence*)idv; + + te->idcode= seq->type; + te->directdata= seq; + te->name= seq->strip->stripdata->name; + } + else if(ELEM3(type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) { + PointerRNA pptr, propptr, *ptr= (PointerRNA*)idv; + PropertyRNA *prop, *iterprop; + PropertyType proptype; + int a, tot; + + /* we do lazy build, for speed and to avoid infinite recusion */ + + if(ptr->data == NULL) { + te->name= "(empty)"; + } + else if(type == TSE_RNA_STRUCT) { + /* struct */ + te->name= RNA_struct_name_get_alloc(ptr, NULL, 0); + + if(te->name) + te->flag |= TE_FREE_NAME; + else + te->name= (char*)RNA_struct_ui_name(ptr->type); + + iterprop= RNA_struct_iterator_property(ptr->type); + tot= RNA_property_collection_length(ptr, iterprop); + + /* auto open these cases */ + if(!parent || (RNA_property_type(parent->directdata)) == PROP_POINTER) + if(!tselem->used) + tselem->flag &= ~TSE_CLOSED; + + if(!(tselem->flag & TSE_CLOSED)) { + for(a=0; asubtree, (void*)ptr, te, TSE_RNA_PROPERTY, a); + } + else if(tot) + te->flag |= TE_LAZY_CLOSED; + + te->rnaptr= *ptr; + } + else if(type == TSE_RNA_PROPERTY) { + /* property */ + iterprop= RNA_struct_iterator_property(ptr->type); + RNA_property_collection_lookup_int(ptr, iterprop, index, &propptr); + + prop= propptr.data; + proptype= RNA_property_type(prop); + + te->name= (char*)RNA_property_ui_name(prop); + te->directdata= prop; + te->rnaptr= *ptr; + + if(proptype == PROP_POINTER) { + pptr= RNA_property_pointer_get(ptr, prop); + + if(pptr.data) { + if(!(tselem->flag & TSE_CLOSED)) + outliner_add_element(soops, &te->subtree, (void*)&pptr, te, TSE_RNA_STRUCT, -1); + else + te->flag |= TE_LAZY_CLOSED; + } + } + else if(proptype == PROP_COLLECTION) { + tot= RNA_property_collection_length(ptr, prop); + + if(!(tselem->flag & TSE_CLOSED)) { + for(a=0; asubtree, (void*)&pptr, te, TSE_RNA_STRUCT, a); + } + } + else if(tot) + te->flag |= TE_LAZY_CLOSED; + } + else if(ELEM3(proptype, PROP_BOOLEAN, PROP_INT, PROP_FLOAT)) { + tot= RNA_property_array_length(ptr, prop); + + if(!(tselem->flag & TSE_CLOSED)) { + for(a=0; asubtree, (void*)ptr, te, TSE_RNA_ARRAY_ELEM, a); + } + else if(tot) + te->flag |= TE_LAZY_CLOSED; + } + } + else if(type == TSE_RNA_ARRAY_ELEM) { + char c; + + prop= parent->directdata; + + te->directdata= prop; + te->rnaptr= *ptr; + te->index= index; + + c= RNA_property_array_item_char(prop, index); + + te->name= MEM_callocN(sizeof(char)*20, "OutlinerRNAArrayName"); + if(c) sprintf((char *)te->name, " %c", c); + else sprintf((char *)te->name, " %d", index+1); + te->flag |= TE_FREE_NAME; + } + } + else if(type == TSE_KEYMAP) { + wmKeyMap *km= (wmKeyMap *)idv; + wmKeyMapItem *kmi; + char opname[OP_MAX_TYPENAME]; + + te->directdata= idv; + te->name= km->idname; + + if(!(tselem->flag & TSE_CLOSED)) { + a= 0; + + for (kmi= km->items.first; kmi; kmi= kmi->next, a++) { + const char *key= WM_key_event_string(kmi->type); + + if(key[0]) { + wmOperatorType *ot= NULL; + + if(kmi->propvalue); + else ot= WM_operatortype_find(kmi->idname, 0); + + if(ot || kmi->propvalue) { + TreeElement *ten= outliner_add_element(soops, &te->subtree, kmi, te, TSE_KEYMAP_ITEM, a); + + ten->directdata= kmi; + + if(kmi->propvalue) { + ten->name= "Modal map, not yet"; + } + else { + WM_operator_py_idname(opname, ot->idname); + ten->name= BLI_strdup(opname); + ten->flag |= TE_FREE_NAME; + } + } + } + } + } + else + te->flag |= TE_LAZY_CLOSED; + } + + return te; +} + +/* ======================================================= */ +/* Sequencer mode tree building */ + +/* Helped function to put duplicate sequence in the same tree. */ +static int need_add_seq_dup(Sequence *seq) +{ + Sequence *p; + + if((!seq->strip) || (!seq->strip->stripdata) || (!seq->strip->stripdata->name)) + return(1); + + /* + * First check backward, if we found a duplicate + * sequence before this, don't need it, just return. + */ + p= seq->prev; + while(p) { + if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) { + p= p->prev; + continue; + } + + if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name)) + return(2); + p= p->prev; + } + + p= seq->next; + while(p) { + if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) { + p= p->next; + continue; + } + + if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name)) + return(0); + p= p->next; + } + return(1); +} + +static void outliner_add_seq_dup(SpaceOops *soops, Sequence *seq, TreeElement *te, short index) +{ + TreeElement *ch; + Sequence *p; + + p= seq; + while(p) { + if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) { + p= p->next; + continue; + } + + if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name)) + ch= outliner_add_element(soops, &te->subtree, (void*)p, te, TSE_SEQUENCE, index); + p= p->next; + } +} + +/* ======================================================= */ +/* Generic Tree Building helpers - order these are called is top to bottom */ + +/* Hierarchy --------------------------------------------- */ + +/* make sure elements are correctly nested */ +static void outliner_make_hierarchy(SpaceOops *soops, ListBase *lb) +{ + TreeElement *te, *ten, *tep; + TreeStoreElem *tselem; + + /* build hierarchy */ + // XXX also, set extents here... + te= lb->first; + while(te) { + ten= te->next; + tselem= TREESTORE(te); + + if(tselem->type==0 && te->idcode==ID_OB) { + Object *ob= (Object *)tselem->id; + if(ob->parent && ob->parent->id.newid) { + BLI_remlink(lb, te); + tep= (TreeElement *)ob->parent->id.newid; + BLI_addtail(&tep->subtree, te); + // set correct parent pointers + for(te=tep->subtree.first; te; te= te->next) te->parent= tep; + } + } + te= ten; + } +} + +/* Sorting ------------------------------------------------------ */ + +typedef struct tTreeSort { + TreeElement *te; + ID *id; + const char *name; + short idcode; +} tTreeSort; + +/* alphabetical comparator */ +static int treesort_alpha(const void *v1, const void *v2) +{ + const tTreeSort *x1= v1, *x2= v2; + int comp; + + /* first put objects last (hierarchy) */ + comp= (x1->idcode==ID_OB); + if(x2->idcode==ID_OB) comp+=2; + + if(comp==1) return 1; + else if(comp==2) return -1; + else if(comp==3) { + comp= strcmp(x1->name, x2->name); + + if( comp>0 ) return 1; + else if( comp<0) return -1; + return 0; + } + return 0; +} + +/* this is nice option for later? doesnt look too useful... */ +#if 0 +static int treesort_obtype_alpha(const void *v1, const void *v2) +{ + const tTreeSort *x1= v1, *x2= v2; + + /* first put objects last (hierarchy) */ + if(x1->idcode==ID_OB && x2->idcode!=ID_OB) return 1; + else if(x2->idcode==ID_OB && x1->idcode!=ID_OB) return -1; + else { + /* 2nd we check ob type */ + if(x1->idcode==ID_OB && x2->idcode==ID_OB) { + if( ((Object *)x1->id)->type > ((Object *)x2->id)->type) return 1; + else if( ((Object *)x1->id)->type > ((Object *)x2->id)->type) return -1; + else return 0; + } + else { + int comp= strcmp(x1->name, x2->name); + + if( comp>0 ) return 1; + else if( comp<0) return -1; + return 0; + } + } +} +#endif + +/* sort happens on each subtree individual */ +static void outliner_sort(SpaceOops *soops, ListBase *lb) +{ + TreeElement *te; + TreeStoreElem *tselem; + int totelem=0; + + te= lb->last; + if(te==NULL) return; + tselem= TREESTORE(te); + + /* sorting rules; only object lists or deformgroups */ + if( (tselem->type==TSE_DEFGROUP) || (tselem->type==0 && te->idcode==ID_OB)) { + + /* count first */ + for(te= lb->first; te; te= te->next) totelem++; + + if(totelem>1) { + tTreeSort *tear= MEM_mallocN(totelem*sizeof(tTreeSort), "tree sort array"); + tTreeSort *tp=tear; + int skip= 0; + + for(te= lb->first; te; te= te->next, tp++) { + tselem= TREESTORE(te); + tp->te= te; + tp->name= te->name; + tp->idcode= te->idcode; + if(tselem->type && tselem->type!=TSE_DEFGROUP) tp->idcode= 0; // dont sort this + tp->id= tselem->id; + } + /* keep beginning of list */ + for(tp= tear, skip=0; skipidcode) break; + + if(skipfirst=lb->last= NULL; + tp= tear; + while(totelem--) { + BLI_addtail(lb, tp->te); + tp++; + } + MEM_freeN(tear); + } + } + + for(te= lb->first; te; te= te->next) { + outliner_sort(soops, &te->subtree); + } +} + +/* Filtering ----------------------------------------------- */ + +static int outliner_filter_has_name(TreeElement *te, const char *name, int flags) +{ +#if 0 + int found= 0; + + /* determine if match */ + if (flags & SO_FIND_CASE_SENSITIVE) { + if (flags & SO_FIND_COMPLETE) + found= strcmp(te->name, name) == 0; + else + found= strstr(te->name, name) != NULL; + } + else { + if (flags & SO_FIND_COMPLETE) + found= BLI_strcasecmp(te->name, name) == 0; + else + found= BLI_strcasestr(te->name, name) != NULL; + } +#else + + int fn_flag= 0; + int found= 0; + + if ((flags & SO_FIND_CASE_SENSITIVE) == 0) + fn_flag |= FNM_CASEFOLD; + + if (flags & SO_FIND_COMPLETE) { + found= fnmatch(name, te->name, fn_flag)==0; + } + else { + char fn_name[sizeof(((struct SpaceOops *)NULL)->search_string) + 2]; + sprintf(fn_name, "*%s*", name); + found= fnmatch(fn_name, te->name, fn_flag)==0; + } + return found; +#endif +} + +static int outliner_filter_tree(SpaceOops *soops, ListBase *lb) +{ + TreeElement *te, *ten; + TreeStoreElem *tselem; + + /* although we don't have any search string, we return TRUE + * since the entire tree is ok then... + */ + if (soops->search_string[0]==0) + return 1; + + for (te= lb->first; te; te= ten) { + ten= te->next; + + if (0==outliner_filter_has_name(te, soops->search_string, soops->search_flags)) { + /* item isn't something we're looking for, but... + * - if the subtree is expanded, check if there are any matches that can be easily found + * so that searching for "cu" in the default scene will still match the Cube + * - otherwise, we can't see within the subtree and the item doesn't match, + * so these can be safely ignored (i.e. the subtree can get freed) + */ + tselem= TREESTORE(te); + + if ((tselem->flag & TSE_CLOSED) || outliner_filter_tree(soops, &te->subtree)==0) { + outliner_free_tree(&te->subtree); + BLI_remlink(lb, te); + + if(te->flag & TE_FREE_NAME) MEM_freeN((void *)te->name); + MEM_freeN(te); + } + } + else { + /* filter subtree too */ + outliner_filter_tree(soops, &te->subtree); + } + } + + /* if there are still items in the list, that means that there were still some matches */ + return (lb->first != NULL); +} + +/* ======================================================= */ +/* Main Tree Building API */ + +/* Main entry point for building the tree data-structure that the outliner represents */ +// TODO: split each mode into its own function? +void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops) +{ + Base *base; + Object *ob; + TreeElement *te=NULL, *ten; + TreeStoreElem *tselem; + int show_opened= (soops->treestore==NULL); /* on first view, we open scenes */ + + if(soops->tree.first && (soops->storeflag & SO_TREESTORE_REDRAW)) + return; + + outliner_free_tree(&soops->tree); + outliner_storage_cleanup(soops); + + /* clear ob id.new flags */ + for(ob= mainvar->object.first; ob; ob= ob->id.next) ob->id.newid= NULL; + + /* options */ + if(soops->outlinevis == SO_LIBRARIES) { + Library *lib; + + for(lib= mainvar->library.first; lib; lib= lib->id.next) { + ten= outliner_add_element(soops, &soops->tree, lib, NULL, 0, 0); + lib->id.newid= (ID *)ten; + } + /* make hierarchy */ + ten= soops->tree.first; + while(ten) { + TreeElement *nten= ten->next, *par; + tselem= TREESTORE(ten); + lib= (Library *)tselem->id; + if(lib->parent) { + BLI_remlink(&soops->tree, ten); + par= (TreeElement *)lib->parent->id.newid; + BLI_addtail(&par->subtree, ten); + ten->parent= par; + } + ten= nten; + } + /* restore newid pointers */ + for(lib= mainvar->library.first; lib; lib= lib->id.next) + lib->id.newid= NULL; + + } + else if(soops->outlinevis == SO_ALL_SCENES) { + Scene *sce; + for(sce= mainvar->scene.first; sce; sce= sce->id.next) { + te= outliner_add_element(soops, &soops->tree, sce, NULL, 0, 0); + tselem= TREESTORE(te); + if(sce==scene && show_opened) + tselem->flag &= ~TSE_CLOSED; + + for(base= sce->base.first; base; base= base->next) { + ten= outliner_add_element(soops, &te->subtree, base->object, te, 0, 0); + ten->directdata= base; + } + outliner_make_hierarchy(soops, &te->subtree); + /* clear id.newid, to prevent objects be inserted in wrong scenes (parent in other scene) */ + for(base= sce->base.first; base; base= base->next) base->object->id.newid= NULL; + } + } + else if(soops->outlinevis == SO_CUR_SCENE) { + + outliner_add_scene_contents(soops, &soops->tree, scene, NULL); + + for(base= scene->base.first; base; base= base->next) { + ten= outliner_add_element(soops, &soops->tree, base->object, NULL, 0, 0); + ten->directdata= base; + } + outliner_make_hierarchy(soops, &soops->tree); + } + else if(soops->outlinevis == SO_VISIBLE) { + for(base= scene->base.first; base; base= base->next) { + if(base->lay & scene->lay) + outliner_add_element(soops, &soops->tree, base->object, NULL, 0, 0); + } + outliner_make_hierarchy(soops, &soops->tree); + } + else if(soops->outlinevis == SO_GROUPS) { + Group *group; + GroupObject *go; + + for(group= mainvar->group.first; group; group= group->id.next) { + if(group->gobject.first) { + te= outliner_add_element(soops, &soops->tree, group, NULL, 0, 0); + + for(go= group->gobject.first; go; go= go->next) { + ten= outliner_add_element(soops, &te->subtree, go->ob, te, 0, 0); + ten->directdata= NULL; /* eh, why? */ + } + outliner_make_hierarchy(soops, &te->subtree); + /* clear id.newid, to prevent objects be inserted in wrong scenes (parent in other scene) */ + for(go= group->gobject.first; go; go= go->next) go->ob->id.newid= NULL; + } + } + } + else if(soops->outlinevis == SO_SAME_TYPE) { + Object *ob= OBACT; + if(ob) { + for(base= scene->base.first; base; base= base->next) { + if(base->object->type==ob->type) { + ten= outliner_add_element(soops, &soops->tree, base->object, NULL, 0, 0); + ten->directdata= base; + } + } + outliner_make_hierarchy(soops, &soops->tree); + } + } + else if(soops->outlinevis == SO_SELECTED) { + for(base= scene->base.first; base; base= base->next) { + if(base->lay & scene->lay) { + if(base==BASACT || (base->flag & SELECT)) { + ten= outliner_add_element(soops, &soops->tree, base->object, NULL, 0, 0); + ten->directdata= base; + } + } + } + outliner_make_hierarchy(soops, &soops->tree); + } + else if(soops->outlinevis==SO_SEQUENCE) { + Sequence *seq; + Editing *ed= seq_give_editing(scene, FALSE); + int op; + + if(ed==NULL) + return; + + seq= ed->seqbasep->first; + if(!seq) + return; + + while(seq) { + op= need_add_seq_dup(seq); + if(op==1) + ten= outliner_add_element(soops, &soops->tree, (void*)seq, NULL, TSE_SEQUENCE, 0); + else if(op==0) { + ten= outliner_add_element(soops, &soops->tree, (void*)seq, NULL, TSE_SEQUENCE_DUP, 0); + outliner_add_seq_dup(soops, seq, ten, 0); + } + seq= seq->next; + } + } + else if(soops->outlinevis==SO_DATABLOCKS) { + PointerRNA mainptr; + + RNA_main_pointer_create(mainvar, &mainptr); + + ten= outliner_add_element(soops, &soops->tree, (void*)&mainptr, NULL, TSE_RNA_STRUCT, -1); + + if(show_opened) { + tselem= TREESTORE(ten); + tselem->flag &= ~TSE_CLOSED; + } + } + else if(soops->outlinevis==SO_USERDEF) { + PointerRNA userdefptr; + + RNA_pointer_create(NULL, &RNA_UserPreferences, &U, &userdefptr); + + ten= outliner_add_element(soops, &soops->tree, (void*)&userdefptr, NULL, TSE_RNA_STRUCT, -1); + + if(show_opened) { + tselem= TREESTORE(ten); + tselem->flag &= ~TSE_CLOSED; + } + } + else if(soops->outlinevis==SO_KEYMAP) { + wmWindowManager *wm= mainvar->wm.first; + wmKeyMap *km; + + for(km= wm->defaultconf->keymaps.first; km; km= km->next) { + ten= outliner_add_element(soops, &soops->tree, (void*)km, NULL, TSE_KEYMAP, 0); + } + } + else { + ten= outliner_add_element(soops, &soops->tree, OBACT, NULL, 0, 0); + if(ten) ten->directdata= BASACT; + } + + outliner_sort(soops, &soops->tree); + outliner_filter_tree(soops, &soops->tree); +} + + diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 13b186b174b..603be557a3c 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -179,6 +179,13 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) break; } break; + case NC_ANIMATION: + switch(wmn->data) { + case ND_NLA_ACTCHANGE: + ED_region_tag_redraw(ar); + break; + } + break; } } diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index b105b2507ab..14004e7fbba 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -83,9 +83,8 @@ /* avoid passing multiple args and be more verbose */ #define SEQPROP_STARTFRAME (1<<0) #define SEQPROP_ENDFRAME (1<<1) -#define SEQPROP_FILES (1<<2) -#define SEQPROP_NOPATHS (1<<3) -#define SEQPROP_NOCHAN (1<<4) +#define SEQPROP_NOPATHS (1<<2) +#define SEQPROP_NOCHAN (1<<3) #define SELECT 1 @@ -102,9 +101,6 @@ static void sequencer_generic_props__internal(wmOperatorType *ot, int flag) RNA_def_boolean(ot->srna, "replace_sel", 1, "Replace Selection", "replace the current selection"); RNA_def_boolean(ot->srna, "overlap", 0, "Allow Overlap", "Don't correct overlap on new sequence strips"); - - if(flag & SEQPROP_FILES) - RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); } static void sequencer_generic_invoke_path__internal(bContext *C, wmOperator *op, const char *identifier) @@ -411,8 +407,8 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); - sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); + WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH|WM_FILESEL_FILES); + sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME); RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie"); } @@ -466,8 +462,8 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); - sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH|WM_FILESEL_FILES); + sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } @@ -573,8 +569,8 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH); - sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH|WM_FILESEL_FILES); + sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME); } diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 98687bb90e0..dc84289a8de 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -702,7 +702,7 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, Sequence *seq, int outline static Sequence *special_seq_update= 0; -static void set_special_seq_update(int val) +static void UNUSED_FUNCTION(set_special_seq_update)(int val) { // int x; diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 6a69d32d307..5429f0ee98f 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -75,10 +75,6 @@ /* own include */ #include "sequencer_intern.h" -static void error(const char *UNUSED(dummy)) {} -static void waitcursor(int UNUSED(val)) {} -static void activate_fileselect(int UNUSED(d1), const char *UNUSED(d2), const char *UNUSED(d3), void *UNUSED(d4)) {} -static int pupmenu(const char *UNUSED(dummy)) {return 0;} static int okee(const char *UNUSED(dummy)) {return 0;} @@ -139,7 +135,7 @@ void seq_rectf(Sequence *seq, rctf *rectf) rectf->ymax= seq->machine+SEQ_STRIP_OFSTOP; } -static void change_plugin_seq(Scene *scene, char *str) /* called from fileselect */ +static void UNUSED_FUNCTION(change_plugin_seq)(Scene *scene, char *str) /* called from fileselect */ { Editing *ed= seq_give_editing(scene, FALSE); struct SeqEffectHandle sh; @@ -392,205 +388,6 @@ void recurs_sel_seq(Sequence *seqm) } } -int event_to_efftype(int event) -{ - if(event==2) return SEQ_CROSS; - if(event==3) return SEQ_GAMCROSS; - if(event==4) return SEQ_ADD; - if(event==5) return SEQ_SUB; - if(event==6) return SEQ_MUL; - if(event==7) return SEQ_ALPHAOVER; - if(event==8) return SEQ_ALPHAUNDER; - if(event==9) return SEQ_OVERDROP; - if(event==10) return SEQ_PLUGIN; - if(event==13) return SEQ_WIPE; - if(event==14) return SEQ_GLOW; - if(event==15) return SEQ_TRANSFORM; - if(event==16) return SEQ_COLOR; - if(event==17) return SEQ_SPEED; - if(event==18) return SEQ_ADJUSTMENT; - return 0; -} - -#if 0 -static void reload_sound_strip(Scene *scene, char *name) -{ - Editing *ed; - Sequence *seq, *seqact; - SpaceFile *sfile; - Sequence *last_seq= seq_active_get(scene); - - ed= scene->ed; - - if(last_seq==0 || last_seq->type!=SEQ_SOUND) return; - seqact= last_seq; /* last_seq changes in alloc_sequence */ - - /* search sfile */ -// sfile= scrarea_find_space_of_type(curarea, SPACE_FILE); - if(sfile==0) return; - - waitcursor(1); - - seq = sfile_to_snd_sequence(sfile, seqact->start, seqact->machine); - printf("seq->type: %i\n", seq->type); - if(seq && seq!=seqact) { - /* i'm not sure about this one, seems to work without it -- sgefant */ - seq_free_strip(seqact->strip); - - seqact->strip= seq->strip; - - seqact->len= seq->len; - calc_sequence(scene, seqact); - - seq->strip= 0; - seq_free_sequence(scene, seq); - BLI_remlink(ed->seqbasep, seq); - - seq= ed->seqbasep->first; - - } - - waitcursor(0); - -} -#endif - -static void reload_image_strip(Scene *scene, char *UNUSED(name)) -{ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq=NULL, *seqact; - SpaceFile *sfile=NULL; - Sequence *last_seq= seq_active_get(scene); - - - - if(last_seq==NULL || last_seq->type!=SEQ_IMAGE) return; - seqact= last_seq; /* last_seq changes in alloc_sequence */ - - /* search sfile */ -// sfile= scrarea_find_space_of_type(curarea, SPACE_FILE); - if(sfile == NULL) return; - - waitcursor(1); - -// seq= sfile_to_sequence(scene, sfile, seqact->start, seqact->machine, 1); // XXX ADD BACK - if(seq && seq!=seqact) { - seq_free_strip(seqact->strip); - - seqact->strip= seq->strip; - - seqact->len= seq->len; - calc_sequence(scene, seqact); - - seq->strip= NULL; - seq_free_sequence(scene, seq); - BLI_remlink(ed->seqbasep, seq); - - update_changed_seq_and_deps(scene, seqact, 1, 1); - } - waitcursor(0); - -} - - -static void change_sequence(Scene *scene) -{ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *last_seq= seq_active_get(scene); - Scene *sce; - short event; - - if(last_seq == NULL) return; - - if(last_seq->type & SEQ_EFFECT) { - event = pupmenu("Change Effect%t" - "|Switch A <-> B %x1" - "|Switch B <-> C %x10" - "|Plugin%x11" - "|Recalculate%x12" - "|Cross%x2" - "|Gamma Cross%x3" - "|Add%x4" - "|Sub%x5" - "|Mul%x6" - "|Alpha Over%x7" - "|Alpha Under%x8" - "|Alpha Over Drop%x9" - "|Wipe%x13" - "|Glow%x14" - "|Transform%x15" - "|Color Generator%x16" - "|Speed Control%x17" - "|Adjustment Layer%x18"); - if(event > 0) { - if(event==1) { - SWAP(Sequence *,last_seq->seq1,last_seq->seq2); - } - else if(event==10) { - SWAP(Sequence *,last_seq->seq2,last_seq->seq3); - } - else if(event==11) { - activate_fileselect( - FILE_SPECIAL, "Select Plugin", - U.plugseqdir, change_plugin_seq); - } - else if(event==12); - /* recalculate: only new_stripdata */ - else { - /* free previous effect and init new effect */ - struct SeqEffectHandle sh; - - if (get_sequence_effect_num_inputs( - last_seq->type) - < get_sequence_effect_num_inputs( - event_to_efftype(event))) { - error("New effect needs more " - "input strips!"); - } else { - sh = get_sequence_effect(last_seq); - sh.free(last_seq); - - last_seq->type - = event_to_efftype(event); - - sh = get_sequence_effect(last_seq); - sh.init(last_seq); - } - } - - update_changed_seq_and_deps(scene, last_seq, 0, 1); - } - } - else if(last_seq->type == SEQ_IMAGE) { - if(okee("Change images")) { - activate_fileselect(FILE_SPECIAL, - "Select Images", - ed->act_imagedir, - reload_image_strip); - } - } - else if(last_seq->type == SEQ_MOVIE) { - ; - } - else if(last_seq->type == SEQ_SCENE) { - event= pupmenu("Change Scene%t|Update Start and End"); - - if(event==1) { - sce= last_seq->scene; - - last_seq->len= sce->r.efra - sce->r.sfra + 1; - last_seq->sfra= sce->r.sfra; - - /* bad code to change seq->len? update_changed_seq_and_deps() expects the strip->len to be OK */ - new_tstripdata(last_seq); - - update_changed_seq_and_deps(scene, last_seq, 1, 1); - - } - } - -} - int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequence **selseq1, Sequence **selseq2, Sequence **selseq3, const char **error_str) { Editing *ed = seq_give_editing(scene, FALSE); @@ -961,7 +758,7 @@ static int insert_gap(Scene *scene, int gap, int cfra) return done; } -static void touch_seq_files(Scene *scene) +static void UNUSED_FUNCTION(touch_seq_files)(Scene *scene) { Sequence *seq; Editing *ed= seq_give_editing(scene, FALSE); @@ -973,7 +770,7 @@ static void touch_seq_files(Scene *scene) if(okee("Touch and print selected movies")==0) return; - waitcursor(1); + WM_cursor_wait(1); SEQP_BEGIN(ed, seq) { if(seq->flag & SELECT) { @@ -988,7 +785,7 @@ static void touch_seq_files(Scene *scene) } SEQ_END - waitcursor(0); + WM_cursor_wait(0); } /* @@ -1016,7 +813,7 @@ static void set_filter_seq(Scene *scene) } */ -static void seq_remap_paths(Scene *scene) +static void UNUSED_FUNCTION(seq_remap_paths)(Scene *scene) { Sequence *seq, *last_seq = seq_active_get(scene); Editing *ed= seq_give_editing(scene, FALSE); @@ -1057,7 +854,7 @@ static void seq_remap_paths(Scene *scene) } -static void no_gaps(Scene *scene) +static void UNUSED_FUNCTION(no_gaps)(Scene *scene) { Editing *ed= seq_give_editing(scene, FALSE); int cfra, first= 0, done; @@ -1103,6 +900,19 @@ int sequencer_edit_poll(bContext *C) return (seq_give_editing(CTX_data_scene(C), FALSE) != NULL); } +int sequencer_strip_poll(bContext *C) +{ + Editing *ed; + return (((ed= seq_give_editing(CTX_data_scene(C), FALSE)) != NULL) && (ed->act_seq != NULL)); +} + +int sequencer_strip_has_path_poll(bContext *C) +{ + Editing *ed; + Sequence *seq; + return (((ed= seq_give_editing(CTX_data_scene(C), FALSE)) != NULL) && ((seq= ed->act_seq) != NULL) && (SEQ_HAS_PATH(seq))); +} + int sequencer_view_poll(bContext *C) { SpaceSeq *sseq= CTX_wm_space_seq(C); @@ -1755,6 +1565,58 @@ void SEQUENCER_OT_delete(wmOperatorType *ot) } +/* offset clear operator */ +static int sequencer_offset_clear_exec(bContext *C, wmOperator *UNUSED(op)) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq; + + /* for effects, try to find a replacement input */ + for(seq=ed->seqbasep->first; seq; seq=seq->next) { + if((seq->type & SEQ_EFFECT)==0 && (seq->flag & SELECT)) { + seq->startofs= seq->endofs= seq->startstill= seq->endstill= 0; + } + } + + /* updates lengths etc */ + seq= ed->seqbasep->first; + while(seq) { + calc_sequence(scene, seq); + seq= seq->next; + } + + for(seq=ed->seqbasep->first; seq; seq=seq->next) { + if((seq->type & SEQ_EFFECT)==0 && (seq->flag & SELECT)) { + if(seq_test_overlap(ed->seqbasep, seq)) { + shuffle_seq(ed->seqbasep, seq, scene); + } + } + } + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + + +void SEQUENCER_OT_offset_clear(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "Clear Strip Offset"; + ot->idname= "SEQUENCER_OT_offset_clear"; + ot->description="Clear strip offsets from the start and end frames"; + + /* api callbacks */ + ot->exec= sequencer_offset_clear_exec; + ot->poll= sequencer_edit_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + + /* separate_images operator */ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) { @@ -2830,3 +2692,230 @@ void SEQUENCER_OT_view_ghost_border(wmOperatorType *ot) /* rna */ WM_operator_properties_gesture_border(ot, FALSE); } + + +/* change ops */ + +static EnumPropertyItem prop_change_effect_input_types[] = { + {0, "A_B", 0, "A -> B", ""}, + {1, "B_C", 0, "B -> C", ""}, + {2, "A_C", 0, "A -> C", ""}, + {0, NULL, 0, NULL, NULL} +}; + +static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq= seq_active_get(scene); + + Sequence **seq_1, **seq_2; + + switch(RNA_enum_get(op->ptr, "swap")) { + case 0: + seq_1= &seq->seq1; + seq_2= &seq->seq2; + break; + case 1: + seq_1= &seq->seq2; + seq_2= &seq->seq3; + break; + default: /* 2 */ + seq_1= &seq->seq1; + seq_2= &seq->seq3; + break; + } + + if(*seq_1 == NULL || *seq_2 == NULL) { + BKE_report(op->reports, RPT_ERROR, "One of the effect inputs is unset, can't swap"); + return OPERATOR_CANCELLED; + } + else { + SWAP(Sequence *, *seq_1, *seq_2); + } + + update_changed_seq_and_deps(scene, seq, 0, 1); + + /* important else we dont get the imbuf cache flushed */ + free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_change_effect_input(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Change Effect Input"; + ot->idname= "SEQUENCER_OT_change_effect_input"; + ot->description=""; + + /* api callbacks */ + ot->exec= sequencer_change_effect_input_exec; + ot->poll= sequencer_effect_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ot->prop= RNA_def_enum(ot->srna, "swap", prop_change_effect_input_types, 0, "Swap", "The effect inputs to swap"); +} + +static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq= seq_active_get(scene); + const int new_type= RNA_enum_get(op->ptr, "type"); + + /* free previous effect and init new effect */ + struct SeqEffectHandle sh; + + if ((seq->type & SEQ_EFFECT) == 0) { + return OPERATOR_CANCELLED; + } + + /* can someone explain the logic behind only allowing to increse this, + * copied from 2.4x - campbell */ + if (get_sequence_effect_num_inputs(seq->type) < + get_sequence_effect_num_inputs(new_type) + ) { + BKE_report(op->reports, RPT_ERROR, "New effect needs more input strips"); + return OPERATOR_CANCELLED; + } + else { + sh = get_sequence_effect(seq); + sh.free(seq); + + seq->type= new_type; + + sh = get_sequence_effect(seq); + sh.init(seq); + } + + /* update */ + update_changed_seq_and_deps(scene, seq, 0, 1); + + /* important else we dont get the imbuf cache flushed */ + free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_change_effect_type(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Change Effect Type"; + ot->idname= "SEQUENCER_OT_change_effect_type"; + ot->description=""; + + /* api callbacks */ + ot->exec= sequencer_change_effect_type_exec; + ot->poll= sequencer_effect_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ot->prop= RNA_def_enum(ot->srna, "type", sequencer_prop_effect_types, SEQ_CROSS, "Type", "Sequencer effect type"); +} + +static int sequencer_change_path_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq= seq_active_get(scene); + + if(seq->type == SEQ_IMAGE) { + char directory[FILE_MAX]; + const int len= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files")); + StripElem *se; + + if(len==0) + return OPERATOR_CANCELLED; + + RNA_string_get(op->ptr, "directory", directory); + BLI_strncpy(seq->strip->dir, directory, sizeof(seq->strip->dir)); + + if(seq->strip->stripdata) { + MEM_freeN(seq->strip->stripdata); + } + seq->strip->stripdata= se= MEM_callocN(len*sizeof(StripElem), "stripelem"); + + RNA_BEGIN(op->ptr, itemptr, "files") { + char *filename= RNA_string_get_alloc(&itemptr, "name", NULL, 0); + BLI_strncpy(se->name, filename, sizeof(se->name)); + MEM_freeN(filename); + se++; + } + RNA_END; + + /* reset these else we wont see all the images */ + seq->anim_startofs= seq->anim_endofs= 0; + + /* correct start/end frames so we dont move + * important not to set seq->len= len; allow the function to handle it */ + reload_sequence_new_file(scene, seq, TRUE); + + calc_sequence(scene, seq); + + /* important else we dont get the imbuf cache flushed */ + free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE); + } + else { + /* lame, set rna filepath */ + PointerRNA seq_ptr; + PropertyRNA *prop; + char filepath[FILE_MAX]; + + RNA_pointer_create(&scene->id, &RNA_Sequence, seq, &seq_ptr); + + RNA_string_get(op->ptr, "filepath", filepath); + prop= RNA_struct_find_property(&seq_ptr, "filepath"); + RNA_property_string_set(&seq_ptr, prop, filepath); + RNA_property_update(C, &seq_ptr, prop); + } + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +static int sequencer_change_path_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) +{ + Scene *scene= CTX_data_scene(C); + Sequence *seq= seq_active_get(scene); + + RNA_string_set(op->ptr, "directory", seq->strip->dir); + + /* set default display depending on seq type */ + if(seq->type == SEQ_IMAGE) { + RNA_boolean_set(op->ptr, "filter_movie", 0); + } + else { + RNA_boolean_set(op->ptr, "filter_image", 0); + } + + WM_event_add_fileselect(C, op); + + return OPERATOR_RUNNING_MODAL; +} + +void SEQUENCER_OT_change_path(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Change Data/Files"; + ot->idname= "SEQUENCER_OT_change_path"; + ot->description=""; + + /* api callbacks */ + ot->exec= sequencer_change_path_exec; + ot->invoke= sequencer_change_path_invoke; + ot->poll= sequencer_strip_has_path_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH|WM_FILESEL_FILEPATH|WM_FILESEL_FILES); +} diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index 209b39662aa..7ab76f9b6d7 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -70,6 +70,8 @@ int seq_effect_find_selected(struct Scene *scene, struct Sequence *activeseq, in /* operator helpers */ int sequencer_edit_poll(struct bContext *C); +int sequencer_strip_poll(struct bContext *C); +int sequencer_strip_has_path_poll(struct bContext *C); int sequencer_view_poll(struct bContext *C); /* externs */ @@ -91,6 +93,7 @@ void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot); void SEQUENCER_OT_swap_inputs(struct wmOperatorType *ot); void SEQUENCER_OT_duplicate(struct wmOperatorType *ot); void SEQUENCER_OT_delete(struct wmOperatorType *ot); +void SEQUENCER_OT_offset_clear(struct wmOperatorType *ot); void SEQUENCER_OT_images_separate(struct wmOperatorType *ot); void SEQUENCER_OT_meta_toggle(struct wmOperatorType *ot); void SEQUENCER_OT_meta_make(struct wmOperatorType *ot); @@ -108,6 +111,10 @@ void SEQUENCER_OT_view_selected(struct wmOperatorType *ot); void SEQUENCER_OT_view_zoom_ratio(struct wmOperatorType *ot); void SEQUENCER_OT_view_ghost_border(struct wmOperatorType *ot); +void SEQUENCER_OT_change_effect_input(struct wmOperatorType *ot); +void SEQUENCER_OT_change_effect_type(struct wmOperatorType *ot); +void SEQUENCER_OT_change_path(struct wmOperatorType *ot); + void SEQUENCER_OT_copy(struct wmOperatorType *ot); void SEQUENCER_OT_paste(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index f5c26cb17d3..df33ce73b9c 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -68,6 +68,7 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_swap_inputs); WM_operatortype_append(SEQUENCER_OT_duplicate); WM_operatortype_append(SEQUENCER_OT_delete); + WM_operatortype_append(SEQUENCER_OT_offset_clear); WM_operatortype_append(SEQUENCER_OT_images_separate); WM_operatortype_append(SEQUENCER_OT_meta_toggle); WM_operatortype_append(SEQUENCER_OT_meta_make); @@ -86,6 +87,10 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_view_zoom_ratio); WM_operatortype_append(SEQUENCER_OT_view_ghost_border); + WM_operatortype_append(SEQUENCER_OT_change_effect_input); + WM_operatortype_append(SEQUENCER_OT_change_effect_type); + WM_operatortype_append(SEQUENCER_OT_change_path); + /* sequencer_select.c */ WM_operatortype_append(SEQUENCER_OT_select_all_toggle); WM_operatortype_append(SEQUENCER_OT_select_inverse); @@ -145,6 +150,8 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SEQUENCER_OT_reassign_inputs", RKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_offset_clear", OKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", XKEY, KM_PRESS, 0, 0); @@ -240,6 +247,8 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SEQUENCER_OT_select_border", BKEY, KM_PRESS, 0, 0); WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); + + WM_keymap_add_menu(keymap, "SEQUENCER_MT_change", CKEY, KM_PRESS, 0, 0); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", OKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.overlay_frame"); diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 8d5f372f55e..0ac23765167 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -159,7 +159,7 @@ void select_surround_from_last(Scene *scene) #endif -static void select_single_seq(Scene *scene, Sequence *seq, int deselect_all) /* BRING BACK */ +static void UNUSED_FUNCTION(select_single_seq)(Scene *scene, Sequence *seq, int deselect_all) /* BRING BACK */ { Editing *ed= seq_give_editing(scene, FALSE); diff --git a/source/blender/editors/space_text/text_python.c b/source/blender/editors/space_text/text_python.c index 6e6f131655b..51b4b838171 100644 --- a/source/blender/editors/space_text/text_python.c +++ b/source/blender/editors/space_text/text_python.c @@ -43,6 +43,7 @@ #include "BKE_text.h" #include "BLI_blenlib.h" +#include "BLI_utildefines.h" #include "WM_types.h" @@ -192,7 +193,7 @@ static void confirm_suggestion(Text *text, int skipleft) // XXX static int doc_scroll= 0; -static short do_texttools(SpaceText *st, char ascii, unsigned short evnt, short val) +static short UNUSED_FUNCTION(do_texttools)(SpaceText *st, char ascii, unsigned short evnt, short val) { ARegion *ar= NULL; // XXX int qual= 0; // XXX @@ -375,7 +376,7 @@ static short do_texttools(SpaceText *st, char ascii, unsigned short evnt, short ; // XXX redraw_alltext(); #endif -static short do_textmarkers(SpaceText *st, char ascii, unsigned short evnt, short val) +static short UNUSED_FUNCTION(do_textmarkers)(SpaceText *st, char ascii, unsigned short evnt, short val) { Text *text; TextMarker *marker, *mrk, *nxt; diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 4a8fb92d7e1..2fe2a95de83 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -5475,7 +5475,7 @@ static void drawObjectSelect(Scene *scene, View3D *v3d, ARegion *ar, Base *base) } } else if(ob->type==OB_ARMATURE) { - if(!(ob->mode & OB_MODE_POSE)) + if(!(ob->mode & OB_MODE_POSE && base == scene->basact)) draw_armature(scene, v3d, ar, base, OB_WIRE, FALSE, TRUE); } @@ -5732,7 +5732,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) /* if( ((int)ob->ctime) != F_(scene->r.cfra)) where_is_object(scene, ob); */ /* draw motion paths (in view space) */ - if (ob->mpath) { + if (ob->mpath && (v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { bAnimVizSettings *avs= &ob->avs; /* setup drawing environment for paths */ diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index 50dd98b08a4..3cc3bde9754 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -46,6 +46,7 @@ #include "BLI_editVert.h" #include "BLI_rand.h" #include "BLI_utildefines.h" +#include "BLI_ghash.h" #include "BKE_context.h" #include "BKE_idprop.h" @@ -140,10 +141,11 @@ static void operator_call_cb(struct bContext *C, void *arg_listbase, void *arg2) static void operator_search_cb(const struct bContext *C, void *UNUSED(arg), const char *str, uiSearchItems *items) { - wmOperatorType *ot = WM_operatortype_first(); - - for(; ot; ot= ot->next) { - + GHashIterator *iter= WM_operatortype_iter(); + + for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) { + wmOperatorType *ot= BLI_ghashIterator_getValue(iter); + if(BLI_strcasestr(ot->name, str)) { if(WM_operator_poll((bContext*)C, ot)) { @@ -152,6 +154,7 @@ static void operator_search_cb(const struct bContext *C, void *UNUSED(arg), cons } } } + BLI_ghashIterator_free(iter); } diff --git a/source/blender/editors/transform/CMakeLists.txt b/source/blender/editors/transform/CMakeLists.txt index 283b09f42e4..e44cc1f5df3 100644 --- a/source/blender/editors/transform/CMakeLists.txt +++ b/source/blender/editors/transform/CMakeLists.txt @@ -41,7 +41,6 @@ set(SRC transform_generics.c transform_input.c transform_manipulator.c - transform_ndofinput.c transform_ops.c transform_orientations.c transform_snap.c diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 39e26bc6436..c1c812e8c68 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1006,11 +1006,6 @@ int transformEvent(TransInfo *t, wmEvent *event) else view_editmove(event->type); t->redraw= 1; break; -#if 0 - case NDOF_MOTION: - // should have been caught by tranform_modal - return OPERATOR_PASS_THROUGH; -#endif default: handled = 0; break; diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index d8e42488787..485344875d4 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -67,14 +67,6 @@ struct wmTimer; struct ARegion; struct ReportList; -typedef struct NDofInput { - int flag; - int axis; - float fval[7]; - float factor[3]; -} NDofInput; - - /* The ctrl value has different meaning: 0 : No value has been typed @@ -273,7 +265,6 @@ typedef struct TransInfo { TransCon con; /* transformed constraint */ TransSnap tsnap; NumInput num; /* numerical input */ - NDofInput ndof; /* ndof input */ MouseInput mouse; /* mouse input */ char redraw; /* redraw flag */ float prop_size; /* proportional circle radius */ @@ -340,9 +331,6 @@ typedef struct TransInfo { /* ******************** Macros & Prototypes *********************** */ -/* NDOFINPUT FLAGS */ -#define NDOF_INIT 1 - /* transinfo->state */ #define TRANS_STARTING 0 #define TRANS_RUNNING 1 @@ -683,20 +671,6 @@ void calculatePropRatio(TransInfo *t); void getViewVector(TransInfo *t, float coord[3], float vec[3]); -/*********************** NDofInput ********************************/ - -void initNDofInput(NDofInput *n); -int hasNDofInput(NDofInput *n); -void applyNDofInput(NDofInput *n, float *vec); -int handleNDofInput(NDofInput *n, struct wmEvent *event); - -/* handleNDofInput return values */ -#define NDOF_REFRESH 1 -#define NDOF_NOMOVE 2 -#define NDOF_CONFIRM 3 -#define NDOF_CANCEL 4 - - /*********************** Transform Orientations ******************************/ void initTransformOrientation(struct bContext *C, TransInfo *t); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index c81c398e696..306796efee9 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1165,7 +1165,6 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) setTransformViewMatrices(t); initNumInput(&t->num); - initNDofInput(&t->ndof); return 1; } diff --git a/source/blender/editors/transform/transform_ndofinput.c b/source/blender/editors/transform/transform_ndofinput.c deleted file mode 100644 index c5946163770..00000000000 --- a/source/blender/editors/transform/transform_ndofinput.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - * $Id$ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is: all of this file. - * - * Contributor(s): Martin Poirier - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file blender/editors/transform/transform_ndofinput.c - * \ingroup edtransform - */ - - - #include /* fabs */ -#include /* for sprintf */ - -#include "BLI_utildefines.h" - -#include "BKE_global.h" /* for G */ - /* ABS */ - -#include "WM_types.h" - -#include "transform.h" - -#if 0 -static int updateNDofMotion(NDofInput *n); // return 0 when motion is null -#endif -static void resetNDofInput(NDofInput *n); - -void initNDofInput(NDofInput *n) -{ - int i; - - n->flag = 0; - n->axis = 0; - - resetNDofInput(n); - - for(i = 0; i < 3; i++) - { - n->factor[i] = 1.0f; - } -} - -static void resetNDofInput(NDofInput *n) -{ - int i; - for(i = 0; i < 6; i++) - { - n->fval[i] = 0.0f; - } -} - - -int handleNDofInput(NDofInput *UNUSED(n), wmEvent *UNUSED(event)) -{ - int retval = 0; - // TRANSFORM_FIX_ME -#if 0 - switch(event) - { - case NDOFMOTION: - if (updateNDofMotion(n) == 0) - { - retval = NDOF_NOMOVE; - } - else - { - retval = NDOF_REFRESH; - } - break; - case NDOFBUTTON: - if (val == 1) - { - retval = NDOF_CONFIRM; - } - else if (val == 2) - { - retval = NDOF_CANCEL; - resetNDofInput(n); - n->flag &= ~NDOF_INIT; - } - break; - } -#endif - return retval; -} - -int hasNDofInput(NDofInput *n) -{ - return (n->flag & NDOF_INIT) == NDOF_INIT; -} - -void applyNDofInput(NDofInput *n, float *vec) -{ - if (hasNDofInput(n)) - { - int i, j; - - for (i = 0, j = 0; i < 6; i++) - { - if (n->axis & (1 << i)) - { - vec[j] = n->fval[i] * n->factor[j]; - j++; - } - } - } -} - -// TRANSFORM_FIX_ME -#if 0 - -static int updateNDofMotion(NDofInput *n) -{ - float fval[7]; - int i; - int retval = 0; - - getndof(fval); - - if (G.vd->ndoffilter) - filterNDOFvalues(fval); - - for(i = 0; i < 6; i++) - { - if (!retval && fval[i] != 0.0f) - { - retval = 1; - } - - n->fval[i] += fval[i] / 1024.0f; - } - - n->flag |= NDOF_INIT; - - return retval; -} -#endif - - - - diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 54e0b31e201..231293024f0 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -360,17 +360,14 @@ static int transform_modal(bContext *C, wmOperator *op, wmEvent *event) TransInfo *t = op->customdata; - #if 0 +#if 0 // stable 2D mouse coords map to different 3D coords while the 3D mouse is active // in other words, 2D deltas are no longer good enough! // disable until individual 'transformers' behave better if (event->type == NDOF_MOTION) - { - /* puts("transform_modal: passing through NDOF_MOTION"); */ return OPERATOR_PASS_THROUGH; - } - #endif +#endif /* XXX insert keys are called here, and require context */ t->context= C; diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c index 919b0eb0c29..8b0104fcdca 100644 --- a/source/blender/imbuf/intern/anim_movie.c +++ b/source/blender/imbuf/intern/anim_movie.c @@ -355,7 +355,7 @@ struct anim * IMB_open_anim( const char * name, int ib_flags) { anim = (struct anim*)MEM_callocN(sizeof(struct anim), "anim struct"); if (anim != NULL) { - strcpy(anim->name, name); /* fixme: possible buffer overflow here? */ + BLI_strncpy(anim->name, name, sizeof(anim->name)); anim->ib_flags = ib_flags; } return(anim); diff --git a/source/blender/imbuf/intern/filter.c b/source/blender/imbuf/intern/filter.c index 1644e653df4..3f391b91c0f 100644 --- a/source/blender/imbuf/intern/filter.c +++ b/source/blender/imbuf/intern/filter.c @@ -371,11 +371,15 @@ void IMB_filter_extend(struct ImBuf *ibuf, char *mask, int filter) float weight[25]; /* build a weights buffer */ - n= 2; - k= 0; + n= 1; + /*k= 0; for(i = -n; i <= n; i++) for(j = -n; j <= n; j++) weight[k++] = sqrt((float) i * i + j * j); + */ + weight[0]=1; weight[1]=2; weight[2]=1; + weight[3]=2; weight[4]=0; weight[5]=2; + weight[6]=1; weight[7]=2; weight[8]=1; /* run passes */ for(r = 0; cannot_early_out == 1 && r < filter; r++) { @@ -393,10 +397,10 @@ void IMB_filter_extend(struct ImBuf *ibuf, char *mask, int filter) float acc[4]={0,0,0,0}; k = 0; - if (check_pixel_assigned(srcbuf, srcmask, filter_make_index(x-1, y, width, height), depth, is_float) || + /*if (check_pixel_assigned(srcbuf, srcmask, filter_make_index(x-1, y, width, height), depth, is_float) || check_pixel_assigned(srcbuf, srcmask, filter_make_index(x+1, y, width, height), depth, is_float) || check_pixel_assigned(srcbuf, srcmask, filter_make_index(x, y-1, width, height), depth, is_float) || - check_pixel_assigned(srcbuf, srcmask, filter_make_index(x, y+1, width, height), depth, is_float)) { + check_pixel_assigned(srcbuf, srcmask, filter_make_index(x, y+1, width, height), depth, is_float))*/ { for(i= -n; i<=n; i++) { for(j=-n; j<=n; j++) { if(i != 0 || j != 0) { diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 3787675f339..053f3b38168 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -712,16 +712,16 @@ typedef struct ShapeKeyModifierData { typedef struct SolidifyModifierData { ModifierData modifier; - char defgrp_name[32]; /* name of vertex group to use */ + char defgrp_name[32]; /* name of vertex group to use */ float offset; /* new surface offset level*/ float offset_fac; /* midpoint of the offset */ + float offset_fac_vg; /* factor for the minimum weight to use when vgroups are used, avoids 0.0 weights giving duplicate geometry */ float crease_inner; float crease_outer; float crease_rim; int flag; short mat_ofs; short mat_ofs_rim; - int pad; } SolidifyModifierData; #define MOD_SOLIDIFY_RIM (1<<0) diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 963b3de3b4d..c1427ca0e79 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -47,532 +47,534 @@ struct Scene; /* Types */ extern BlenderRNA BLENDER_RNA; -extern LIBEXPORT StructRNA RNA_Action; -extern LIBEXPORT StructRNA RNA_ActionConstraint; -extern LIBEXPORT StructRNA RNA_ActionGroup; -extern LIBEXPORT StructRNA RNA_Actuator; -extern LIBEXPORT StructRNA RNA_ActuatorSensor; -extern LIBEXPORT StructRNA RNA_Addon; -extern LIBEXPORT StructRNA RNA_AdjustmentSequence; -extern LIBEXPORT StructRNA RNA_AlwaysSensor; -extern LIBEXPORT StructRNA RNA_AndController; -extern LIBEXPORT StructRNA RNA_AnimData; -extern LIBEXPORT StructRNA RNA_AnimViz; -extern LIBEXPORT StructRNA RNA_AnimVizMotionPaths; -extern LIBEXPORT StructRNA RNA_AnimVizOnionSkinning; -extern LIBEXPORT StructRNA RNA_AnyType; -extern LIBEXPORT StructRNA RNA_Area; -extern LIBEXPORT StructRNA RNA_AreaLamp; -extern LIBEXPORT StructRNA RNA_Armature; -extern LIBEXPORT StructRNA RNA_ArmatureModifier; -extern LIBEXPORT StructRNA RNA_ArmatureSensor; -extern LIBEXPORT StructRNA RNA_ArrayModifier; -extern LIBEXPORT StructRNA RNA_BackgroundImage; -extern LIBEXPORT StructRNA RNA_BevelModifier; -extern LIBEXPORT StructRNA RNA_BezierSplinePoint; -extern LIBEXPORT StructRNA RNA_BlendData; -extern LIBEXPORT StructRNA RNA_BlendTexture; -extern LIBEXPORT StructRNA RNA_BlenderRNA; -extern LIBEXPORT StructRNA RNA_BoidRule; -extern LIBEXPORT StructRNA RNA_BoidRuleAverageSpeed; -extern LIBEXPORT StructRNA RNA_BoidRuleAvoid; -extern LIBEXPORT StructRNA RNA_BoidRuleAvoidCollision; -extern LIBEXPORT StructRNA RNA_BoidRuleFight; -extern LIBEXPORT StructRNA RNA_BoidRuleFollowLeader; -extern LIBEXPORT StructRNA RNA_BoidRuleGoal; -extern LIBEXPORT StructRNA RNA_BoidSettings; -extern LIBEXPORT StructRNA RNA_BoidState; -extern LIBEXPORT StructRNA RNA_Bone; -extern LIBEXPORT StructRNA RNA_BoneGroup; -extern LIBEXPORT StructRNA RNA_BooleanModifier; -extern LIBEXPORT StructRNA RNA_BooleanProperty; -extern LIBEXPORT StructRNA RNA_Brush; -extern LIBEXPORT StructRNA RNA_BrushTextureSlot; -extern LIBEXPORT StructRNA RNA_BuildModifier; -extern LIBEXPORT StructRNA RNA_Camera; -extern LIBEXPORT StructRNA RNA_CastModifier; -extern LIBEXPORT StructRNA RNA_ChildOfConstraint; -extern LIBEXPORT StructRNA RNA_ChildParticle; -extern LIBEXPORT StructRNA RNA_ClampToConstraint; -extern LIBEXPORT StructRNA RNA_ClothCollisionSettings; -extern LIBEXPORT StructRNA RNA_ClothModifier; -extern LIBEXPORT StructRNA RNA_ClothSettings; -extern LIBEXPORT StructRNA RNA_CloudsTexture; -extern LIBEXPORT StructRNA RNA_CollectionProperty; -extern LIBEXPORT StructRNA RNA_CollisionModifier; -extern LIBEXPORT StructRNA RNA_CollisionSensor; -extern LIBEXPORT StructRNA RNA_CollisionSettings; -extern LIBEXPORT StructRNA RNA_ColorRamp; -extern LIBEXPORT StructRNA RNA_ColorRampElement; -extern LIBEXPORT StructRNA RNA_ColorSequence; -extern LIBEXPORT StructRNA RNA_CompositorNode; -extern LIBEXPORT StructRNA RNA_CompositorNodeAlphaOver; -extern LIBEXPORT StructRNA RNA_CompositorNodeBilateralblur; -extern LIBEXPORT StructRNA RNA_CompositorNodeBlur; -extern LIBEXPORT StructRNA RNA_CompositorNodeBrightContrast; -extern LIBEXPORT StructRNA RNA_CompositorNodeChannelMatte; -extern LIBEXPORT StructRNA RNA_CompositorNodeChromaMatte; -extern LIBEXPORT StructRNA RNA_CompositorNodeColorMatte; -extern LIBEXPORT StructRNA RNA_CompositorNodeColorSpill; -extern LIBEXPORT StructRNA RNA_CompositorNodeCombHSVA; -extern LIBEXPORT StructRNA RNA_CompositorNodeCombRGBA; -extern LIBEXPORT StructRNA RNA_CompositorNodeCombYCCA; -extern LIBEXPORT StructRNA RNA_CompositorNodeCombYUVA; -extern LIBEXPORT StructRNA RNA_CompositorNodeComposite; -extern LIBEXPORT StructRNA RNA_CompositorNodeCrop; -extern LIBEXPORT StructRNA RNA_CompositorNodeCurveRGB; -extern LIBEXPORT StructRNA RNA_CompositorNodeCurveVec; -extern LIBEXPORT StructRNA RNA_CompositorNodeDBlur; -extern LIBEXPORT StructRNA RNA_CompositorNodeDefocus; -extern LIBEXPORT StructRNA RNA_CompositorNodeDiffMatte; -extern LIBEXPORT StructRNA RNA_CompositorNodeDilateErode; -extern LIBEXPORT StructRNA RNA_CompositorNodeDisplace; -extern LIBEXPORT StructRNA RNA_CompositorNodeDistanceMatte; -extern LIBEXPORT StructRNA RNA_CompositorNodeFilter; -extern LIBEXPORT StructRNA RNA_CompositorNodeFlip; -extern LIBEXPORT StructRNA RNA_CompositorNodeGamma; -extern LIBEXPORT StructRNA RNA_CompositorNodeGlare; -extern LIBEXPORT StructRNA RNA_CompositorNodeHueSat; -extern LIBEXPORT StructRNA RNA_CompositorNodeIDMask; -extern LIBEXPORT StructRNA RNA_CompositorNodeImage; -extern LIBEXPORT StructRNA RNA_CompositorNodeInvert; -extern LIBEXPORT StructRNA RNA_CompositorNodeLensdist; -extern LIBEXPORT StructRNA RNA_CompositorNodeLevels; -extern LIBEXPORT StructRNA RNA_CompositorNodeLumaMatte; -extern LIBEXPORT StructRNA RNA_CompositorNodeMapUV; -extern LIBEXPORT StructRNA RNA_CompositorNodeMapValue; -extern LIBEXPORT StructRNA RNA_CompositorNodeMath; -extern LIBEXPORT StructRNA RNA_CompositorNodeMixRGB; -extern LIBEXPORT StructRNA RNA_CompositorNodeNormal; -extern LIBEXPORT StructRNA RNA_CompositorNodeNormalize; -extern LIBEXPORT StructRNA RNA_CompositorNodeOutputFile; -extern LIBEXPORT StructRNA RNA_CompositorNodePremulKey; -extern LIBEXPORT StructRNA RNA_CompositorNodeRGB; -extern LIBEXPORT StructRNA RNA_CompositorNodeRGBToBW; -extern LIBEXPORT StructRNA RNA_CompositorNodeRLayers; -extern LIBEXPORT StructRNA RNA_CompositorNodeRotate; -extern LIBEXPORT StructRNA RNA_CompositorNodeScale; -extern LIBEXPORT StructRNA RNA_CompositorNodeSepHSVA; -extern LIBEXPORT StructRNA RNA_CompositorNodeSepRGBA; -extern LIBEXPORT StructRNA RNA_CompositorNodeSepYCCA; -extern LIBEXPORT StructRNA RNA_CompositorNodeSepYUVA; -extern LIBEXPORT StructRNA RNA_CompositorNodeSetAlpha; -extern LIBEXPORT StructRNA RNA_CompositorNodeSplitViewer; -extern LIBEXPORT StructRNA RNA_CompositorNodeTexture; -extern LIBEXPORT StructRNA RNA_CompositorNodeTime; -extern LIBEXPORT StructRNA RNA_CompositorNodeTonemap; -extern LIBEXPORT StructRNA RNA_CompositorNodeTranslate; -extern LIBEXPORT StructRNA RNA_CompositorNodeTree; -extern LIBEXPORT StructRNA RNA_CompositorNodeValToRGB; -extern LIBEXPORT StructRNA RNA_CompositorNodeValue; -extern LIBEXPORT StructRNA RNA_CompositorNodeVecBlur; -extern LIBEXPORT StructRNA RNA_CompositorNodeViewer; -extern LIBEXPORT StructRNA RNA_CompositorNodeZcombine; -extern LIBEXPORT StructRNA RNA_ConsoleLine; -extern LIBEXPORT StructRNA RNA_Constraint; -extern LIBEXPORT StructRNA RNA_ConstraintTarget; -extern LIBEXPORT StructRNA RNA_Context; -extern LIBEXPORT StructRNA RNA_ControlFluidSettings; -extern LIBEXPORT StructRNA RNA_Controller; -extern LIBEXPORT StructRNA RNA_CopyLocationConstraint; -extern LIBEXPORT StructRNA RNA_CopyRotationConstraint; -extern LIBEXPORT StructRNA RNA_CopyScaleConstraint; -extern LIBEXPORT StructRNA RNA_CopyTransformsConstraint; -extern LIBEXPORT StructRNA RNA_Curve; -extern LIBEXPORT StructRNA RNA_CurveMap; -extern LIBEXPORT StructRNA RNA_CurveMapPoint; -extern LIBEXPORT StructRNA RNA_CurveMapping; -extern LIBEXPORT StructRNA RNA_CurveModifier; -extern LIBEXPORT StructRNA RNA_CurvePoint; -extern LIBEXPORT StructRNA RNA_DampedTrackConstraint; -extern LIBEXPORT StructRNA RNA_DecimateModifier; -extern LIBEXPORT StructRNA RNA_DelaySensor; -extern LIBEXPORT StructRNA RNA_DisplaceModifier; -extern LIBEXPORT StructRNA RNA_DistortedNoiseTexture; -extern LIBEXPORT StructRNA RNA_DomainFluidSettings; -extern LIBEXPORT StructRNA RNA_Driver; -extern LIBEXPORT StructRNA RNA_DriverTarget; -extern LIBEXPORT StructRNA RNA_DriverVariable; -extern LIBEXPORT StructRNA RNA_DupliObject; -extern LIBEXPORT StructRNA RNA_EdgeSplitModifier; -extern LIBEXPORT StructRNA RNA_EditBone; -extern LIBEXPORT StructRNA RNA_EffectSequence; -extern LIBEXPORT StructRNA RNA_EffectorWeights; -extern LIBEXPORT StructRNA RNA_EnumProperty; -extern LIBEXPORT StructRNA RNA_EnumPropertyItem; -extern LIBEXPORT StructRNA RNA_EnvironmentMap; -extern LIBEXPORT StructRNA RNA_EnvironmentMapTexture; -extern LIBEXPORT StructRNA RNA_Event; -extern LIBEXPORT StructRNA RNA_ExplodeModifier; -extern LIBEXPORT StructRNA RNA_ExpressionController; -extern LIBEXPORT StructRNA RNA_FCurve; -extern LIBEXPORT StructRNA RNA_FCurveSample; -extern LIBEXPORT StructRNA RNA_FModifier; -extern LIBEXPORT StructRNA RNA_FModifierCycles; -extern LIBEXPORT StructRNA RNA_FModifierEnvelope; -extern LIBEXPORT StructRNA RNA_FModifierEnvelopeControlPoint; -extern LIBEXPORT StructRNA RNA_FModifierFunctionGenerator; -extern LIBEXPORT StructRNA RNA_FModifierGenerator; -extern LIBEXPORT StructRNA RNA_FModifierLimits; -extern LIBEXPORT StructRNA RNA_FModifierNoise; -extern LIBEXPORT StructRNA RNA_FModifierPython; -extern LIBEXPORT StructRNA RNA_FModifierStepped; -extern LIBEXPORT StructRNA RNA_FieldSettings; -extern LIBEXPORT StructRNA RNA_FileSelectParams; -extern LIBEXPORT StructRNA RNA_FloatProperty; -extern LIBEXPORT StructRNA RNA_FloorConstraint; -extern LIBEXPORT StructRNA RNA_FluidFluidSettings; -extern LIBEXPORT StructRNA RNA_FluidSettings; -extern LIBEXPORT StructRNA RNA_FluidSimulationModifier; -extern LIBEXPORT StructRNA RNA_FollowPathConstraint; -extern LIBEXPORT StructRNA RNA_Function; -extern LIBEXPORT StructRNA RNA_GPencilFrame; -extern LIBEXPORT StructRNA RNA_GPencilLayer; -extern LIBEXPORT StructRNA RNA_GPencilStroke; -extern LIBEXPORT StructRNA RNA_GPencilStrokePoint; -extern LIBEXPORT StructRNA RNA_GameBooleanProperty; -extern LIBEXPORT StructRNA RNA_GameFloatProperty; -extern LIBEXPORT StructRNA RNA_GameIntProperty; -extern LIBEXPORT StructRNA RNA_GameObjectSettings; -extern LIBEXPORT StructRNA RNA_GameProperty; -extern LIBEXPORT StructRNA RNA_GameSoftBodySettings; -extern LIBEXPORT StructRNA RNA_GameStringProperty; -extern LIBEXPORT StructRNA RNA_GameTimerProperty; -extern LIBEXPORT StructRNA RNA_GlowSequence; -extern LIBEXPORT StructRNA RNA_GreasePencil; -extern LIBEXPORT StructRNA RNA_Group; -extern LIBEXPORT StructRNA RNA_Header; -extern LIBEXPORT StructRNA RNA_HemiLamp; -extern LIBEXPORT StructRNA RNA_Histogram; -extern LIBEXPORT StructRNA RNA_HookModifier; -extern LIBEXPORT StructRNA RNA_ID; -extern LIBEXPORT StructRNA RNA_IKParam; -extern LIBEXPORT StructRNA RNA_Image; -extern LIBEXPORT StructRNA RNA_ImagePaint; -extern LIBEXPORT StructRNA RNA_ImageSequence; -extern LIBEXPORT StructRNA RNA_ImageTexture; -extern LIBEXPORT StructRNA RNA_ImageUser; -extern LIBEXPORT StructRNA RNA_InflowFluidSettings; -extern LIBEXPORT StructRNA RNA_IntProperty; -extern LIBEXPORT StructRNA RNA_Itasc; -extern LIBEXPORT StructRNA RNA_JoystickSensor; -extern LIBEXPORT StructRNA RNA_Key; -extern LIBEXPORT StructRNA RNA_KeyConfig; -extern LIBEXPORT StructRNA RNA_KeyMap; -extern LIBEXPORT StructRNA RNA_KeyMapItem; -extern LIBEXPORT StructRNA RNA_KeyboardSensor; -extern LIBEXPORT StructRNA RNA_Keyframe; -extern LIBEXPORT StructRNA RNA_KeyingSet; -extern LIBEXPORT StructRNA RNA_KeyingSetInfo; -extern LIBEXPORT StructRNA RNA_KeyingSetPath; -extern LIBEXPORT StructRNA RNA_KinematicConstraint; -extern LIBEXPORT StructRNA RNA_Lamp; -extern LIBEXPORT StructRNA RNA_LampSkySettings; -extern LIBEXPORT StructRNA RNA_LampTextureSlot; -extern LIBEXPORT StructRNA RNA_Lattice; -extern LIBEXPORT StructRNA RNA_LatticeModifier; -extern LIBEXPORT StructRNA RNA_LatticePoint; -extern LIBEXPORT StructRNA RNA_Library; -extern LIBEXPORT StructRNA RNA_LimitDistanceConstraint; -extern LIBEXPORT StructRNA RNA_LimitLocationConstraint; -extern LIBEXPORT StructRNA RNA_LimitRotationConstraint; -extern LIBEXPORT StructRNA RNA_LimitScaleConstraint; -extern LIBEXPORT StructRNA RNA_LockedTrackConstraint; -extern LIBEXPORT StructRNA RNA_Macro; -extern LIBEXPORT StructRNA RNA_MagicTexture; -extern LIBEXPORT StructRNA RNA_MarbleTexture; -extern LIBEXPORT StructRNA RNA_MaskModifier; -extern LIBEXPORT StructRNA RNA_Material; -extern LIBEXPORT StructRNA RNA_MaterialHalo; -extern LIBEXPORT StructRNA RNA_MaterialPhysics; -extern LIBEXPORT StructRNA RNA_MaterialRaytraceMirror; -extern LIBEXPORT StructRNA RNA_MaterialRaytraceTransparency; -extern LIBEXPORT StructRNA RNA_MaterialSlot; -extern LIBEXPORT StructRNA RNA_MaterialStrand; -extern LIBEXPORT StructRNA RNA_MaterialSubsurfaceScattering; -extern LIBEXPORT StructRNA RNA_MaterialTextureSlot; -extern LIBEXPORT StructRNA RNA_MaterialVolume; -extern LIBEXPORT StructRNA RNA_Menu; -extern LIBEXPORT StructRNA RNA_Mesh; -extern LIBEXPORT StructRNA RNA_MeshColor; -extern LIBEXPORT StructRNA RNA_MeshColorLayer; -extern LIBEXPORT StructRNA RNA_MeshDeformModifier; -extern LIBEXPORT StructRNA RNA_MeshEdge; -extern LIBEXPORT StructRNA RNA_MeshFace; -extern LIBEXPORT StructRNA RNA_MeshFloatProperty; -extern LIBEXPORT StructRNA RNA_MeshFloatPropertyLayer; -extern LIBEXPORT StructRNA RNA_MeshIntProperty; -extern LIBEXPORT StructRNA RNA_MeshIntPropertyLayer; -extern LIBEXPORT StructRNA RNA_MeshSticky; -extern LIBEXPORT StructRNA RNA_MeshStringProperty; -extern LIBEXPORT StructRNA RNA_MeshStringPropertyLayer; -extern LIBEXPORT StructRNA RNA_MeshTextureFace; -extern LIBEXPORT StructRNA RNA_MeshTextureFaceLayer; -extern LIBEXPORT StructRNA RNA_MeshVertex; -extern LIBEXPORT StructRNA RNA_MessageSensor; -extern LIBEXPORT StructRNA RNA_MetaBall; -extern LIBEXPORT StructRNA RNA_MetaElement; -extern LIBEXPORT StructRNA RNA_MetaSequence; -extern LIBEXPORT StructRNA RNA_MirrorModifier; -extern LIBEXPORT StructRNA RNA_Modifier; -extern LIBEXPORT StructRNA RNA_MotionPath; -extern LIBEXPORT StructRNA RNA_MotionPathVert; -extern LIBEXPORT StructRNA RNA_MouseSensor; -extern LIBEXPORT StructRNA RNA_MovieSequence; -extern LIBEXPORT StructRNA RNA_MulticamSequence; -extern LIBEXPORT StructRNA RNA_MultiresModifier; -extern LIBEXPORT StructRNA RNA_MusgraveTexture; -extern LIBEXPORT StructRNA RNA_NandController; -extern LIBEXPORT StructRNA RNA_NearSensor; -extern LIBEXPORT StructRNA RNA_NlaStrip; -extern LIBEXPORT StructRNA RNA_NlaTrack; -extern LIBEXPORT StructRNA RNA_Node; -extern LIBEXPORT StructRNA RNA_NodeGroup; -extern LIBEXPORT StructRNA RNA_NodeLink; -extern LIBEXPORT StructRNA RNA_NodeSocket; -extern LIBEXPORT StructRNA RNA_NodeTree; -extern LIBEXPORT StructRNA RNA_NoiseTexture; -extern LIBEXPORT StructRNA RNA_NorController; -extern LIBEXPORT StructRNA RNA_Object; -extern LIBEXPORT StructRNA RNA_ObjectBase; -extern LIBEXPORT StructRNA RNA_ObstacleFluidSettings; -extern LIBEXPORT StructRNA RNA_Operator; -extern LIBEXPORT StructRNA RNA_OperatorFileListElement; -extern LIBEXPORT StructRNA RNA_OperatorMousePath; -extern LIBEXPORT StructRNA RNA_OperatorProperties; -extern LIBEXPORT StructRNA RNA_OperatorStrokeElement; -extern LIBEXPORT StructRNA RNA_OperatorTypeMacro; -extern LIBEXPORT StructRNA RNA_OrController; -extern LIBEXPORT StructRNA RNA_OutflowFluidSettings; -extern LIBEXPORT StructRNA RNA_PackedFile; -extern LIBEXPORT StructRNA RNA_Paint; -extern LIBEXPORT StructRNA RNA_Panel; -extern LIBEXPORT StructRNA RNA_Particle; -extern LIBEXPORT StructRNA RNA_ParticleBrush; -extern LIBEXPORT StructRNA RNA_ParticleDupliWeight; -extern LIBEXPORT StructRNA RNA_ParticleEdit; -extern LIBEXPORT StructRNA RNA_ParticleFluidSettings; -extern LIBEXPORT StructRNA RNA_ParticleHairKey; -extern LIBEXPORT StructRNA RNA_ParticleInstanceModifier; -extern LIBEXPORT StructRNA RNA_ParticleKey; -extern LIBEXPORT StructRNA RNA_ParticleSettings; -extern LIBEXPORT StructRNA RNA_ParticleSettingsTextureSlot; -extern LIBEXPORT StructRNA RNA_ParticleSystem; -extern LIBEXPORT StructRNA RNA_ParticleSystemModifier; -extern LIBEXPORT StructRNA RNA_ParticleTarget; -extern LIBEXPORT StructRNA RNA_PivotConstraint; -extern LIBEXPORT StructRNA RNA_PluginSequence; -extern LIBEXPORT StructRNA RNA_PluginTexture; -extern LIBEXPORT StructRNA RNA_PointCache; -extern LIBEXPORT StructRNA RNA_PointDensity; -extern LIBEXPORT StructRNA RNA_PointDensityTexture; -extern LIBEXPORT StructRNA RNA_PointLamp; -extern LIBEXPORT StructRNA RNA_PointerProperty; -extern LIBEXPORT StructRNA RNA_Pose; -extern LIBEXPORT StructRNA RNA_PoseBone; -extern LIBEXPORT StructRNA RNA_Property; -extern LIBEXPORT StructRNA RNA_PropertyGroup; -extern LIBEXPORT StructRNA RNA_PropertyGroupItem; -extern LIBEXPORT StructRNA RNA_PropertySensor; -extern LIBEXPORT StructRNA RNA_PythonConstraint; -extern LIBEXPORT StructRNA RNA_PythonController; -extern LIBEXPORT StructRNA RNA_RGBANodeSocket; -extern LIBEXPORT StructRNA RNA_RadarSensor; -extern LIBEXPORT StructRNA RNA_RandomSensor; -extern LIBEXPORT StructRNA RNA_RaySensor; -extern LIBEXPORT StructRNA RNA_Region; -extern LIBEXPORT StructRNA RNA_RenderEngine; -extern LIBEXPORT StructRNA RNA_RenderLayer; -extern LIBEXPORT StructRNA RNA_RenderPass; -extern LIBEXPORT StructRNA RNA_RenderResult; -extern LIBEXPORT StructRNA RNA_RenderSettings; -extern LIBEXPORT StructRNA RNA_RigidBodyJointConstraint; -extern LIBEXPORT StructRNA RNA_SPHFluidSettings; -extern LIBEXPORT StructRNA RNA_Scene; -extern LIBEXPORT StructRNA RNA_SceneGameData; -extern LIBEXPORT StructRNA RNA_SceneRenderLayer; -extern LIBEXPORT StructRNA RNA_SceneSequence; -extern LIBEXPORT StructRNA RNA_Scopes; -extern LIBEXPORT StructRNA RNA_Screen; -extern LIBEXPORT StructRNA RNA_ScrewModifier; -extern LIBEXPORT StructRNA RNA_Sculpt; -extern LIBEXPORT StructRNA RNA_Sensor; -extern LIBEXPORT StructRNA RNA_Sequence; -extern LIBEXPORT StructRNA RNA_SequenceColorBalance; -extern LIBEXPORT StructRNA RNA_SequenceCrop; -extern LIBEXPORT StructRNA RNA_SequenceEditor; -extern LIBEXPORT StructRNA RNA_SequenceElement; -extern LIBEXPORT StructRNA RNA_SequenceProxy; -extern LIBEXPORT StructRNA RNA_SequenceTransform; -extern LIBEXPORT StructRNA RNA_ShaderNode; -extern LIBEXPORT StructRNA RNA_ShaderNodeCameraData; -extern LIBEXPORT StructRNA RNA_ShaderNodeCombineRGB; -extern LIBEXPORT StructRNA RNA_ShaderNodeExtendedMaterial; -extern LIBEXPORT StructRNA RNA_ShaderNodeGeometry; -extern LIBEXPORT StructRNA RNA_ShaderNodeHueSaturation; -extern LIBEXPORT StructRNA RNA_ShaderNodeInvert; -extern LIBEXPORT StructRNA RNA_ShaderNodeMapping; -extern LIBEXPORT StructRNA RNA_ShaderNodeMaterial; -extern LIBEXPORT StructRNA RNA_ShaderNodeMath; -extern LIBEXPORT StructRNA RNA_ShaderNodeMixRGB; -extern LIBEXPORT StructRNA RNA_ShaderNodeNormal; -extern LIBEXPORT StructRNA RNA_ShaderNodeOutput; -extern LIBEXPORT StructRNA RNA_ShaderNodeRGB; -extern LIBEXPORT StructRNA RNA_ShaderNodeRGBCurve; -extern LIBEXPORT StructRNA RNA_ShaderNodeRGBToBW; -extern LIBEXPORT StructRNA RNA_ShaderNodeSeparateRGB; -extern LIBEXPORT StructRNA RNA_ShaderNodeSqueeze; -extern LIBEXPORT StructRNA RNA_ShaderNodeTexture; -extern LIBEXPORT StructRNA RNA_ShaderNodeTree; -extern LIBEXPORT StructRNA RNA_ShaderNodeValToRGB; -extern LIBEXPORT StructRNA RNA_ShaderNodeValue; -extern LIBEXPORT StructRNA RNA_ShaderNodeVectorCurve; -extern LIBEXPORT StructRNA RNA_ShaderNodeVectorMath; -extern LIBEXPORT StructRNA RNA_ShapeKey; -extern LIBEXPORT StructRNA RNA_ShapeKeyBezierPoint; -extern LIBEXPORT StructRNA RNA_ShapeKeyCurvePoint; -extern LIBEXPORT StructRNA RNA_ShapeKeyPoint; -extern LIBEXPORT StructRNA RNA_ShrinkwrapConstraint; -extern LIBEXPORT StructRNA RNA_ShrinkwrapModifier; -extern LIBEXPORT StructRNA RNA_SimpleDeformModifier; -extern LIBEXPORT StructRNA RNA_SmokeCollSettings; -extern LIBEXPORT StructRNA RNA_SmokeDomainSettings; -extern LIBEXPORT StructRNA RNA_SmokeFlowSettings; -extern LIBEXPORT StructRNA RNA_SmokeModifier; -extern LIBEXPORT StructRNA RNA_SmoothModifier; -extern LIBEXPORT StructRNA RNA_SoftBodyModifier; -extern LIBEXPORT StructRNA RNA_SoftBodySettings; -extern LIBEXPORT StructRNA RNA_SolidifyModifier; -extern LIBEXPORT StructRNA RNA_Sound; -extern LIBEXPORT StructRNA RNA_SoundSequence; -extern LIBEXPORT StructRNA RNA_Space; -extern LIBEXPORT StructRNA RNA_SpaceConsole; -extern LIBEXPORT StructRNA RNA_SpaceDopeSheetEditor; -extern LIBEXPORT StructRNA RNA_SpaceFileBrowser; -extern LIBEXPORT StructRNA RNA_SpaceGraphEditor; -extern LIBEXPORT StructRNA RNA_SpaceImageEditor; -extern LIBEXPORT StructRNA RNA_SpaceInfo; -extern LIBEXPORT StructRNA RNA_SpaceLogicEditor; -extern LIBEXPORT StructRNA RNA_SpaceNLA; -extern LIBEXPORT StructRNA RNA_SpaceNodeEditor; -extern LIBEXPORT StructRNA RNA_SpaceOutliner; -extern LIBEXPORT StructRNA RNA_SpaceProperties; -extern LIBEXPORT StructRNA RNA_SpaceSequenceEditor; -extern LIBEXPORT StructRNA RNA_SpaceTextEditor; -extern LIBEXPORT StructRNA RNA_SpaceTimeline; -extern LIBEXPORT StructRNA RNA_SpaceUVEditor; -extern LIBEXPORT StructRNA RNA_SpaceUserPreferences; -extern LIBEXPORT StructRNA RNA_SpaceView3D; -extern LIBEXPORT StructRNA RNA_SpeedControlSequence; -extern LIBEXPORT StructRNA RNA_Spline; -extern LIBEXPORT StructRNA RNA_SplineIKConstraint; -extern LIBEXPORT StructRNA RNA_SpotLamp; -extern LIBEXPORT StructRNA RNA_StretchToConstraint; -extern LIBEXPORT StructRNA RNA_StringProperty; -extern LIBEXPORT StructRNA RNA_Struct; -extern LIBEXPORT StructRNA RNA_StucciTexture; -extern LIBEXPORT StructRNA RNA_SubsurfModifier; -extern LIBEXPORT StructRNA RNA_SunLamp; -extern LIBEXPORT StructRNA RNA_SurfaceCurve; -extern LIBEXPORT StructRNA RNA_SurfaceModifier; -extern LIBEXPORT StructRNA RNA_TexMapping; -extern LIBEXPORT StructRNA RNA_Text; -extern LIBEXPORT StructRNA RNA_TextBox; -extern LIBEXPORT StructRNA RNA_TextCharacterFormat; -extern LIBEXPORT StructRNA RNA_TextCurve; -extern LIBEXPORT StructRNA RNA_TextLine; -extern LIBEXPORT StructRNA RNA_TextMarker; -extern LIBEXPORT StructRNA RNA_Texture; -extern LIBEXPORT StructRNA RNA_TextureNode; -extern LIBEXPORT StructRNA RNA_TextureNodeBricks; -extern LIBEXPORT StructRNA RNA_TextureNodeChecker; -extern LIBEXPORT StructRNA RNA_TextureNodeCompose; -extern LIBEXPORT StructRNA RNA_TextureNodeCoordinates; -extern LIBEXPORT StructRNA RNA_TextureNodeCurveRGB; -extern LIBEXPORT StructRNA RNA_TextureNodeCurveTime; -extern LIBEXPORT StructRNA RNA_TextureNodeDecompose; -extern LIBEXPORT StructRNA RNA_TextureNodeDistance; -extern LIBEXPORT StructRNA RNA_TextureNodeHueSaturation; -extern LIBEXPORT StructRNA RNA_TextureNodeImage; -extern LIBEXPORT StructRNA RNA_TextureNodeInvert; -extern LIBEXPORT StructRNA RNA_TextureNodeMath; -extern LIBEXPORT StructRNA RNA_TextureNodeMixRGB; -extern LIBEXPORT StructRNA RNA_TextureNodeOutput; -extern LIBEXPORT StructRNA RNA_TextureNodeRGBToBW; -extern LIBEXPORT StructRNA RNA_TextureNodeRotate; -extern LIBEXPORT StructRNA RNA_TextureNodeScale; -extern LIBEXPORT StructRNA RNA_TextureNodeTexture; -extern LIBEXPORT StructRNA RNA_TextureNodeTranslate; -extern LIBEXPORT StructRNA RNA_TextureNodeTree; -extern LIBEXPORT StructRNA RNA_TextureNodeValToNor; -extern LIBEXPORT StructRNA RNA_TextureNodeValToRGB; -extern LIBEXPORT StructRNA RNA_TextureNodeViewer; -extern LIBEXPORT StructRNA RNA_TextureSlot; -extern LIBEXPORT StructRNA RNA_Theme; -extern LIBEXPORT StructRNA RNA_ThemeAudioWindow; -extern LIBEXPORT StructRNA RNA_ThemeBoneColorSet; -extern LIBEXPORT StructRNA RNA_ThemeConsole; -extern LIBEXPORT StructRNA RNA_ThemeDopeSheet; -extern LIBEXPORT StructRNA RNA_ThemeFileBrowser; -extern LIBEXPORT StructRNA RNA_ThemeFontStyle; -extern LIBEXPORT StructRNA RNA_ThemeGraphEditor; -extern LIBEXPORT StructRNA RNA_ThemeImageEditor; -extern LIBEXPORT StructRNA RNA_ThemeInfo; -extern LIBEXPORT StructRNA RNA_ThemeLogicEditor; -extern LIBEXPORT StructRNA RNA_ThemeNLAEditor; -extern LIBEXPORT StructRNA RNA_ThemeNodeEditor; -extern LIBEXPORT StructRNA RNA_ThemeOutliner; -extern LIBEXPORT StructRNA RNA_ThemeProperties; -extern LIBEXPORT StructRNA RNA_ThemeSequenceEditor; -extern LIBEXPORT StructRNA RNA_ThemeStyle; -extern LIBEXPORT StructRNA RNA_ThemeTextEditor; -extern LIBEXPORT StructRNA RNA_ThemeTimeline; -extern LIBEXPORT StructRNA RNA_ThemeUserInterface; -extern LIBEXPORT StructRNA RNA_ThemeUserPreferences; -extern LIBEXPORT StructRNA RNA_ThemeView3D; -extern LIBEXPORT StructRNA RNA_ThemeWidgetColors; -extern LIBEXPORT StructRNA RNA_ThemeWidgetStateColors; -extern LIBEXPORT StructRNA RNA_TimelineMarker; -extern LIBEXPORT StructRNA RNA_Timer; -extern LIBEXPORT StructRNA RNA_ToolSettings; -extern LIBEXPORT StructRNA RNA_TouchSensor; -extern LIBEXPORT StructRNA RNA_TrackToConstraint; -extern LIBEXPORT StructRNA RNA_TransformConstraint; -extern LIBEXPORT StructRNA RNA_TransformSequence; -extern LIBEXPORT StructRNA RNA_UILayout; -extern LIBEXPORT StructRNA RNA_UIListItem; -extern LIBEXPORT StructRNA RNA_UVProjectModifier; -extern LIBEXPORT StructRNA RNA_UVProjector; -extern LIBEXPORT StructRNA RNA_UnitSettings; -extern LIBEXPORT StructRNA RNA_UnknownType; -extern LIBEXPORT StructRNA RNA_UserPreferences; -extern LIBEXPORT StructRNA RNA_UserPreferencesEdit; -extern LIBEXPORT StructRNA RNA_UserPreferencesFilePaths; -extern LIBEXPORT StructRNA RNA_UserPreferencesSystem; -extern LIBEXPORT StructRNA RNA_UserPreferencesView; -extern LIBEXPORT StructRNA RNA_UserSolidLight; -extern LIBEXPORT StructRNA RNA_ValueNodeSocket; -extern LIBEXPORT StructRNA RNA_VectorFont; -extern LIBEXPORT StructRNA RNA_VectorNodeSocket; -extern LIBEXPORT StructRNA RNA_VertexGroup; -extern LIBEXPORT StructRNA RNA_VertexGroupElement; -extern LIBEXPORT StructRNA RNA_VertexPaint; -extern LIBEXPORT StructRNA RNA_VoronoiTexture; -extern LIBEXPORT StructRNA RNA_VoxelData; -extern LIBEXPORT StructRNA RNA_VoxelDataTexture; -extern LIBEXPORT StructRNA RNA_WarpModifier; -extern LIBEXPORT StructRNA RNA_WaveModifier; -extern LIBEXPORT StructRNA RNA_Window; -extern LIBEXPORT StructRNA RNA_WindowManager; -extern LIBEXPORT StructRNA RNA_WipeSequence; -extern LIBEXPORT StructRNA RNA_WoodTexture; -extern LIBEXPORT StructRNA RNA_World; -extern LIBEXPORT StructRNA RNA_WorldAmbientOcclusion; -extern LIBEXPORT StructRNA RNA_WorldMistSettings; -extern LIBEXPORT StructRNA RNA_WorldStarsSettings; -extern LIBEXPORT StructRNA RNA_WorldTextureSlot; -extern LIBEXPORT StructRNA RNA_XnorController; -extern LIBEXPORT StructRNA RNA_XorController; +extern StructRNA RNA_Action; +extern StructRNA RNA_ActionConstraint; +extern StructRNA RNA_ActionGroup; +extern StructRNA RNA_Actuator; +extern StructRNA RNA_ActuatorSensor; +extern StructRNA RNA_Addon; +extern StructRNA RNA_AdjustmentSequence; +extern StructRNA RNA_AlwaysSensor; +extern StructRNA RNA_AndController; +extern StructRNA RNA_AnimData; +extern StructRNA RNA_AnimViz; +extern StructRNA RNA_AnimVizMotionPaths; +extern StructRNA RNA_AnimVizOnionSkinning; +extern StructRNA RNA_AnyType; +extern StructRNA RNA_Area; +extern StructRNA RNA_AreaLamp; +extern StructRNA RNA_Armature; +extern StructRNA RNA_ArmatureModifier; +extern StructRNA RNA_ArmatureSensor; +extern StructRNA RNA_ArrayModifier; +extern StructRNA RNA_BackgroundImage; +extern StructRNA RNA_BevelModifier; +extern StructRNA RNA_BezierSplinePoint; +extern StructRNA RNA_BlendData; +extern StructRNA RNA_BlendTexture; +extern StructRNA RNA_BlenderRNA; +extern StructRNA RNA_BoidRule; +extern StructRNA RNA_BoidRuleAverageSpeed; +extern StructRNA RNA_BoidRuleAvoid; +extern StructRNA RNA_BoidRuleAvoidCollision; +extern StructRNA RNA_BoidRuleFight; +extern StructRNA RNA_BoidRuleFollowLeader; +extern StructRNA RNA_BoidRuleGoal; +extern StructRNA RNA_BoidSettings; +extern StructRNA RNA_BoidState; +extern StructRNA RNA_Bone; +extern StructRNA RNA_BoneGroup; +extern StructRNA RNA_BooleanModifier; +extern StructRNA RNA_BooleanProperty; +extern StructRNA RNA_Brush; +extern StructRNA RNA_BrushTextureSlot; +extern StructRNA RNA_BuildModifier; +extern StructRNA RNA_Camera; +extern StructRNA RNA_CastModifier; +extern StructRNA RNA_ChildOfConstraint; +extern StructRNA RNA_ChildParticle; +extern StructRNA RNA_ClampToConstraint; +extern StructRNA RNA_ClothCollisionSettings; +extern StructRNA RNA_ClothModifier; +extern StructRNA RNA_ClothSettings; +extern StructRNA RNA_CloudsTexture; +extern StructRNA RNA_CollectionProperty; +extern StructRNA RNA_CollisionModifier; +extern StructRNA RNA_CollisionSensor; +extern StructRNA RNA_CollisionSettings; +extern StructRNA RNA_ColorRamp; +extern StructRNA RNA_ColorRampElement; +extern StructRNA RNA_ColorSequence; +extern StructRNA RNA_CompositorNode; +extern StructRNA RNA_CompositorNodeAlphaOver; +extern StructRNA RNA_CompositorNodeBilateralblur; +extern StructRNA RNA_CompositorNodeBlur; +extern StructRNA RNA_CompositorNodeBrightContrast; +extern StructRNA RNA_CompositorNodeChannelMatte; +extern StructRNA RNA_CompositorNodeChromaMatte; +extern StructRNA RNA_CompositorNodeColorMatte; +extern StructRNA RNA_CompositorNodeColorSpill; +extern StructRNA RNA_CompositorNodeCombHSVA; +extern StructRNA RNA_CompositorNodeCombRGBA; +extern StructRNA RNA_CompositorNodeCombYCCA; +extern StructRNA RNA_CompositorNodeCombYUVA; +extern StructRNA RNA_CompositorNodeComposite; +extern StructRNA RNA_CompositorNodeCrop; +extern StructRNA RNA_CompositorNodeCurveRGB; +extern StructRNA RNA_CompositorNodeCurveVec; +extern StructRNA RNA_CompositorNodeDBlur; +extern StructRNA RNA_CompositorNodeDefocus; +extern StructRNA RNA_CompositorNodeDiffMatte; +extern StructRNA RNA_CompositorNodeDilateErode; +extern StructRNA RNA_CompositorNodeDisplace; +extern StructRNA RNA_CompositorNodeDistanceMatte; +extern StructRNA RNA_CompositorNodeFilter; +extern StructRNA RNA_CompositorNodeFlip; +extern StructRNA RNA_CompositorNodeGamma; +extern StructRNA RNA_CompositorNodeGlare; +extern StructRNA RNA_CompositorNodeHueSat; +extern StructRNA RNA_CompositorNodeIDMask; +extern StructRNA RNA_CompositorNodeImage; +extern StructRNA RNA_CompositorNodeInvert; +extern StructRNA RNA_CompositorNodeLensdist; +extern StructRNA RNA_CompositorNodeLevels; +extern StructRNA RNA_CompositorNodeLumaMatte; +extern StructRNA RNA_CompositorNodeMapUV; +extern StructRNA RNA_CompositorNodeMapValue; +extern StructRNA RNA_CompositorNodeMath; +extern StructRNA RNA_CompositorNodeMixRGB; +extern StructRNA RNA_CompositorNodeNormal; +extern StructRNA RNA_CompositorNodeNormalize; +extern StructRNA RNA_CompositorNodeOutputFile; +extern StructRNA RNA_CompositorNodePremulKey; +extern StructRNA RNA_CompositorNodeRGB; +extern StructRNA RNA_CompositorNodeRGBToBW; +extern StructRNA RNA_CompositorNodeRLayers; +extern StructRNA RNA_CompositorNodeRotate; +extern StructRNA RNA_CompositorNodeScale; +extern StructRNA RNA_CompositorNodeSepHSVA; +extern StructRNA RNA_CompositorNodeSepRGBA; +extern StructRNA RNA_CompositorNodeSepYCCA; +extern StructRNA RNA_CompositorNodeSepYUVA; +extern StructRNA RNA_CompositorNodeSetAlpha; +extern StructRNA RNA_CompositorNodeSplitViewer; +extern StructRNA RNA_CompositorNodeTexture; +extern StructRNA RNA_CompositorNodeTime; +extern StructRNA RNA_CompositorNodeTonemap; +extern StructRNA RNA_CompositorNodeTranslate; +extern StructRNA RNA_CompositorNodeTree; +extern StructRNA RNA_CompositorNodeValToRGB; +extern StructRNA RNA_CompositorNodeValue; +extern StructRNA RNA_CompositorNodeVecBlur; +extern StructRNA RNA_CompositorNodeViewer; +extern StructRNA RNA_CompositorNodeZcombine; +extern StructRNA RNA_ConsoleLine; +extern StructRNA RNA_Constraint; +extern StructRNA RNA_ConstraintTarget; +extern StructRNA RNA_Context; +extern StructRNA RNA_ControlFluidSettings; +extern StructRNA RNA_Controller; +extern StructRNA RNA_CopyLocationConstraint; +extern StructRNA RNA_CopyRotationConstraint; +extern StructRNA RNA_CopyScaleConstraint; +extern StructRNA RNA_CopyTransformsConstraint; +extern StructRNA RNA_Curve; +extern StructRNA RNA_CurveMap; +extern StructRNA RNA_CurveMapPoint; +extern StructRNA RNA_CurveMapping; +extern StructRNA RNA_CurveModifier; +extern StructRNA RNA_CurvePoint; +extern StructRNA RNA_DampedTrackConstraint; +extern StructRNA RNA_DecimateModifier; +extern StructRNA RNA_DelaySensor; +extern StructRNA RNA_DisplaceModifier; +extern StructRNA RNA_DistortedNoiseTexture; +extern StructRNA RNA_DomainFluidSettings; +extern StructRNA RNA_Driver; +extern StructRNA RNA_DriverTarget; +extern StructRNA RNA_DriverVariable; +extern StructRNA RNA_DupliObject; +extern StructRNA RNA_EdgeSplitModifier; +extern StructRNA RNA_EditBone; +extern StructRNA RNA_EffectSequence; +extern StructRNA RNA_EffectorWeights; +extern StructRNA RNA_EnumProperty; +extern StructRNA RNA_EnumPropertyItem; +extern StructRNA RNA_EnvironmentMap; +extern StructRNA RNA_EnvironmentMapTexture; +extern StructRNA RNA_Event; +extern StructRNA RNA_ExplodeModifier; +extern StructRNA RNA_ExpressionController; +extern StructRNA RNA_FCurve; +extern StructRNA RNA_FCurveSample; +extern StructRNA RNA_FModifier; +extern StructRNA RNA_FModifierCycles; +extern StructRNA RNA_FModifierEnvelope; +extern StructRNA RNA_FModifierEnvelopeControlPoint; +extern StructRNA RNA_FModifierFunctionGenerator; +extern StructRNA RNA_FModifierGenerator; +extern StructRNA RNA_FModifierLimits; +extern StructRNA RNA_FModifierNoise; +extern StructRNA RNA_FModifierPython; +extern StructRNA RNA_FModifierStepped; +extern StructRNA RNA_FieldSettings; +extern StructRNA RNA_FileSelectParams; +extern StructRNA RNA_FloatProperty; +extern StructRNA RNA_FloorConstraint; +extern StructRNA RNA_FluidFluidSettings; +extern StructRNA RNA_FluidSettings; +extern StructRNA RNA_FluidSimulationModifier; +extern StructRNA RNA_FollowPathConstraint; +extern StructRNA RNA_Function; +extern StructRNA RNA_GPencilFrame; +extern StructRNA RNA_GPencilLayer; +extern StructRNA RNA_GPencilStroke; +extern StructRNA RNA_GPencilStrokePoint; +extern StructRNA RNA_GameBooleanProperty; +extern StructRNA RNA_GameFloatProperty; +extern StructRNA RNA_GameIntProperty; +extern StructRNA RNA_GameObjectSettings; +extern StructRNA RNA_GameProperty; +extern StructRNA RNA_GameSoftBodySettings; +extern StructRNA RNA_GameStringProperty; +extern StructRNA RNA_GameTimerProperty; +extern StructRNA RNA_GlowSequence; +extern StructRNA RNA_GreasePencil; +extern StructRNA RNA_Group; +extern StructRNA RNA_Header; +extern StructRNA RNA_HemiLamp; +extern StructRNA RNA_Histogram; +extern StructRNA RNA_HookModifier; +extern StructRNA RNA_ID; +extern StructRNA RNA_IKParam; +extern StructRNA RNA_Image; +extern StructRNA RNA_ImagePaint; +extern StructRNA RNA_ImageSequence; +extern StructRNA RNA_ImageTexture; +extern StructRNA RNA_ImageUser; +extern StructRNA RNA_InflowFluidSettings; +extern StructRNA RNA_IntProperty; +extern StructRNA RNA_Itasc; +extern StructRNA RNA_JoystickSensor; +extern StructRNA RNA_Key; +extern StructRNA RNA_KeyConfig; +extern StructRNA RNA_KeyMap; +extern StructRNA RNA_KeyMapItem; +extern StructRNA RNA_KeyboardSensor; +extern StructRNA RNA_Keyframe; +extern StructRNA RNA_KeyingSet; +extern StructRNA RNA_KeyingSetInfo; +extern StructRNA RNA_KeyingSetPath; +extern StructRNA RNA_KinematicConstraint; +extern StructRNA RNA_Lamp; +extern StructRNA RNA_LampSkySettings; +extern StructRNA RNA_LampTextureSlot; +extern StructRNA RNA_Lattice; +extern StructRNA RNA_LatticeModifier; +extern StructRNA RNA_LatticePoint; +extern StructRNA RNA_Library; +extern StructRNA RNA_LimitDistanceConstraint; +extern StructRNA RNA_LimitLocationConstraint; +extern StructRNA RNA_LimitRotationConstraint; +extern StructRNA RNA_LimitScaleConstraint; +extern StructRNA RNA_LockedTrackConstraint; +extern StructRNA RNA_Macro; +extern StructRNA RNA_MagicTexture; +extern StructRNA RNA_MarbleTexture; +extern StructRNA RNA_MaskModifier; +extern StructRNA RNA_Material; +extern StructRNA RNA_MaterialHalo; +extern StructRNA RNA_MaterialPhysics; +extern StructRNA RNA_MaterialRaytraceMirror; +extern StructRNA RNA_MaterialRaytraceTransparency; +extern StructRNA RNA_MaterialSlot; +extern StructRNA RNA_MaterialStrand; +extern StructRNA RNA_MaterialSubsurfaceScattering; +extern StructRNA RNA_MaterialTextureSlot; +extern StructRNA RNA_MaterialVolume; +extern StructRNA RNA_Menu; +extern StructRNA RNA_Mesh; +extern StructRNA RNA_MeshColor; +extern StructRNA RNA_MeshColorLayer; +extern StructRNA RNA_MeshDeformModifier; +extern StructRNA RNA_MeshEdge; +extern StructRNA RNA_MeshFace; +extern StructRNA RNA_MeshFloatProperty; +extern StructRNA RNA_MeshFloatPropertyLayer; +extern StructRNA RNA_MeshIntProperty; +extern StructRNA RNA_MeshIntPropertyLayer; +extern StructRNA RNA_MeshSticky; +extern StructRNA RNA_MeshStringProperty; +extern StructRNA RNA_MeshStringPropertyLayer; +extern StructRNA RNA_MeshTextureFace; +extern StructRNA RNA_MeshTextureFaceLayer; +extern StructRNA RNA_MeshVertex; +extern StructRNA RNA_MessageSensor; +extern StructRNA RNA_MetaBall; +extern StructRNA RNA_MetaElement; +extern StructRNA RNA_MetaSequence; +extern StructRNA RNA_MirrorModifier; +extern StructRNA RNA_Modifier; +extern StructRNA RNA_MotionPath; +extern StructRNA RNA_MotionPathVert; +extern StructRNA RNA_MouseSensor; +extern StructRNA RNA_MovieSequence; +extern StructRNA RNA_MulticamSequence; +extern StructRNA RNA_MultiresModifier; +extern StructRNA RNA_MusgraveTexture; +extern StructRNA RNA_NandController; +extern StructRNA RNA_NearSensor; +extern StructRNA RNA_NlaStrip; +extern StructRNA RNA_NlaTrack; +extern StructRNA RNA_Node; +extern StructRNA RNA_NodeGroup; +extern StructRNA RNA_NodeLink; +extern StructRNA RNA_NodeSocket; +extern StructRNA RNA_NodeTree; +extern StructRNA RNA_NoiseTexture; +extern StructRNA RNA_NorController; +extern StructRNA RNA_Object; +extern StructRNA RNA_ObjectBase; +extern StructRNA RNA_ObstacleFluidSettings; +extern StructRNA RNA_Operator; +extern StructRNA RNA_OperatorFileListElement; +extern StructRNA RNA_OperatorMousePath; +extern StructRNA RNA_OperatorProperties; +extern StructRNA RNA_OperatorStrokeElement; +extern StructRNA RNA_OperatorTypeMacro; +extern StructRNA RNA_OrController; +extern StructRNA RNA_OutflowFluidSettings; +extern StructRNA RNA_PackedFile; +extern StructRNA RNA_Paint; +extern StructRNA RNA_Panel; +extern StructRNA RNA_Particle; +extern StructRNA RNA_ParticleBrush; +extern StructRNA RNA_ParticleDupliWeight; +extern StructRNA RNA_ParticleEdit; +extern StructRNA RNA_ParticleFluidSettings; +extern StructRNA RNA_ParticleHairKey; +extern StructRNA RNA_ParticleInstanceModifier; +extern StructRNA RNA_ParticleKey; +extern StructRNA RNA_ParticleSettings; +extern StructRNA RNA_ParticleSettingsTextureSlot; +extern StructRNA RNA_ParticleSystem; +extern StructRNA RNA_ParticleSystemModifier; +extern StructRNA RNA_ParticleTarget; +extern StructRNA RNA_PivotConstraint; +extern StructRNA RNA_PluginSequence; +extern StructRNA RNA_PluginTexture; +extern StructRNA RNA_PointCache; +extern StructRNA RNA_PointDensity; +extern StructRNA RNA_PointDensityTexture; +extern StructRNA RNA_PointLamp; +extern StructRNA RNA_PointerProperty; +extern StructRNA RNA_Pose; +extern StructRNA RNA_PoseBone; +extern StructRNA RNA_Property; +extern StructRNA RNA_PropertyGroup; +extern StructRNA RNA_PropertyGroupItem; +extern StructRNA RNA_PropertySensor; +extern StructRNA RNA_PythonConstraint; +extern StructRNA RNA_PythonController; +extern StructRNA RNA_RGBANodeSocket; +extern StructRNA RNA_RadarSensor; +extern StructRNA RNA_RandomSensor; +extern StructRNA RNA_RaySensor; +extern StructRNA RNA_Region; +extern StructRNA RNA_RenderEngine; +extern StructRNA RNA_RenderLayer; +extern StructRNA RNA_RenderPass; +extern StructRNA RNA_RenderResult; +extern StructRNA RNA_RenderSettings; +extern StructRNA RNA_RigidBodyJointConstraint; +extern StructRNA RNA_SPHFluidSettings; +extern StructRNA RNA_Scene; +extern StructRNA RNA_SceneGameData; +extern StructRNA RNA_SceneRenderLayer; +extern StructRNA RNA_SceneSequence; +extern StructRNA RNA_SceneObjects; +extern StructRNA RNA_Scopes; +extern StructRNA RNA_Screen; +extern StructRNA RNA_ScrewModifier; +extern StructRNA RNA_Sculpt; +extern StructRNA RNA_Sensor; +extern StructRNA RNA_Sequence; +extern StructRNA RNA_SequenceColorBalance; +extern StructRNA RNA_SequenceCrop; +extern StructRNA RNA_SequenceEditor; +extern StructRNA RNA_SequenceElement; +extern StructRNA RNA_SequenceProxy; +extern StructRNA RNA_SequenceTransform; +extern StructRNA RNA_ShaderNode; +extern StructRNA RNA_ShaderNodeCameraData; +extern StructRNA RNA_ShaderNodeCombineRGB; +extern StructRNA RNA_ShaderNodeExtendedMaterial; +extern StructRNA RNA_ShaderNodeGeometry; +extern StructRNA RNA_ShaderNodeHueSaturation; +extern StructRNA RNA_ShaderNodeInvert; +extern StructRNA RNA_ShaderNodeMapping; +extern StructRNA RNA_ShaderNodeMaterial; +extern StructRNA RNA_ShaderNodeMath; +extern StructRNA RNA_ShaderNodeMixRGB; +extern StructRNA RNA_ShaderNodeNormal; +extern StructRNA RNA_ShaderNodeOutput; +extern StructRNA RNA_ShaderNodeRGB; +extern StructRNA RNA_ShaderNodeRGBCurve; +extern StructRNA RNA_ShaderNodeRGBToBW; +extern StructRNA RNA_ShaderNodeSeparateRGB; +extern StructRNA RNA_ShaderNodeSqueeze; +extern StructRNA RNA_ShaderNodeTexture; +extern StructRNA RNA_ShaderNodeTree; +extern StructRNA RNA_ShaderNodeValToRGB; +extern StructRNA RNA_ShaderNodeValue; +extern StructRNA RNA_ShaderNodeVectorCurve; +extern StructRNA RNA_ShaderNodeVectorMath; +extern StructRNA RNA_ShapeKey; +extern StructRNA RNA_ShapeKeyBezierPoint; +extern StructRNA RNA_ShapeKeyCurvePoint; +extern StructRNA RNA_ShapeKeyPoint; +extern StructRNA RNA_ShrinkwrapConstraint; +extern StructRNA RNA_ShrinkwrapModifier; +extern StructRNA RNA_SimpleDeformModifier; +extern StructRNA RNA_SmokeCollSettings; +extern StructRNA RNA_SmokeDomainSettings; +extern StructRNA RNA_SmokeFlowSettings; +extern StructRNA RNA_SmokeModifier; +extern StructRNA RNA_SmoothModifier; +extern StructRNA RNA_SoftBodyModifier; +extern StructRNA RNA_SoftBodySettings; +extern StructRNA RNA_SolidifyModifier; +extern StructRNA RNA_Sound; +extern StructRNA RNA_SoundSequence; +extern StructRNA RNA_Space; +extern StructRNA RNA_SpaceConsole; +extern StructRNA RNA_SpaceDopeSheetEditor; +extern StructRNA RNA_SpaceFileBrowser; +extern StructRNA RNA_SpaceGraphEditor; +extern StructRNA RNA_SpaceImageEditor; +extern StructRNA RNA_SpaceInfo; +extern StructRNA RNA_SpaceLogicEditor; +extern StructRNA RNA_SpaceNLA; +extern StructRNA RNA_SpaceNodeEditor; +extern StructRNA RNA_SpaceOutliner; +extern StructRNA RNA_SpaceProperties; +extern StructRNA RNA_SpaceSequenceEditor; +extern StructRNA RNA_SpaceTextEditor; +extern StructRNA RNA_SpaceTimeline; +extern StructRNA RNA_SpaceUVEditor; +extern StructRNA RNA_SpaceUserPreferences; +extern StructRNA RNA_SpaceView3D; +extern StructRNA RNA_SpeedControlSequence; +extern StructRNA RNA_Spline; +extern StructRNA RNA_SplineIKConstraint; +extern StructRNA RNA_SpotLamp; +extern StructRNA RNA_StretchToConstraint; +extern StructRNA RNA_StringProperty; +extern StructRNA RNA_Struct; +extern StructRNA RNA_StucciTexture; +extern StructRNA RNA_SubsurfModifier; +extern StructRNA RNA_SunLamp; +extern StructRNA RNA_SurfaceCurve; +extern StructRNA RNA_SurfaceModifier; +extern StructRNA RNA_TexMapping; +extern StructRNA RNA_Text; +extern StructRNA RNA_TextBox; +extern StructRNA RNA_TextCharacterFormat; +extern StructRNA RNA_TextCurve; +extern StructRNA RNA_TextLine; +extern StructRNA RNA_TextMarker; +extern StructRNA RNA_Texture; +extern StructRNA RNA_TextureNode; +extern StructRNA RNA_TextureNodeBricks; +extern StructRNA RNA_TextureNodeChecker; +extern StructRNA RNA_TextureNodeCompose; +extern StructRNA RNA_TextureNodeCoordinates; +extern StructRNA RNA_TextureNodeCurveRGB; +extern StructRNA RNA_TextureNodeCurveTime; +extern StructRNA RNA_TextureNodeDecompose; +extern StructRNA RNA_TextureNodeDistance; +extern StructRNA RNA_TextureNodeHueSaturation; +extern StructRNA RNA_TextureNodeImage; +extern StructRNA RNA_TextureNodeInvert; +extern StructRNA RNA_TextureNodeMath; +extern StructRNA RNA_TextureNodeMixRGB; +extern StructRNA RNA_TextureNodeOutput; +extern StructRNA RNA_TextureNodeRGBToBW; +extern StructRNA RNA_TextureNodeRotate; +extern StructRNA RNA_TextureNodeScale; +extern StructRNA RNA_TextureNodeTexture; +extern StructRNA RNA_TextureNodeTranslate; +extern StructRNA RNA_TextureNodeTree; +extern StructRNA RNA_TextureNodeValToNor; +extern StructRNA RNA_TextureNodeValToRGB; +extern StructRNA RNA_TextureNodeViewer; +extern StructRNA RNA_TextureSlot; +extern StructRNA RNA_Theme; +extern StructRNA RNA_ThemeAudioWindow; +extern StructRNA RNA_ThemeBoneColorSet; +extern StructRNA RNA_ThemeConsole; +extern StructRNA RNA_ThemeDopeSheet; +extern StructRNA RNA_ThemeFileBrowser; +extern StructRNA RNA_ThemeFontStyle; +extern StructRNA RNA_ThemeGraphEditor; +extern StructRNA RNA_ThemeImageEditor; +extern StructRNA RNA_ThemeInfo; +extern StructRNA RNA_ThemeLogicEditor; +extern StructRNA RNA_ThemeNLAEditor; +extern StructRNA RNA_ThemeNodeEditor; +extern StructRNA RNA_ThemeOutliner; +extern StructRNA RNA_ThemeProperties; +extern StructRNA RNA_ThemeSequenceEditor; +extern StructRNA RNA_ThemeStyle; +extern StructRNA RNA_ThemeTextEditor; +extern StructRNA RNA_ThemeTimeline; +extern StructRNA RNA_ThemeUserInterface; +extern StructRNA RNA_ThemeUserPreferences; +extern StructRNA RNA_ThemeView3D; +extern StructRNA RNA_ThemeWidgetColors; +extern StructRNA RNA_ThemeWidgetStateColors; +extern StructRNA RNA_TimelineMarker; +extern StructRNA RNA_Timer; +extern StructRNA RNA_ToolSettings; +extern StructRNA RNA_TouchSensor; +extern StructRNA RNA_TrackToConstraint; +extern StructRNA RNA_TransformConstraint; +extern StructRNA RNA_TransformSequence; +extern StructRNA RNA_UILayout; +extern StructRNA RNA_UIListItem; +extern StructRNA RNA_UVProjectModifier; +extern StructRNA RNA_UVProjector; +extern StructRNA RNA_UnitSettings; +extern StructRNA RNA_UnknownType; +extern StructRNA RNA_UserPreferences; +extern StructRNA RNA_UserPreferencesEdit; +extern StructRNA RNA_UserPreferencesFilePaths; +extern StructRNA RNA_UserPreferencesSystem; +extern StructRNA RNA_UserPreferencesView; +extern StructRNA RNA_UserSolidLight; +extern StructRNA RNA_ValueNodeSocket; +extern StructRNA RNA_VectorFont; +extern StructRNA RNA_VectorNodeSocket; +extern StructRNA RNA_VertexGroup; +extern StructRNA RNA_VertexGroupElement; +extern StructRNA RNA_VertexPaint; +extern StructRNA RNA_VoronoiTexture; +extern StructRNA RNA_VoxelData; +extern StructRNA RNA_VoxelDataTexture; +extern StructRNA RNA_WarpModifier; +extern StructRNA RNA_WaveModifier; +extern StructRNA RNA_Window; +extern StructRNA RNA_WindowManager; +extern StructRNA RNA_WipeSequence; +extern StructRNA RNA_WoodTexture; +extern StructRNA RNA_World; +extern StructRNA RNA_WorldAmbientOcclusion; +extern StructRNA RNA_WorldMistSettings; +extern StructRNA RNA_WorldStarsSettings; +extern StructRNA RNA_WorldTextureSlot; +extern StructRNA RNA_XnorController; +extern StructRNA RNA_XorController; + /* Pointer * @@ -585,56 +587,55 @@ extern LIBEXPORT StructRNA RNA_XorController; * There is also a way to get a pointer with the information about all structs. */ -LIBEXPORT void RNA_main_pointer_create(struct Main *main, PointerRNA *r_ptr); -LIBEXPORT void RNA_id_pointer_create(struct ID *id, PointerRNA *r_ptr); -LIBEXPORT void RNA_pointer_create(struct ID *id, StructRNA *type, void *data, PointerRNA *r_ptr); +void RNA_main_pointer_create(struct Main *main, PointerRNA *r_ptr); +void RNA_id_pointer_create(struct ID *id, PointerRNA *r_ptr); +void RNA_pointer_create(struct ID *id, StructRNA *type, void *data, PointerRNA *r_ptr); -LIBEXPORT void RNA_blender_rna_pointer_create(PointerRNA *r_ptr); -LIBEXPORT void RNA_pointer_recast(PointerRNA *ptr, PointerRNA *r_ptr); +void RNA_blender_rna_pointer_create(PointerRNA *r_ptr); +void RNA_pointer_recast(PointerRNA *ptr, PointerRNA *r_ptr); -extern LIBEXPORT const PointerRNA PointerRNA_NULL; +extern const PointerRNA PointerRNA_NULL; /* Structs */ -LIBEXPORT const char *RNA_struct_identifier(StructRNA *type); -LIBEXPORT const char *RNA_struct_ui_name(StructRNA *type); -LIBEXPORT const char *RNA_struct_ui_description(StructRNA *type); -LIBEXPORT int RNA_struct_ui_icon(StructRNA *type); +const char *RNA_struct_identifier(StructRNA *type); +const char *RNA_struct_ui_name(StructRNA *type); +const char *RNA_struct_ui_description(StructRNA *type); +int RNA_struct_ui_icon(StructRNA *type); -LIBEXPORT PropertyRNA *RNA_struct_name_property(StructRNA *type); -LIBEXPORT PropertyRNA *RNA_struct_iterator_property(StructRNA *type); -LIBEXPORT StructRNA *RNA_struct_base(StructRNA *type); +PropertyRNA *RNA_struct_name_property(StructRNA *type); +PropertyRNA *RNA_struct_iterator_property(StructRNA *type); +StructRNA *RNA_struct_base(StructRNA *type); -LIBEXPORT int RNA_struct_is_ID(StructRNA *type); -LIBEXPORT int RNA_struct_is_a(StructRNA *type, StructRNA *srna); +int RNA_struct_is_ID(StructRNA *type); +int RNA_struct_is_a(StructRNA *type, StructRNA *srna); -LIBEXPORT StructRegisterFunc RNA_struct_register(StructRNA *type); -LIBEXPORT StructUnregisterFunc RNA_struct_unregister(StructRNA *type); -LIBEXPORT void **RNA_struct_instance(PointerRNA *ptr); +StructRegisterFunc RNA_struct_register(StructRNA *type); +StructUnregisterFunc RNA_struct_unregister(StructRNA *type); void **RNA_struct_instance(PointerRNA *ptr); -LIBEXPORT void *RNA_struct_py_type_get(StructRNA *srna); -LIBEXPORT void RNA_struct_py_type_set(StructRNA *srna, void *py_type); +void *RNA_struct_py_type_get(StructRNA *srna); +void RNA_struct_py_type_set(StructRNA *srna, void *py_type); -LIBEXPORT void *RNA_struct_blender_type_get(StructRNA *srna); -LIBEXPORT void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type); +void *RNA_struct_blender_type_get(StructRNA *srna); +void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type); -LIBEXPORT struct IDProperty *RNA_struct_idprops(PointerRNA *ptr, int create); -LIBEXPORT int RNA_struct_idprops_check(StructRNA *srna); -LIBEXPORT int RNA_struct_idprops_register_check(StructRNA *type); +struct IDProperty *RNA_struct_idprops(PointerRNA *ptr, int create); +int RNA_struct_idprops_check(StructRNA *srna); +int RNA_struct_idprops_register_check(StructRNA *type); int RNA_struct_idprops_unset(PointerRNA *ptr, const char *identifier); -LIBEXPORT PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier); -LIBEXPORT int RNA_struct_contains_property(PointerRNA *ptr, PropertyRNA *prop_test); +PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier); +int RNA_struct_contains_property(PointerRNA *ptr, PropertyRNA *prop_test); /* lower level functions for access to type properties */ -LIBEXPORT const struct ListBase *RNA_struct_type_properties(StructRNA *srna); -LIBEXPORT PropertyRNA *RNA_struct_type_find_property(StructRNA *srna, const char *identifier); +const struct ListBase *RNA_struct_type_properties(StructRNA *srna); +PropertyRNA *RNA_struct_type_find_property(StructRNA *srna, const char *identifier); -LIBEXPORT FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier); -LIBEXPORT const struct ListBase *RNA_struct_type_functions(StructRNA *srna); +FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier); +const struct ListBase *RNA_struct_type_functions(StructRNA *srna); -LIBEXPORT char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen); +char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen); /* Properties * @@ -643,143 +644,143 @@ LIBEXPORT char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int f /* Property Information */ -LIBEXPORT const char *RNA_property_identifier(PropertyRNA *prop); -LIBEXPORT const char *RNA_property_description(PropertyRNA *prop); +const char *RNA_property_identifier(PropertyRNA *prop); +const char *RNA_property_description(PropertyRNA *prop); -LIBEXPORT PropertyType RNA_property_type(PropertyRNA *prop); -LIBEXPORT PropertySubType RNA_property_subtype(PropertyRNA *prop); -LIBEXPORT PropertyUnit RNA_property_unit(PropertyRNA *prop); -LIBEXPORT int RNA_property_flag(PropertyRNA *prop); +PropertyType RNA_property_type(PropertyRNA *prop); +PropertySubType RNA_property_subtype(PropertyRNA *prop); +PropertyUnit RNA_property_unit(PropertyRNA *prop); +int RNA_property_flag(PropertyRNA *prop); void *RNA_property_py_data_get(PropertyRNA *prop); -LIBEXPORT int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_array_check(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension); -LIBEXPORT int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[]); -LIBEXPORT char RNA_property_array_item_char(PropertyRNA *prop, int index); -LIBEXPORT int RNA_property_array_item_index(PropertyRNA *prop, char name); +int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_array_check(PropertyRNA *prop); +int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension); +int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[]); +char RNA_property_array_item_char(PropertyRNA *prop, int index); +int RNA_property_array_item_index(PropertyRNA *prop, char name); -LIBEXPORT int RNA_property_string_maxlength(PropertyRNA *prop); +int RNA_property_string_maxlength(PropertyRNA *prop); -LIBEXPORT const char *RNA_property_ui_name(PropertyRNA *prop); -LIBEXPORT const char *RNA_property_ui_description(PropertyRNA *prop); -LIBEXPORT int RNA_property_ui_icon(PropertyRNA *prop); +const char *RNA_property_ui_name(PropertyRNA *prop); +const char *RNA_property_ui_description(PropertyRNA *prop); +int RNA_property_ui_icon(PropertyRNA *prop); /* Dynamic Property Information */ -LIBEXPORT void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax); -LIBEXPORT void RNA_property_int_ui_range(PointerRNA *ptr, PropertyRNA *prop, int *softmin, int *softmax, int *step); +void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax); +void RNA_property_int_ui_range(PointerRNA *ptr, PropertyRNA *prop, int *softmin, int *softmax, int *step); -LIBEXPORT void RNA_property_float_range(PointerRNA *ptr, PropertyRNA *prop, float *hardmin, float *hardmax); -LIBEXPORT void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *softmin, float *softmax, float *step, float *precision); +void RNA_property_float_range(PointerRNA *ptr, PropertyRNA *prop, float *hardmin, float *hardmax); +void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *softmin, float *softmax, float *step, float *precision); -LIBEXPORT int RNA_property_float_clamp(PointerRNA *ptr, PropertyRNA *prop, float *value); -LIBEXPORT int RNA_property_int_clamp(PointerRNA *ptr, PropertyRNA *prop, int *value); +int RNA_property_float_clamp(PointerRNA *ptr, PropertyRNA *prop, float *value); +int RNA_property_int_clamp(PointerRNA *ptr, PropertyRNA *prop, int *value); -LIBEXPORT int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **identifier); -LIBEXPORT int RNA_enum_bitflag_identifiers(EnumPropertyItem *item, const int value, const char **identifier); -LIBEXPORT int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name); -LIBEXPORT int RNA_enum_description(EnumPropertyItem *item, const int value, const char **description); +int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **identifier); +int RNA_enum_bitflag_identifiers(EnumPropertyItem *item, const int value, const char **identifier); +int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name); +int RNA_enum_description(EnumPropertyItem *item, const int value, const char **description); -LIBEXPORT void RNA_property_enum_items(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free); -LIBEXPORT int RNA_property_enum_value(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value); -LIBEXPORT int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier); -LIBEXPORT int RNA_property_enum_name(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name); -LIBEXPORT int RNA_property_enum_bitflag_identifiers(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier); +void RNA_property_enum_items(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free); +int RNA_property_enum_value(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value); +int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier); +int RNA_property_enum_name(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name); +int RNA_property_enum_bitflag_identifiers(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier); -LIBEXPORT StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_pointer_poll(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *value); +StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_pointer_poll(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *value); -LIBEXPORT int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index); -LIBEXPORT int RNA_property_editable_flag(PointerRNA *ptr, PropertyRNA *prop); /* without lib check, only checks the flag */ -LIBEXPORT int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_path_from_ID_check(PointerRNA *ptr, PropertyRNA *prop); /* slow, use with care */ +int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index); +int RNA_property_editable_flag(PointerRNA *ptr, PropertyRNA *prop); /* without lib check, only checks the flag */ +int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_path_from_ID_check(PointerRNA *ptr, PropertyRNA *prop); /* slow, use with care */ -LIBEXPORT void RNA_property_update(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_update_main(struct Main *bmain, struct Scene *scene, PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_update_check(struct PropertyRNA *prop); +void RNA_property_update(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_update_main(struct Main *bmain, struct Scene *scene, PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_update_check(struct PropertyRNA *prop); /* Property Data */ -LIBEXPORT int RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, int value); -LIBEXPORT void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values); -LIBEXPORT int RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); -LIBEXPORT void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values); -LIBEXPORT void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value); -LIBEXPORT int RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values); -LIBEXPORT int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); +int RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, int value); +void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values); +int RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); +void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values); +void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value); +int RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values); +int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); -LIBEXPORT int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value); -LIBEXPORT void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values); -LIBEXPORT void RNA_property_int_get_array_range(PointerRNA *ptr, PropertyRNA *prop, int values[2]); -LIBEXPORT int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); -LIBEXPORT void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values); -LIBEXPORT void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value); -LIBEXPORT int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values); -LIBEXPORT int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); +int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value); +void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values); +void RNA_property_int_get_array_range(PointerRNA *ptr, PropertyRNA *prop, int values[2]); +int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); +void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values); +void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value); +int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values); +int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); -LIBEXPORT float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value); -LIBEXPORT void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values); -LIBEXPORT void RNA_property_float_get_array_range(PointerRNA *ptr, PropertyRNA *prop, float values[2]); -LIBEXPORT float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); -LIBEXPORT void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values); -LIBEXPORT void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, float value); -LIBEXPORT float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values); -LIBEXPORT float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); +float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value); +void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values); +void RNA_property_float_get_array_range(PointerRNA *ptr, PropertyRNA *prop, float values[2]); +float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); +void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values); +void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, float value); +float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values); +float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); -LIBEXPORT void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value); -LIBEXPORT char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen); -LIBEXPORT void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value); -LIBEXPORT int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_string_get_default(PointerRNA *ptr, PropertyRNA *prop, char *value); -LIBEXPORT char *RNA_property_string_get_default_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen); -LIBEXPORT int RNA_property_string_default_length(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value); +char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen); +void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value); +int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_string_get_default(PointerRNA *ptr, PropertyRNA *prop, char *value); +char *RNA_property_string_get_default_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen); +int RNA_property_string_default_length(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value); -LIBEXPORT int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value); +int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop); void *RNA_property_enum_py_data_get(PropertyRNA *prop); -LIBEXPORT PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value); -LIBEXPORT PointerRNA RNA_property_pointer_get_default(PointerRNA *ptr, PropertyRNA *prop); +PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value); +PointerRNA RNA_property_pointer_get_default(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_collection_begin(PointerRNA *ptr, PropertyRNA *prop, CollectionPropertyIterator *iter); -LIBEXPORT void RNA_property_collection_next(CollectionPropertyIterator *iter); -LIBEXPORT void RNA_property_collection_end(CollectionPropertyIterator *iter); -LIBEXPORT int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_collection_lookup_index(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *t_ptr); -LIBEXPORT int RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_ptr); -LIBEXPORT int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr); -LIBEXPORT int RNA_property_collection_type_get(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr); +void RNA_property_collection_begin(PointerRNA *ptr, PropertyRNA *prop, CollectionPropertyIterator *iter); +void RNA_property_collection_next(CollectionPropertyIterator *iter); +void RNA_property_collection_end(CollectionPropertyIterator *iter); +int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_collection_lookup_index(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *t_ptr); +int RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_ptr); +int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr); +int RNA_property_collection_type_get(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr); /* efficient functions to set properties for arrays */ -LIBEXPORT int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, RawArray *array); -LIBEXPORT int RNA_property_collection_raw_get(struct ReportList *reports, PointerRNA *ptr, PropertyRNA *prop, const char *propname, void *array, RawPropertyType type, int len); -LIBEXPORT int RNA_property_collection_raw_set(struct ReportList *reports, PointerRNA *ptr, PropertyRNA *prop, const char *propname, void *array, RawPropertyType type, int len); -LIBEXPORT int RNA_raw_type_sizeof(RawPropertyType type); +int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, RawArray *array); +int RNA_property_collection_raw_get(struct ReportList *reports, PointerRNA *ptr, PropertyRNA *prop, const char *propname, void *array, RawPropertyType type, int len); +int RNA_property_collection_raw_set(struct ReportList *reports, PointerRNA *ptr, PropertyRNA *prop, const char *propname, void *array, RawPropertyType type, int len); +int RNA_raw_type_sizeof(RawPropertyType type); RawPropertyType RNA_property_raw_type(PropertyRNA *prop); /* to create ID property groups */ -LIBEXPORT void RNA_property_pointer_add(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_pointer_remove(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr); -LIBEXPORT int RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key); -LIBEXPORT void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT int RNA_property_collection_move(PointerRNA *ptr, PropertyRNA *prop, int key, int pos); +void RNA_property_pointer_add(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_pointer_remove(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr); +int RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key); +void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_collection_move(PointerRNA *ptr, PropertyRNA *prop, int key, int pos); /* copy/reset */ -LIBEXPORT int RNA_property_copy(PointerRNA *ptr, PointerRNA *fromptr, PropertyRNA *prop, int index); -LIBEXPORT int RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index); +int RNA_property_copy(PointerRNA *ptr, PointerRNA *fromptr, PropertyRNA *prop, int index); +int RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index); /* Path * @@ -790,18 +791,18 @@ LIBEXPORT int RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index); * particular pointers, which is useful in a number of applications, like * UI code or Actions, though efficiency is a concern. */ -LIBEXPORT char *RNA_path_append(const char *path, PointerRNA *ptr, PropertyRNA *prop, +char *RNA_path_append(const char *path, PointerRNA *ptr, PropertyRNA *prop, int intkey, const char *strkey); -LIBEXPORT char *RNA_path_back(const char *path); +char *RNA_path_back(const char *path); -LIBEXPORT int RNA_path_resolve(PointerRNA *ptr, const char *path, +int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop); -LIBEXPORT int RNA_path_resolve_full(PointerRNA *ptr, const char *path, +int RNA_path_resolve_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *index); -LIBEXPORT char *RNA_path_from_ID_to_struct(PointerRNA *ptr); -LIBEXPORT char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop); +char *RNA_path_from_ID_to_struct(PointerRNA *ptr); +char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop); /* Quick name based property access * @@ -812,48 +813,48 @@ LIBEXPORT char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop) * There is no support for pointers and collections here yet, these can be * added when ID properties support them. */ -LIBEXPORT int RNA_boolean_get(PointerRNA *ptr, const char *name); -LIBEXPORT void RNA_boolean_set(PointerRNA *ptr, const char *name, int value); -LIBEXPORT void RNA_boolean_get_array(PointerRNA *ptr, const char *name, int *values); -LIBEXPORT void RNA_boolean_set_array(PointerRNA *ptr, const char *name, const int *values); +int RNA_boolean_get(PointerRNA *ptr, const char *name); +void RNA_boolean_set(PointerRNA *ptr, const char *name, int value); +void RNA_boolean_get_array(PointerRNA *ptr, const char *name, int *values); +void RNA_boolean_set_array(PointerRNA *ptr, const char *name, const int *values); -LIBEXPORT int RNA_int_get(PointerRNA *ptr, const char *name); -LIBEXPORT void RNA_int_set(PointerRNA *ptr, const char *name, int value); -LIBEXPORT void RNA_int_get_array(PointerRNA *ptr, const char *name, int *values); -LIBEXPORT void RNA_int_set_array(PointerRNA *ptr, const char *name, const int *values); +int RNA_int_get(PointerRNA *ptr, const char *name); +void RNA_int_set(PointerRNA *ptr, const char *name, int value); +void RNA_int_get_array(PointerRNA *ptr, const char *name, int *values); +void RNA_int_set_array(PointerRNA *ptr, const char *name, const int *values); -LIBEXPORT float RNA_float_get(PointerRNA *ptr, const char *name); -LIBEXPORT void RNA_float_set(PointerRNA *ptr, const char *name, float value); -LIBEXPORT void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values); -LIBEXPORT void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values); +float RNA_float_get(PointerRNA *ptr, const char *name); +void RNA_float_set(PointerRNA *ptr, const char *name, float value); +void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values); +void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values); -LIBEXPORT int RNA_enum_get(PointerRNA *ptr, const char *name); -LIBEXPORT void RNA_enum_set(PointerRNA *ptr, const char *name, int value); -LIBEXPORT void RNA_enum_set_identifier(PointerRNA *ptr, const char *name, const char *id); -LIBEXPORT int RNA_enum_is_equal(struct bContext *C, PointerRNA *ptr, const char *name, const char *enumname); +int RNA_enum_get(PointerRNA *ptr, const char *name); +void RNA_enum_set(PointerRNA *ptr, const char *name, int value); +void RNA_enum_set_identifier(PointerRNA *ptr, const char *name, const char *id); +int RNA_enum_is_equal(struct bContext *C, PointerRNA *ptr, const char *name, const char *enumname); /* lower level functions that don't use a PointerRNA */ -LIBEXPORT int RNA_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value); -LIBEXPORT int RNA_enum_id_from_value(EnumPropertyItem *item, int value, const char **identifier); -LIBEXPORT int RNA_enum_icon_from_value(EnumPropertyItem *item, int value, int *icon); +int RNA_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value); +int RNA_enum_id_from_value(EnumPropertyItem *item, int value, const char **identifier); +int RNA_enum_icon_from_value(EnumPropertyItem *item, int value, int *icon); -LIBEXPORT void RNA_string_get(PointerRNA *ptr, const char *name, char *value); -LIBEXPORT char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen); -LIBEXPORT int RNA_string_length(PointerRNA *ptr, const char *name); -LIBEXPORT void RNA_string_set(PointerRNA *ptr, const char *name, const char *value); +void RNA_string_get(PointerRNA *ptr, const char *name, char *value); +char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen); +int RNA_string_length(PointerRNA *ptr, const char *name); +void RNA_string_set(PointerRNA *ptr, const char *name, const char *value); /** * Retrieve the named property from PointerRNA. */ -LIBEXPORT PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name); +PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name); /* Set the property name of PointerRNA ptr to ptr_value */ -LIBEXPORT void RNA_pointer_set(PointerRNA *ptr, const char *name, PointerRNA ptr_value); -LIBEXPORT void RNA_pointer_add(PointerRNA *ptr, const char *name); +void RNA_pointer_set(PointerRNA *ptr, const char *name, PointerRNA ptr_value); +void RNA_pointer_add(PointerRNA *ptr, const char *name); -LIBEXPORT void RNA_collection_begin(PointerRNA *ptr, const char *name, CollectionPropertyIterator *iter); -LIBEXPORT int RNA_collection_length(PointerRNA *ptr, const char *name); -LIBEXPORT void RNA_collection_add(PointerRNA *ptr, const char *name, PointerRNA *r_value); -LIBEXPORT void RNA_collection_clear(PointerRNA *ptr, const char *name); +void RNA_collection_begin(PointerRNA *ptr, const char *name, CollectionPropertyIterator *iter); +int RNA_collection_length(PointerRNA *ptr, const char *name); +void RNA_collection_add(PointerRNA *ptr, const char *name, PointerRNA *r_value); +void RNA_collection_clear(PointerRNA *ptr, const char *name); #define RNA_BEGIN(sptr, itemptr, propname) \ { \ @@ -889,65 +890,65 @@ LIBEXPORT void RNA_collection_clear(PointerRNA *ptr, const char *name); } /* check if the idproperty exists, for operators */ -LIBEXPORT int RNA_property_is_set(PointerRNA *ptr, const char *name); -LIBEXPORT int RNA_property_is_idprop(PropertyRNA *prop); +int RNA_property_is_set(PointerRNA *ptr, const char *name); +int RNA_property_is_idprop(PropertyRNA *prop); /* python compatible string representation of this property, (must be freed!) */ -LIBEXPORT char *RNA_property_as_string(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop); -LIBEXPORT char *RNA_pointer_as_string(struct bContext *C, PointerRNA *ptr); +char *RNA_property_as_string(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop); +char *RNA_pointer_as_string(struct bContext *C, PointerRNA *ptr); /* Function */ -LIBEXPORT const char *RNA_function_identifier(FunctionRNA *func); -LIBEXPORT const char *RNA_function_ui_description(FunctionRNA *func); -LIBEXPORT int RNA_function_flag(FunctionRNA *func); -LIBEXPORT int RNA_function_defined(FunctionRNA *func); +const char *RNA_function_identifier(FunctionRNA *func); +const char *RNA_function_ui_description(FunctionRNA *func); +int RNA_function_flag(FunctionRNA *func); +int RNA_function_defined(FunctionRNA *func); -LIBEXPORT PropertyRNA *RNA_function_get_parameter(PointerRNA *ptr, FunctionRNA *func, int index); -LIBEXPORT PropertyRNA *RNA_function_find_parameter(PointerRNA *ptr, FunctionRNA *func, const char *identifier); -LIBEXPORT const struct ListBase *RNA_function_defined_parameters(FunctionRNA *func); +PropertyRNA *RNA_function_get_parameter(PointerRNA *ptr, FunctionRNA *func, int index); +PropertyRNA *RNA_function_find_parameter(PointerRNA *ptr, FunctionRNA *func, const char *identifier); +const struct ListBase *RNA_function_defined_parameters(FunctionRNA *func); /* Utility */ -LIBEXPORT ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, FunctionRNA *func); -LIBEXPORT void RNA_parameter_list_free(ParameterList *parms); -LIBEXPORT int RNA_parameter_list_size(ParameterList *parms); -LIBEXPORT int RNA_parameter_list_arg_count(ParameterList *parms); -LIBEXPORT int RNA_parameter_list_ret_count(ParameterList *parms); +ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, FunctionRNA *func); +void RNA_parameter_list_free(ParameterList *parms); +int RNA_parameter_list_size(ParameterList *parms); +int RNA_parameter_list_arg_count(ParameterList *parms); +int RNA_parameter_list_ret_count(ParameterList *parms); -LIBEXPORT void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter); -LIBEXPORT void RNA_parameter_list_next(ParameterIterator *iter); -LIBEXPORT void RNA_parameter_list_end(ParameterIterator *iter); +void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter); +void RNA_parameter_list_next(ParameterIterator *iter); +void RNA_parameter_list_end(ParameterIterator *iter); -LIBEXPORT void RNA_parameter_get(ParameterList *parms, PropertyRNA *parm, void **value); -LIBEXPORT void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **value); -LIBEXPORT void RNA_parameter_set(ParameterList *parms, PropertyRNA *parm, const void *value); -LIBEXPORT void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value); -LIBEXPORT int RNA_parameter_length_get(ParameterList *parms, PropertyRNA *parm); -LIBEXPORT int RNA_parameter_length_get_data(ParameterList *parms, PropertyRNA *parm, void *data); -LIBEXPORT void RNA_parameter_length_set(ParameterList *parms, PropertyRNA *parm, int length); -LIBEXPORT void RNA_parameter_length_set_data(ParameterList *parms, PropertyRNA *parm, void *data, int length); +void RNA_parameter_get(ParameterList *parms, PropertyRNA *parm, void **value); +void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **value); +void RNA_parameter_set(ParameterList *parms, PropertyRNA *parm, const void *value); +void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value); +int RNA_parameter_length_get(ParameterList *parms, PropertyRNA *parm); +int RNA_parameter_length_get_data(ParameterList *parms, PropertyRNA *parm, void *data); +void RNA_parameter_length_set(ParameterList *parms, PropertyRNA *parm, int length); +void RNA_parameter_length_set_data(ParameterList *parms, PropertyRNA *parm, void *data, int length); -LIBEXPORT int RNA_function_call(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, FunctionRNA *func, ParameterList *parms); -LIBEXPORT int RNA_function_call_lookup(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, const char *identifier, ParameterList *parms); +int RNA_function_call(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, FunctionRNA *func, ParameterList *parms); +int RNA_function_call_lookup(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, const char *identifier, ParameterList *parms); -LIBEXPORT int RNA_function_call_direct(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, FunctionRNA *func, const char *format, ...) +int RNA_function_call_direct(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, FunctionRNA *func, const char *format, ...) #ifdef __GNUC__ __attribute__ ((format (printf, 5, 6))) #endif ; -LIBEXPORT int RNA_function_call_direct_lookup(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, const char *identifier, const char *format, ...) +int RNA_function_call_direct_lookup(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, const char *identifier, const char *format, ...) #ifdef __GNUC__ __attribute__ ((format (printf, 5, 6))) #endif ; -LIBEXPORT int RNA_function_call_direct_va(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, FunctionRNA *func, const char *format, va_list args); -LIBEXPORT int RNA_function_call_direct_va_lookup(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, const char *identifier, const char *format, va_list args); +int RNA_function_call_direct_va(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, FunctionRNA *func, const char *format, va_list args); +int RNA_function_call_direct_va_lookup(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, const char *identifier, const char *format, va_list args); /* ID */ -LIBEXPORT short RNA_type_to_ID_code(StructRNA *type); -LIBEXPORT StructRNA *ID_code_to_RNA_type(short idcode); +short RNA_type_to_ID_code(StructRNA *type); +StructRNA *ID_code_to_RNA_type(short idcode); void RNA_warning(const char *format, ...) #ifdef __GNUC__ diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index 3053a1c33bc..f8199074f27 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -36,18 +36,6 @@ extern "C" { #endif -#ifndef LIBEXPORT -#ifdef _WIN32 -#ifdef BLENDER_PLUGIN -#define LIBEXPORT __declspec(dllimport) -#else -#define LIBEXPORT __declspec(dllexport) -#endif -#else -#define LIBEXPORT -#endif -#endif - struct ParameterList; struct FunctionRNA; struct PropertyRNA; @@ -293,7 +281,7 @@ typedef struct ParameterList { typedef struct ParameterIterator { struct ParameterList *parms; - PointerRNA funcptr; + /* PointerRNA funcptr; */ /*UNUSED*/ void *data; int size, offset; diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 0ebe73dfe36..7da538e171b 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -516,7 +516,7 @@ static char *rna_def_property_get_func(FILE *f, StructRNA *srna, PropertyRNA *pr switch(prop->type) { case PROP_STRING: { StringPropertyRNA *sprop= (StringPropertyRNA*)prop; - fprintf(f, "LIBEXPORT void %s(PointerRNA *ptr, char *value)\n", func); + fprintf(f, "void %s(PointerRNA *ptr, char *value)\n", func); fprintf(f, "{\n"); if(manualfunc) { fprintf(f, " %s(ptr, value);\n", manualfunc); @@ -532,7 +532,7 @@ static char *rna_def_property_get_func(FILE *f, StructRNA *srna, PropertyRNA *pr break; } case PROP_POINTER: { - fprintf(f, "LIBEXPORT PointerRNA %s(PointerRNA *ptr)\n", func); + fprintf(f, "PointerRNA %s(PointerRNA *ptr)\n", func); fprintf(f, "{\n"); if(manualfunc) { fprintf(f, " return %s(ptr);\n", manualfunc); @@ -567,9 +567,9 @@ static char *rna_def_property_get_func(FILE *f, StructRNA *srna, PropertyRNA *pr default: if(prop->arraydimension) { if(prop->flag & PROP_DYNAMIC) - fprintf(f, "LIBEXPORT void %s(PointerRNA *ptr, %s values[])\n", func, rna_type_type(prop)); + fprintf(f, "void %s(PointerRNA *ptr, %s values[])\n", func, rna_type_type(prop)); else - fprintf(f, "LIBEXPORT void %s(PointerRNA *ptr, %s values[%d])\n", func, rna_type_type(prop), prop->totarraylength); + fprintf(f, "void %s(PointerRNA *ptr, %s values[%d])\n", func, rna_type_type(prop), prop->totarraylength); fprintf(f, "{\n"); if(manualfunc) { @@ -614,7 +614,7 @@ static char *rna_def_property_get_func(FILE *f, StructRNA *srna, PropertyRNA *pr fprintf(f, "}\n\n"); } else { - fprintf(f, "LIBEXPORT %s %s(PointerRNA *ptr)\n", rna_type_type(prop), func); + fprintf(f, "%s %s(PointerRNA *ptr)\n", rna_type_type(prop), func); fprintf(f, "{\n"); if(manualfunc) { @@ -728,7 +728,7 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr switch(prop->type) { case PROP_STRING: { StringPropertyRNA *sprop= (StringPropertyRNA*)prop; - fprintf(f, "LIBEXPORT void %s(PointerRNA *ptr, const char *value)\n", func); + fprintf(f, "void %s(PointerRNA *ptr, const char *value)\n", func); fprintf(f, "{\n"); if(manualfunc) { fprintf(f, " %s(ptr, value);\n", manualfunc); @@ -744,7 +744,7 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr break; } case PROP_POINTER: { - fprintf(f, "LIBEXPORT void %s(PointerRNA *ptr, PointerRNA value)\n", func); + fprintf(f, "void %s(PointerRNA *ptr, PointerRNA value)\n", func); fprintf(f, "{\n"); if(manualfunc) { fprintf(f, " %s(ptr, value);\n", manualfunc); @@ -781,9 +781,9 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr default: if(prop->arraydimension) { if(prop->flag & PROP_DYNAMIC) - fprintf(f, "LIBEXPORT void %s(PointerRNA *ptr, const %s values[])\n", func, rna_type_type(prop)); + fprintf(f, "void %s(PointerRNA *ptr, const %s values[])\n", func, rna_type_type(prop)); else - fprintf(f, "LIBEXPORT void %s(PointerRNA *ptr, const %s values[%d])\n", func, rna_type_type(prop), prop->totarraylength); + fprintf(f, "void %s(PointerRNA *ptr, const %s values[%d])\n", func, rna_type_type(prop), prop->totarraylength); fprintf(f, "{\n"); if(manualfunc) { @@ -841,7 +841,7 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr fprintf(f, "}\n\n"); } else { - fprintf(f, "LIBEXPORT void %s(PointerRNA *ptr, %s value)\n", func, rna_type_type(prop)); + fprintf(f, "void %s(PointerRNA *ptr, %s value)\n", func, rna_type_type(prop)); fprintf(f, "{\n"); if(manualfunc) { @@ -895,7 +895,7 @@ static char *rna_def_property_length_func(FILE *f, StructRNA *srna, PropertyRNA func= rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "length"); - fprintf(f, "LIBEXPORT int %s(PointerRNA *ptr)\n", func); + fprintf(f, "int %s(PointerRNA *ptr)\n", func); fprintf(f, "{\n"); if(manualfunc) { fprintf(f, " return %s(ptr);\n", manualfunc); @@ -917,7 +917,7 @@ static char *rna_def_property_length_func(FILE *f, StructRNA *srna, PropertyRNA func= rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "length"); - fprintf(f, "LIBEXPORT int %s(PointerRNA *ptr)\n", func); + fprintf(f, "int %s(PointerRNA *ptr)\n", func); fprintf(f, "{\n"); if(manualfunc) { fprintf(f, " return %s(ptr);\n", manualfunc); @@ -952,7 +952,7 @@ static char *rna_def_property_begin_func(FILE *f, StructRNA *srna, PropertyRNA * func= rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "begin"); - fprintf(f, "LIBEXPORT void %s(CollectionPropertyIterator *iter, PointerRNA *ptr)\n", func); + fprintf(f, "void %s(CollectionPropertyIterator *iter, PointerRNA *ptr)\n", func); fprintf(f, "{\n"); if(!manualfunc) @@ -1014,7 +1014,7 @@ static char *rna_def_property_lookup_int_func(FILE *f, StructRNA *srna, Property func= rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "lookup_int"); - fprintf(f, "LIBEXPORT int %s(PointerRNA *ptr, int index, PointerRNA *r_ptr)\n", func); + fprintf(f, "int %s(PointerRNA *ptr, int index, PointerRNA *r_ptr)\n", func); fprintf(f, "{\n"); if(manualfunc) { @@ -1105,7 +1105,7 @@ static char *rna_def_property_next_func(FILE *f, StructRNA *srna, PropertyRNA *p func= rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "next"); - fprintf(f, "LIBEXPORT void %s(CollectionPropertyIterator *iter)\n", func); + fprintf(f, "void %s(CollectionPropertyIterator *iter)\n", func); fprintf(f, "{\n"); fprintf(f, " %s(iter);\n", manualfunc); @@ -1128,7 +1128,7 @@ static char *rna_def_property_end_func(FILE *f, StructRNA *srna, PropertyRNA *pr func= rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "end"); - fprintf(f, "LIBEXPORT void %s(CollectionPropertyIterator *iter)\n", func); + fprintf(f, "void %s(CollectionPropertyIterator *iter)\n", func); fprintf(f, "{\n"); if(manualfunc) fprintf(f, " %s(iter);\n", manualfunc); @@ -1320,31 +1320,31 @@ static void rna_def_property_funcs_header(FILE *f, StructRNA *srna, PropertyDefR case PROP_BOOLEAN: case PROP_INT: { if(!prop->arraydimension) { - fprintf(f, "LIBEXPORT int %sget(PointerRNA *ptr);\n", func); - //fprintf(f, "LIBEXPORT void %sset(PointerRNA *ptr, int value);\n", func); + fprintf(f, "int %sget(PointerRNA *ptr);\n", func); + //fprintf(f, "void %sset(PointerRNA *ptr, int value);\n", func); } else if(prop->arraydimension && prop->totarraylength) { - fprintf(f, "LIBEXPORT void %sget(PointerRNA *ptr, int values[%d]);\n", func, prop->totarraylength); - //fprintf(f, "LIBEXPORT void %sset(PointerRNA *ptr, const int values[%d]);\n", func, prop->arraylength); + fprintf(f, "void %sget(PointerRNA *ptr, int values[%d]);\n", func, prop->totarraylength); + //fprintf(f, "void %sset(PointerRNA *ptr, const int values[%d]);\n", func, prop->arraylength); } else { - fprintf(f, "LIBEXPORT void %sget(PointerRNA *ptr, int values[]);\n", func); - //fprintf(f, "LIBEXPORT void %sset(PointerRNA *ptr, const int values[]);\n", func); + fprintf(f, "void %sget(PointerRNA *ptr, int values[]);\n", func); + //fprintf(f, "void %sset(PointerRNA *ptr, const int values[]);\n", func); } break; } case PROP_FLOAT: { if(!prop->arraydimension) { - fprintf(f, "LIBEXPORT float %sget(PointerRNA *ptr);\n", func); - //fprintf(f, "LIBEXPORT void %sset(PointerRNA *ptr, float value);\n", func); + fprintf(f, "float %sget(PointerRNA *ptr);\n", func); + //fprintf(f, "void %sset(PointerRNA *ptr, float value);\n", func); } else if(prop->arraydimension && prop->totarraylength) { - fprintf(f, "LIBEXPORT void %sget(PointerRNA *ptr, float values[%d]);\n", func, prop->totarraylength); - //fprintf(f, "LIBEXPORT void %sset(PointerRNA *ptr, const float values[%d]);\n", func, prop->arraylength); + fprintf(f, "void %sget(PointerRNA *ptr, float values[%d]);\n", func, prop->totarraylength); + //fprintf(f, "void %sset(PointerRNA *ptr, const float values[%d]);\n", func, prop->arraylength); } else { - fprintf(f, "LIBEXPORT void %sget(PointerRNA *ptr, float values[]);\n", func); - //fprintf(f, "LIBEXPORT void %sset(PointerRNA *ptr, const float values[]);\n", func); + fprintf(f, "void %sget(PointerRNA *ptr, float values[]);\n", func); + //fprintf(f, "void %sset(PointerRNA *ptr, const float values[]);\n", func); } break; } @@ -1362,8 +1362,8 @@ static void rna_def_property_funcs_header(FILE *f, StructRNA *srna, PropertyDefR fprintf(f, "};\n\n"); } - fprintf(f, "LIBEXPORT int %sget(PointerRNA *ptr);\n", func); - //fprintf(f, "LIBEXPORT void %sset(PointerRNA *ptr, int value);\n", func); + fprintf(f, "int %sget(PointerRNA *ptr);\n", func); + //fprintf(f, "void %sset(PointerRNA *ptr, int value);\n", func); break; } @@ -1374,24 +1374,24 @@ static void rna_def_property_funcs_header(FILE *f, StructRNA *srna, PropertyDefR fprintf(f, "#define %s_%s_MAX %d\n\n", srna->identifier, prop->identifier, sprop->maxlength); } - fprintf(f, "LIBEXPORT void %sget(PointerRNA *ptr, char *value);\n", func); - fprintf(f, "LIBEXPORT int %slength(PointerRNA *ptr);\n", func); - //fprintf(f, "LIBEXPORT void %sset(PointerRNA *ptr, const char *value);\n", func); + fprintf(f, "void %sget(PointerRNA *ptr, char *value);\n", func); + fprintf(f, "int %slength(PointerRNA *ptr);\n", func); + //fprintf(f, "void %sset(PointerRNA *ptr, const char *value);\n", func); break; } case PROP_POINTER: { - fprintf(f, "LIBEXPORT PointerRNA %sget(PointerRNA *ptr);\n", func); + fprintf(f, "PointerRNA %sget(PointerRNA *ptr);\n", func); //fprintf(f, "void %sset(PointerRNA *ptr, PointerRNA value);\n", func); break; } case PROP_COLLECTION: { - fprintf(f, "LIBEXPORT void %sbegin(CollectionPropertyIterator *iter, PointerRNA *ptr);\n", func); - fprintf(f, "LIBEXPORT void %snext(CollectionPropertyIterator *iter);\n", func); - fprintf(f, "LIBEXPORT void %send(CollectionPropertyIterator *iter);\n", func); - //fprintf(f, "LIBEXPORT int %slength(PointerRNA *ptr);\n", func); - //fprintf(f, "LIBEXPORT void %slookup_int(PointerRNA *ptr, int key, StructRNA **type);\n", func); - //fprintf(f, "LIBEXPORT void %slookup_string(PointerRNA *ptr, const char *key, StructRNA **type);\n", func); + fprintf(f, "void %sbegin(CollectionPropertyIterator *iter, PointerRNA *ptr);\n", func); + fprintf(f, "void %snext(CollectionPropertyIterator *iter);\n", func); + fprintf(f, "void %send(CollectionPropertyIterator *iter);\n", func); + //fprintf(f, "int %slength(PointerRNA *ptr);\n", func); + //fprintf(f, "void %slookup_int(PointerRNA *ptr, int key, StructRNA **type);\n", func); + //fprintf(f, "void %slookup_string(PointerRNA *ptr, const char *key, StructRNA **type);\n", func); break; } } @@ -1862,7 +1862,7 @@ static void rna_generate_prototypes(BlenderRNA *brna, FILE *f) StructRNA *srna; for(srna=brna->structs.first; srna; srna=srna->cont.next) - fprintf(f, "extern LIBEXPORT StructRNA RNA_%s;\n", srna->identifier); + fprintf(f, "extern StructRNA RNA_%s;\n", srna->identifier); fprintf(f, "\n"); } @@ -2336,7 +2336,7 @@ static void rna_generate_struct(BlenderRNA *brna, StructRNA *srna, FILE *f) fprintf(f, "\n"); } - fprintf(f, "LIBEXPORT StructRNA RNA_%s = {\n", srna->identifier); + fprintf(f, "StructRNA RNA_%s = {\n", srna->identifier); if(srna->cont.next) fprintf(f, "\t{(ContainerRNA *)&RNA_%s, ", ((StructRNA*)srna->cont.next)->identifier); else fprintf(f, "\t{NULL, "); @@ -2482,18 +2482,6 @@ static void rna_generate(BlenderRNA *brna, FILE *f, const char *filename, const " Do not edit manually, changes will be overwritten. */\n\n" "#define RNA_RUNTIME\n\n"); - fprintf(f, "#ifndef LIBEXPORT\n"); - fprintf(f, "#ifdef _WIN32\n"); - fprintf(f, "#ifdef BLENDER_PLUGIN\n"); - fprintf(f, "#define LIBEXPORT __declspec(dllimport)\n"); - fprintf(f, "#else\n"); - fprintf(f, "#define LIBEXPORT __declspec(dllexport)\n"); - fprintf(f, "#endif\n"); - fprintf(f, "#else\n"); - fprintf(f, "#define LIBEXPORT\n"); - fprintf(f, "#endif\n"); - fprintf(f, "#endif\n"); - fprintf(f, "#include \n"); fprintf(f, "#include \n"); fprintf(f, "#include \n"); @@ -2570,12 +2558,6 @@ static void rna_generate_header(BlenderRNA *brna, FILE *f) fprintf(f, "/* Automatically generated function declarations for the Data API.\n" " Do not edit manually, changes will be overwritten. */\n\n"); - fprintf(f, "#ifdef _WIN32\n"); - fprintf(f, "#define LIBEXPORT __declspec(dllimport)\n"); - fprintf(f, "#else\n"); - fprintf(f, "#define LIBEXPORT\n"); - fprintf(f, "#endif\n\n"); - fprintf(f, "#include \"RNA_types.h\"\n\n"); fprintf(f, "#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"); @@ -2597,7 +2579,7 @@ static void rna_generate_header(BlenderRNA *brna, FILE *f) fprintf(f, "/**************** %s ****************/\n\n", srna->name); while(srna) { - fprintf(f, "extern LIBEXPORT StructRNA RNA_%s;\n", srna->identifier); + fprintf(f, "extern StructRNA RNA_%s;\n", srna->identifier); srna= srna->base; } fprintf(f, "\n"); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 4e4bb46669b..88447f6dd77 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -62,7 +62,7 @@ #include "rna_internal.h" -LIBEXPORT const PointerRNA PointerRNA_NULL= {{NULL}}; +const PointerRNA PointerRNA_NULL= {{NULL}}; /* Init/Exit */ @@ -288,7 +288,7 @@ static int rna_ensure_property_array_length(PointerRNA *ptr, PropertyRNA *prop) } } -static int rna_ensure_property_array_check(PointerRNA *UNUSED(ptr), PropertyRNA *prop) +static int rna_ensure_property_array_check(PropertyRNA *prop) { if(prop->magic == RNA_MAGIC) { return (prop->getlength || prop->totarraylength) ? 1:0; @@ -765,9 +765,9 @@ int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop) return rna_ensure_property_array_length(ptr, prop); } -int RNA_property_array_check(PointerRNA *ptr, PropertyRNA *prop) +int RNA_property_array_check(PropertyRNA *prop) { - return rna_ensure_property_array_check(ptr, prop); + return rna_ensure_property_array_check(prop); } /* used by BPY to make an array from the python object */ @@ -1399,6 +1399,7 @@ int RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop) IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) == 0); if((idprop=rna_idproperty_check(&prop, ptr))) return IDP_Int(idprop); @@ -1414,6 +1415,7 @@ void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, int value) IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) == 0); /* just incase other values are passed */ if(value) value= 1; @@ -1440,6 +1442,7 @@ void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, int *val IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) != 0); if((idprop=rna_idproperty_check(&prop, ptr))) { if(prop->arraydimension == 0) @@ -1463,6 +1466,7 @@ int RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index int len= rna_ensure_property_array_length(ptr, prop); BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) != 0); if(len <= RNA_MAX_ARRAY_LENGTH) { RNA_property_boolean_get_array(ptr, prop, tmp); @@ -1486,6 +1490,7 @@ void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const in IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) != 0); if((idprop=rna_idproperty_check(&prop, ptr))) { if(prop->arraydimension == 0) @@ -1519,6 +1524,7 @@ void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int inde int len= rna_ensure_property_array_length(ptr, prop); BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) != 0); if(len <= RNA_MAX_ARRAY_LENGTH) { RNA_property_boolean_get_array(ptr, prop, tmp); @@ -1541,6 +1547,7 @@ int RNA_property_boolean_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop) BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop; BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) == 0); return bprop->defaultvalue; } @@ -1550,6 +1557,7 @@ void RNA_property_boolean_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop; BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) != 0); if(prop->arraydimension == 0) values[0]= bprop->defaultvalue; @@ -1565,6 +1573,7 @@ int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, i int len= rna_ensure_property_array_length(ptr, prop); BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN); + BLI_assert(RNA_property_array_check(prop) != 0); if(len <= RNA_MAX_ARRAY_LENGTH) { RNA_property_boolean_get_default_array(ptr, prop, tmp); @@ -1588,6 +1597,7 @@ int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop) IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_INT); + BLI_assert(RNA_property_array_check(prop) == 0); if((idprop=rna_idproperty_check(&prop, ptr))) return IDP_Int(idprop); @@ -1603,6 +1613,7 @@ void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value) IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_INT); + BLI_assert(RNA_property_array_check(prop) == 0); /* useful to check on bad values but set function should clamp */ /* BLI_assert(RNA_property_int_clamp(ptr, prop, &value) == 0); */ @@ -1628,6 +1639,7 @@ void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values) IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_INT); + BLI_assert(RNA_property_array_check(prop) != 0); if((idprop=rna_idproperty_check(&prop, ptr))) { if(prop->arraydimension == 0) @@ -1688,6 +1700,7 @@ int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index) int len= rna_ensure_property_array_length(ptr, prop); BLI_assert(RNA_property_type(prop) == PROP_INT); + BLI_assert(RNA_property_array_check(prop) != 0); if(len <= RNA_MAX_ARRAY_LENGTH) { RNA_property_int_get_array(ptr, prop, tmp); @@ -1711,6 +1724,7 @@ void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *v IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_INT); + BLI_assert(RNA_property_array_check(prop) != 0); if((idprop=rna_idproperty_check(&prop, ptr))) { if(prop->arraydimension == 0) @@ -1744,6 +1758,7 @@ void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, i int len= rna_ensure_property_array_length(ptr, prop); BLI_assert(RNA_property_type(prop) == PROP_INT); + BLI_assert(RNA_property_array_check(prop) != 0); if(len <= RNA_MAX_ARRAY_LENGTH) { RNA_property_int_get_array(ptr, prop, tmp); @@ -1772,6 +1787,7 @@ void RNA_property_int_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA *pr IntPropertyRNA *iprop= (IntPropertyRNA*)prop; BLI_assert(RNA_property_type(prop) == PROP_INT); + BLI_assert(RNA_property_array_check(prop) != 0); if(prop->arraydimension == 0) values[0]= iprop->defaultvalue; @@ -1808,6 +1824,7 @@ float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop) IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) == 0); if((idprop=rna_idproperty_check(&prop, ptr))) { if(idprop->type == IDP_FLOAT) @@ -1827,6 +1844,7 @@ void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value) IDProperty *idprop; BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) == 0); /* useful to check on bad values but set function should clamp */ /* BLI_assert(RNA_property_float_clamp(ptr, prop, &value) == 0); */ @@ -1858,6 +1876,7 @@ void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *val int i; BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) != 0); if((idprop=rna_idproperty_check(&prop, ptr))) { if(prop->arraydimension == 0) @@ -1923,6 +1942,7 @@ float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index int len= rna_ensure_property_array_length(ptr, prop); BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) != 0); if(len <= RNA_MAX_ARRAY_LENGTH) { RNA_property_float_get_array(ptr, prop, tmp); @@ -1948,6 +1968,7 @@ void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const floa int i; BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) != 0); if((idprop=rna_idproperty_check(&prop, ptr))) { if(prop->arraydimension == 0) { @@ -1991,6 +2012,7 @@ void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int len= rna_ensure_property_array_length(ptr, prop); BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) != 0); if(len <= RNA_MAX_ARRAY_LENGTH) { RNA_property_float_get_array(ptr, prop, tmp); @@ -2013,6 +2035,7 @@ float RNA_property_float_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop) FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop; BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) == 0); return fprop->defaultvalue; } @@ -2022,6 +2045,7 @@ void RNA_property_float_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA * FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop; BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) != 0); if(prop->arraydimension == 0) values[0]= fprop->defaultvalue; @@ -2037,6 +2061,7 @@ float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, i int len= rna_ensure_property_array_length(ptr, prop); BLI_assert(RNA_property_type(prop) == PROP_FLOAT); + BLI_assert(RNA_property_array_check(prop) != 0); if(len <= RNA_MAX_ARRAY_LENGTH) { RNA_property_float_get_default_array(ptr, prop, tmp); @@ -4484,7 +4509,8 @@ int RNA_parameter_list_ret_count(ParameterList *parms) void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter) { - RNA_pointer_create(NULL, &RNA_Function, parms->func, &iter->funcptr); + /* may be useful but unused now */ + /* RNA_pointer_create(NULL, &RNA_Function, parms->func, &iter->funcptr); */ /*UNUSED*/ iter->parms= parms; iter->parm= parms->func->cont.properties.first; diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 0163dd5db32..8127c180706 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -85,7 +85,7 @@ static EnumPropertyItem target_space_pchan_items[] = { static EnumPropertyItem owner_space_pchan_items[] = { {0, "WORLD", 0, "World Space", "The constraint is applied relative to the world coordinate system"}, {2, "POSE", 0, "Pose Space", "The constraint is applied in Pose Space, the object transformation is ignored"}, - {3, "LOCAL_WITH_PARENT", 0, "The constraint is applied relative to the local coordinate system of the object, with the parent transformation added"}, + {3, "LOCAL_WITH_PARENT", 0, "Local With Parent", "The constraint is applied relative to the local coordinate system of the object, with the parent transformation added"}, {1, "LOCAL", 0, "Local Space", "The constraint is applied relative to the local coordinate sytem of the object"}, {0, NULL, 0, NULL, NULL}}; diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 260d483b9d2..599d36ec8b8 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -651,7 +651,7 @@ static char *rna_TextBox_path(PointerRNA *ptr) int index= (int)(tb - cu->tb); if (index >= 0 && index < cu->totbox) - return BLI_sprintfN("textboxes[%d]", index); + return BLI_sprintfN("text_boxes[%d]", index); else return BLI_strdup(""); } diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index d20033a5967..c0ae7b02b1a 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -30,12 +30,6 @@ #ifndef RNA_INTERNAL_H #define RNA_INTERNAL_H -#ifdef _WIN32 -#define LIBEXPORT __declspec(dllexport) -#else -#define LIBEXPORT -#endif - #include "UI_resources.h" #include "rna_internal_types.h" @@ -307,8 +301,8 @@ extern CollectionPropertyRNA rna_PropertyGroupItem_idp_array; extern FloatPropertyRNA rna_PropertyGroupItem_double; extern FloatPropertyRNA rna_PropertyGroupItem_double_array; -extern LIBEXPORT StructRNA RNA_PropertyGroupItem; -extern LIBEXPORT StructRNA RNA_PropertyGroup; +extern StructRNA RNA_PropertyGroupItem; +extern StructRNA RNA_PropertyGroup; struct IDProperty *rna_idproperty_check(struct PropertyRNA **prop, struct PointerRNA *ptr); diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 7d6e1dd0567..05665ea077a 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -232,7 +232,7 @@ Mesh *rna_Main_meshes_new(Main *UNUSED(bmain), const char *name) id_us_min(&me->id); return me; } -LIBEXPORT void rna_Main_meshes_remove(Main *bmain, ReportList *reports, Mesh *mesh) +void rna_Main_meshes_remove(Main *bmain, ReportList *reports, Mesh *mesh) { if(ID_REAL_USERS(mesh) <= 0) free_libblock(&bmain->mesh, mesh); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index ba655915fb6..5c5391b0bba 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -2265,6 +2265,13 @@ static void rna_def_modifier_solidify(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Thickness", "Thickness of the shell"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + prop= RNA_def_property(srna, "thickness_vertex_group", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "offset_fac_vg"); + RNA_def_property_range(prop, 0.0, 1.0); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); + RNA_def_property_ui_text(prop, "Vertex Group Factor", "Thickness factor to use for zero vertex group influence"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "offset_fac"); RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 76bbfcbed41..55e1119f58e 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -2025,7 +2025,14 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Input Matrix", "Matrix access to location, rotation and scale (including deltas), before constraints and parenting are applied."); RNA_def_property_float_funcs(prop, "rna_Object_matrix_basis_get", "rna_Object_matrix_basis_set", NULL); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); - + + /*parent_inverse*/ + prop= RNA_def_property(srna, "matrix_parent_inverse", PROP_FLOAT, PROP_MATRIX); + RNA_def_property_float_sdna(prop, NULL, "parentinv"); + RNA_def_property_multi_array(prop, 2, rna_matrix_dimsize_4x4); + RNA_def_property_ui_text(prop, "Matrix", "Inverse of object's parent matrix at time of parenting"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); + /* collections */ prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "Constraint"); diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index b99b5f3dc26..53c71c42f7c 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -78,7 +78,7 @@ /* copied from Mesh_getFromObject and adapted to RNA interface */ /* settings: 0 - preview, 1 - render */ -LIBEXPORT Mesh *rna_Object_to_mesh(Object *ob, ReportList *reports, Scene *sce, int apply_modifiers, int settings) +Mesh *rna_Object_to_mesh(Object *ob, ReportList *reports, Scene *sce, int apply_modifiers, int settings) { Mesh *tmpmesh; Curve *tmpcu = NULL; @@ -286,7 +286,7 @@ static void dupli_render_particle_set(Scene *scene, Object *ob, int level, int e dupli_render_particle_set(scene, go->ob, level+1, enable); } /* When no longer needed, duplilist should be freed with Object.free_duplilist */ -LIBEXPORT void rna_Object_create_duplilist(Object *ob, ReportList *reports, Scene *sce) +void rna_Object_create_duplilist(Object *ob, ReportList *reports, Scene *sce) { if (!(ob->transflag & OB_DUPLI)) { BKE_report(reports, RPT_ERROR, "Object does not have duplis."); @@ -308,7 +308,7 @@ LIBEXPORT void rna_Object_create_duplilist(Object *ob, ReportList *reports, Scen /* ob->duplilist should now be freed with Object.free_duplilist */ } -LIBEXPORT void rna_Object_free_duplilist(Object *ob) +void rna_Object_free_duplilist(Object *ob) { if (ob->duplilist) { free_object_duplilist(ob->duplilist); @@ -457,7 +457,7 @@ void rna_ObjectBase_layers_from_view(Base *base, View3D *v3d) base->lay= base->object->lay= v3d->lay; } -LIBEXPORT int rna_Object_is_modified(Object *ob, Scene *scene, int settings) +int rna_Object_is_modified(Object *ob, Scene *scene, int settings) { return object_is_modified(scene, ob) & settings; } diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index a0744a5b6a0..4337f3c4de6 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -50,12 +50,12 @@ #include "BKE_context.h" #include "BKE_report.h" -LIBEXPORT void engine_tag_redraw(RenderEngine *engine) +void engine_tag_redraw(RenderEngine *engine) { engine->do_draw = 1; } -LIBEXPORT void engine_tag_update(RenderEngine *engine) +void engine_tag_update(RenderEngine *engine) { engine->do_update = 1; } @@ -263,7 +263,7 @@ static void rna_RenderLayer_rect_get(PointerRNA *ptr, float *values) memcpy(values, rl->rectf, sizeof(float)*rl->rectx*rl->recty*4); } -LIBEXPORT void rna_RenderLayer_rect_set(PointerRNA *ptr, const float *values) +void rna_RenderLayer_rect_set(PointerRNA *ptr, const float *values) { RenderLayer *rl= (RenderLayer*)ptr->data; memcpy(rl->rectf, values, sizeof(float)*rl->rectx*rl->recty*4); @@ -285,7 +285,7 @@ static void rna_RenderPass_rect_get(PointerRNA *ptr, float *values) memcpy(values, rpass->rect, sizeof(float)*rpass->rectx*rpass->recty*rpass->channels); } -LIBEXPORT void rna_RenderPass_rect_set(PointerRNA *ptr, const float *values) +void rna_RenderPass_rect_set(PointerRNA *ptr, const float *values) { RenderPass *rpass= (RenderPass*)ptr->data; memcpy(rpass->rect, values, sizeof(float)*rpass->rectx*rpass->recty*rpass->channels); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 57044188dd9..a685c6deb34 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2769,7 +2769,7 @@ static void rna_def_userdef_input(BlenderRNA *brna) prop= RNA_def_property(srna, "ndof_orbit_invert_axes", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ndof_flag", NDOF_ORBIT_INVERT_AXES); RNA_def_property_ui_text(prop, "Invert Axes", "Toggle between moving the viewpoint or moving the scene being viewed"); - /* in 3Dx docs, this is called 'object mode' vs. 'target camera mode' + /* in 3Dx docs, this is called 'object mode' vs. 'target camera mode' */ /* 3D view: fly */ prop= RNA_def_property(srna, "ndof_lock_horizon", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 307cf0e175a..93adf808f83 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -1746,6 +1746,7 @@ static void rna_def_keyconfig(BlenderRNA *brna) RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", KMI_INACTIVE); RNA_def_property_ui_text(prop, "Active", "Activate or deactivate item"); RNA_def_property_ui_icon(prop, ICON_CHECKBOX_DEHLT, 1); + RNA_def_property_update(prop, 0, "rna_KeyMapItem_update"); prop= RNA_def_property(srna, "is_user_modified", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_USER_MODIFIED); diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c index 0b1fac06e14..afe6da8b38a 100644 --- a/source/blender/modifiers/intern/MOD_solidify.c +++ b/source/blender/modifiers/intern/MOD_solidify.c @@ -232,8 +232,10 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, float (*vert_nors)[3]= NULL; - float const ofs_orig= - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset); - float const ofs_new= smd->offset - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset); + const float ofs_orig= - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset); + const float ofs_new= smd->offset - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset); + const float offset_fac_vg= smd->offset_fac_vg; + const float offset_fac_vg_inv= 1.0f - smd->offset_fac_vg; /* weights */ MDeformVert *dvert, *dv= NULL; @@ -391,8 +393,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, dv= dvert; for(i=0; ico, mv->co, mv->no, scalar_short_vgroup); @@ -405,8 +408,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, dv= dvert; for(i=0; ico, mv->co, mv->no, scalar_short_vgroup); @@ -466,15 +470,21 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, /* vertex group support */ if(dvert) { + float scalar; + dv= dvert; if(defgrp_invert) { for(i=0; inext) { + + for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) { + wmOperatorType *ot= BLI_ghashIterator_getValue(iter); + name= PyUnicode_FromString(ot->idname); PyList_Append(list, name); Py_DECREF(name); } - + BLI_ghashIterator_free(iter); + return list; } diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 4447a0476f4..ba8145c2773 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -856,7 +856,7 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self) if(type==PROP_COLLECTION) { len= pyrna_prop_collection_length(self); } - else if (RNA_property_array_check(&self->ptr, self->prop)) { + else if (RNA_property_array_check(self->prop)) { len= pyrna_prop_array_length((BPy_PropertyArrayRNA *)self); } @@ -1224,7 +1224,7 @@ PyObject *pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop) PyObject *ret; int type= RNA_property_type(prop); - if (RNA_property_array_check(ptr, prop)) { + if (RNA_property_array_check(prop)) { return pyrna_py_from_array(ptr, prop); } @@ -1369,7 +1369,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb int type= RNA_property_type(prop); - if (RNA_property_array_check(ptr, prop)) { + if (RNA_property_array_check(prop)) { /* done getting the length */ if(pyrna_py_to_array(ptr, prop, data, value, error_prefix) == -1) { return -1; @@ -4088,7 +4088,7 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat int type= RNA_property_type(prop); int flag= RNA_property_flag(prop); - if(RNA_property_array_check(ptr, prop)) { + if(RNA_property_array_check(prop)) { int a, len; if (flag & PROP_DYNAMIC) { @@ -5519,7 +5519,7 @@ PyObject *pyrna_prop_CreatePyObject(PointerRNA *ptr, PropertyRNA *prop) { BPy_PropertyRNA *pyrna; - if (RNA_property_array_check(ptr, prop) == 0) { + if (RNA_property_array_check(prop) == 0) { PyTypeObject *type; if (RNA_property_type(prop) != PROP_COLLECTION) { diff --git a/source/blender/python/intern/bpy_rna_anim.c b/source/blender/python/intern/bpy_rna_anim.c index 30d83e196ba..8bde1db96ca 100644 --- a/source/blender/python/intern/bpy_rna_anim.c +++ b/source/blender/python/intern/bpy_rna_anim.c @@ -107,7 +107,7 @@ static int pyrna_struct_anim_args_parse(PointerRNA *ptr, const char *error_prefi return -1; } - if(RNA_property_array_check(&r_ptr, prop) == 0) { + if(RNA_property_array_check(prop) == 0) { if((*index) == -1) { *index= 0; } diff --git a/source/blender/python/intern/bpy_rna_array.c b/source/blender/python/intern/bpy_rna_array.c index 9843a57e0f2..e50ce233671 100644 --- a/source/blender/python/intern/bpy_rna_array.c +++ b/source/blender/python/intern/bpy_rna_array.c @@ -285,17 +285,20 @@ static char *copy_values(PyObject *seq, PointerRNA *ptr, PropertyRNA *prop, int int totdim= RNA_property_array_dimension(ptr, prop, NULL); const int seq_size= PySequence_Size(seq); - /* General note for 'data' being NULL or PySequence_GetItem() failing. + /* Regarding PySequence_GetItem() failing. * * This should never be NULL since we validated it, _but_ some triky python * developer could write their own sequence type which succeeds on - * validating but fails later somehow, so include checks for safety. */ + * validating but fails later somehow, so include checks for safety. + */ + + /* Note that 'data can be NULL' */ if(seq_size == -1) { return NULL; } - for (i= 0; (i < seq_size) && data; i++) { + for (i= 0; i < seq_size; i++) { PyObject *item= PySequence_GetItem(seq, i); if(item) { if (dim + 1 < totdim) { diff --git a/source/blender/python/mathutils/mathutils_Vector.c b/source/blender/python/mathutils/mathutils_Vector.c index a954c07c98d..56c1334ecac 100644 --- a/source/blender/python/mathutils/mathutils_Vector.c +++ b/source/blender/python/mathutils/mathutils_Vector.c @@ -37,8 +37,6 @@ #include "BLI_math.h" #include "BLI_utildefines.h" -extern void PyC_LineSpit(void); - #define MAX_DIMENSIONS 4 /* Swizzle axes get packed into a single value that is used as a closure. Each @@ -1161,28 +1159,18 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2) } else if (vec1) { if (MatrixObject_Check(v2)) { - extern void PyC_LineSpit(void); - - /* VEC * MATRIX */ - /* this is deprecated!, use the reverse instead */ - float tvec[MAX_DIMENSIONS]; - /* ------ to be removed ------*/ -#ifndef MATH_STANDALONE -#ifdef WITH_ASSERT_ABORT +#if 1 PyErr_SetString(PyExc_ValueError, "(Vector * Matrix) is now removed, reverse the " "order (promoted to an Error for Debug builds)"); return NULL; #else - printf("Warning: (Vector * Matrix) is now deprecated, " - "reverse the multiplication order in the script.\n"); - PyC_LineSpit(); -#endif -#endif /* ifndef MATH_STANDALONE */ -/* ------ to be removed ------*/ + /* VEC * MATRIX */ + /* this is deprecated!, use the reverse instead */ + float tvec[MAX_DIMENSIONS]; if(BaseMath_ReadCallback((MatrixObject *)v2) == -1) return NULL; @@ -1191,9 +1179,18 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2) } return newVectorObject(tvec, vec1->size, Py_NEW, Py_TYPE(vec1)); +#endif +/* ------ to be removed ------*/ } else if (QuaternionObject_Check(v2)) { /* VEC * QUAT */ +/* ------ to be removed ------*/ +#if 1 + PyErr_SetString(PyExc_ValueError, + "(Vector * Quat) is now removed, reverse the " + "order (promoted to an Error for Debug builds)"); + return NULL; +#else QuaternionObject *quat2 = (QuaternionObject*)v2; float tvec[3]; @@ -1207,26 +1204,11 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2) return NULL; } - -/* ------ to be removed ------*/ -#ifndef MATH_STANDALONE -#ifdef WITH_ASSERT_ABORT - PyErr_SetString(PyExc_ValueError, - "(Vector * Quat) is now removed, reverse the " - "order (promoted to an Error for Debug builds)"); - return NULL; -#else - printf("Warning: (Vector * Quat) is now deprecated, " - "reverse the multiplication order in the script.\n"); - PyC_LineSpit(); -#endif -#endif /* ifndef MATH_STANDALONE */ -/* ------ to be removed ------*/ - - copy_v3_v3(tvec, vec1->vec); mul_qt_v3(quat2->quat, tvec); return newVectorObject(tvec, 3, Py_NEW, Py_TYPE(vec1)); +#endif +/* ------ to be removed ------*/ } else if (((scalar= PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred())==0) { /* VEC * FLOAT */ return vector_mul_float(vec1, scalar); @@ -1260,6 +1242,14 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2) /* only support vec*=float and vec*=mat vec*=vec result is a float so that wont work */ if (MatrixObject_Check(v2)) { +/* ------ to be removed ------*/ +#if 1 + PyErr_SetString(PyExc_ValueError, + "(Vector *= Matrix) is now removed, reverse the " + "order (promoted to an Error for Debug builds) " + "and uses the non in-place multiplication."); + return NULL; +#else float rvec[MAX_DIMENSIONS]; if(BaseMath_ReadCallback((MatrixObject *)v2) == -1) return NULL; @@ -1267,28 +1257,21 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2) if(column_vector_multiplication(rvec, vec, (MatrixObject*)v2) == -1) return NULL; - -/* ------ to be removed ------*/ -#ifndef MATH_STANDALONE -#ifdef WITH_ASSERT_ABORT - PyErr_SetString(PyExc_ValueError, - "(Vector *= Matrix) is now removed, reverse the " - "order (promoted to an Error for Debug builds) " - "and uses the non in-place multiplication."); - return NULL; -#else - printf("Warning: (Vector *= Matrix) is now deprecated, " - "reverse the (non in-place) multiplication order in the script.\n"); - PyC_LineSpit(); -#endif -#endif /* ifndef MATH_STANDALONE */ -/* ------ to be removed ------*/ - - memcpy(vec->vec, rvec, sizeof(float) * vec->size); +#endif +/* ------ to be removed ------*/ } else if (QuaternionObject_Check(v2)) { /* VEC *= QUAT */ + +/* ------ to be removed ------*/ +#if 1 + PyErr_SetString(PyExc_ValueError, + "(Vector *= Quat) is now removed, reverse the " + "order (promoted to an Error for Debug builds) " + "and uses the non in-place multiplication."); + return NULL; +#else QuaternionObject *quat2 = (QuaternionObject*)v2; if(vec->size != 3) { @@ -1302,25 +1285,9 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2) return NULL; } - -/* ------ to be removed ------*/ -#ifndef MATH_STANDALONE -#ifdef WITH_ASSERT_ABORT - PyErr_SetString(PyExc_ValueError, - "(Vector *= Quat) is now removed, reverse the " - "order (promoted to an Error for Debug builds) " - "and uses the non in-place multiplication."); - return NULL; -#else - printf("Warning: (Vector *= Quat) is now deprecated, " - "reverse the (non in-place) multiplication order in the script.\n"); - PyC_LineSpit(); -#endif -#endif /* ifndef MATH_STANDALONE */ -/* ------ to be removed ------*/ - - mul_qt_v3(quat2->quat, vec->vec); +#endif +/* ------ to be removed ------*/ } else if (((scalar= PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred())==0) { /* VEC *= FLOAT */ mul_vn_fl(vec->vec, vec->size, scalar); @@ -1728,6 +1695,21 @@ static int Vector_setLength(VectorObject *self, PyObject *value) return 0; } +/* vector.length_squared */ +static PyObject *Vector_getLengthSquared(VectorObject *self, void *UNUSED(closure)) +{ + double dot = 0.0f; + int i; + + if(BaseMath_ReadCallback(self) == -1) + return NULL; + + for(i = 0; i < self->size; i++){ + dot += (double)(self->vec[i] * self->vec[i]); + } + return PyFloat_FromDouble(dot); +} + /* Get a new Vector according to the provided swizzle. This function has little error checking, as we are in control of the inputs: the closure is set by us in Vector_createSwizzleGetSeter. */ @@ -1851,6 +1833,7 @@ static PyGetSetDef Vector_getseters[] = { {(char *)"z", (getter)Vector_getAxis, (setter)Vector_setAxis, (char *)"Vector Z axis (3D Vectors only).\n\n:type: float", (void *)2}, {(char *)"w", (getter)Vector_getAxis, (setter)Vector_setAxis, (char *)"Vector W axis (4D Vectors only).\n\n:type: float", (void *)3}, {(char *)"length", (getter)Vector_getLength, (setter)Vector_setLength, (char *)"Vector Length.\n\n:type: float", NULL}, + {(char *)"length_squared", (getter)Vector_getLengthSquared, (setter)NULL, (char *)"Vector length squared (v.dot(v)).\n\n:type: float", NULL}, {(char *)"magnitude", (getter)Vector_getLength, (setter)Vector_setLength, (char *)"Vector Length.\n\n:type: float", NULL}, {(char *)"is_wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, (char *)BaseMathObject_Wrapped_doc, NULL}, {(char *)"owner", (getter)BaseMathObject_getOwner, (setter)NULL, (char *)BaseMathObject_Owner_doc, NULL}, diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index 2b0ee81fcde..f7a927ec5db 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -93,14 +93,14 @@ void RE_engine_free(RenderEngine *engine); void RE_layer_load_from_file(struct RenderLayer *layer, struct ReportList *reports, const char *filename, int x, int y); void RE_result_load_from_file(struct RenderResult *result, struct ReportList *reports, const char *filename); -LIBEXPORT struct RenderResult *RE_engine_begin_result(RenderEngine *engine, int x, int y, int w, int h); -LIBEXPORT void RE_engine_update_result(RenderEngine *engine, struct RenderResult *result); -LIBEXPORT void RE_engine_end_result(RenderEngine *engine, struct RenderResult *result); +struct RenderResult *RE_engine_begin_result(RenderEngine *engine, int x, int y, int w, int h); +void RE_engine_update_result(RenderEngine *engine, struct RenderResult *result); +void RE_engine_end_result(RenderEngine *engine, struct RenderResult *result); -LIBEXPORT int RE_engine_test_break(RenderEngine *engine); -LIBEXPORT void RE_engine_update_stats(RenderEngine *engine, const char *stats, const char *info); -LIBEXPORT void RE_engine_update_progress(RenderEngine *engine, float progress); -LIBEXPORT void RE_engine_report(RenderEngine *engine, int type, const char *msg); +int RE_engine_test_break(RenderEngine *engine); +void RE_engine_update_stats(RenderEngine *engine, const char *stats, const char *info); +void RE_engine_update_progress(RenderEngine *engine, float progress); +void RE_engine_report(RenderEngine *engine, int type, const char *msg); int RE_engine_render(struct Render *re, int do_all); diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index 34d3adcf15b..d62f411a7c5 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -1679,7 +1679,7 @@ static void ray_trace_shadow_tra(Isect *is, ShadeInput *origshi, int depth, int /* not used, test function for ambient occlusion (yaf: pathlight) */ /* main problem; has to be called within shading loop, giving unwanted recursion */ -static int ray_trace_shadow_rad(ShadeInput *ship, ShadeResult *shr) +static int UNUSED_FUNCTION(ray_trace_shadow_rad)(ShadeInput *ship, ShadeResult *shr) { static int counter=0, only_one= 0; extern float hashvectf[]; diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index 20ac3ba7077..dc83e29b497 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -67,6 +67,7 @@ set(SRC intern/wm_window.c WM_api.h + WM_keymap.h WM_types.h wm.h wm_cursors.h diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 42c3096dfc9..e1b8cefca4b 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -179,7 +179,7 @@ void WM_operator_free (struct wmOperator *op); void WM_operator_stack_clear(struct wmWindowManager *wm); struct wmOperatorType *WM_operatortype_find(const char *idnamem, int quiet); -struct wmOperatorType *WM_operatortype_first(void); +struct GHashIterator *WM_operatortype_iter(void); void WM_operatortype_append (void (*opfunc)(struct wmOperatorType*)); void WM_operatortype_append_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata); void WM_operatortype_append_macro_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata); @@ -222,6 +222,7 @@ wmOperator *WM_operator_last_redo(const struct bContext *C); #define WM_FILESEL_DIRECTORY (1 << 1) #define WM_FILESEL_FILENAME (1 << 2) #define WM_FILESEL_FILEPATH (1 << 3) +#define WM_FILESEL_FILES (1 << 4) /* operator as a python command (resultuing string must be free'd) */ @@ -230,6 +231,7 @@ void WM_operator_bl_idname(char *to, const char *from); void WM_operator_py_idname(char *to, const char *from); /* *************** menu types ******************** */ +void WM_menutype_init(void); struct MenuType *WM_menutype_find(const char *idname, int quiet); int WM_menutype_add(struct MenuType* mt); int WM_menutype_contains(struct MenuType* mt); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 7fd52e89a5f..cc3ae3ab753 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -389,8 +389,14 @@ typedef struct wmNDOFMotionData { /* awfully similar to GHOST_TEventNDOFMotionData... */ // Each component normally ranges from -1 to +1, but can exceed that. // These use blender standard view coordinates, with positive rotations being CCW about the axis. - float tvec[3]; // translation - float rvec[3]; // rotation: + union { + float tvec[3]; // translation + struct { float tx, ty, tz; }; + }; + union { + float rvec[3]; // rotation: + struct { float rx, ry, rz; }; + }; // axis = (rx,ry,rz).normalized // amount = (rx,ry,rz).magnitude [in revolutions, 1.0 = 360 deg] float dt; // time since previous NDOF Motion event @@ -417,8 +423,6 @@ typedef struct wmTimer { typedef struct wmOperatorType { - struct wmOperatorType *next, *prev; - const char *name; /* text for ui, undo */ const char *idname; /* unique identifier */ const char *description; /* tooltips and python docs */ diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index 1d5cf1cdc53..9299b50103c 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -40,7 +40,11 @@ #include "GHOST_C-api.h" +#include "MEM_guardedalloc.h" + +#include "BLI_utildefines.h" #include "BLI_blenlib.h" +#include "BLI_ghash.h" #include "BKE_blender.h" #include "BKE_context.h" @@ -59,8 +63,6 @@ #include "wm_draw.h" #include "wm.h" -#include "MEM_guardedalloc.h" - #include "ED_screen.h" #ifdef WITH_PYTHON @@ -151,14 +153,14 @@ void WM_operator_stack_clear(wmWindowManager *wm) /* ****************************************** */ -static ListBase menutypes = {NULL, NULL}; /* global menutype list */ +static GHash *menutypes_hash= NULL; MenuType *WM_menutype_find(const char *idname, int quiet) { MenuType* mt; if (idname[0]) { - mt= BLI_findstring(&menutypes, idname, offsetof(MenuType, idname)); + mt= BLI_ghash_lookup(menutypes_hash, idname); if(mt) return mt; } @@ -171,35 +173,55 @@ MenuType *WM_menutype_find(const char *idname, int quiet) int WM_menutype_add(MenuType* mt) { - BLI_addtail(&menutypes, mt); + BLI_ghash_insert(menutypes_hash, (void *)mt->idname, mt); return 1; } /* inefficient but only used for tooltip code */ int WM_menutype_contains(MenuType* mt) { - return (mt != NULL && BLI_findindex(&menutypes, mt) != -1); + int found= FALSE; + + if(mt) { + GHashIterator *iter= BLI_ghashIterator_new(menutypes_hash); + + for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) { + if(mt == BLI_ghashIterator_getValue(iter)) { + found= TRUE; + break; + } + } + BLI_ghashIterator_free(iter); + } + + return found; } void WM_menutype_freelink(MenuType* mt) { - BLI_freelinkN(&menutypes, mt); + BLI_ghash_remove(menutypes_hash, mt->idname, NULL, (GHashValFreeFP)MEM_freeN); +} + +/* called on initialize WM_init() */ +void WM_menutype_init(void) +{ + menutypes_hash= BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp, "menutypes_hash gh"); } void WM_menutype_free(void) { - MenuType* mt= menutypes.first, *mt_next; + GHashIterator *iter= BLI_ghashIterator_new(menutypes_hash); - while(mt) { - mt_next= mt->next; - - if(mt->ext.free) + for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) { + MenuType *mt= BLI_ghashIterator_getValue(iter); + if(mt->ext.free) { mt->ext.free(mt->ext.data); - - WM_menutype_freelink(mt); - - mt= mt_next; + } } + BLI_ghashIterator_free(iter); + + BLI_ghash_free(menutypes_hash, NULL, (GHashValFreeFP)MEM_freeN); + menutypes_hash= NULL; } /* ****************************************** */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 5baaf6b4eb2..a96cc8cf957 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -2335,29 +2335,32 @@ static void attach_ndof_data(wmEvent* event, const GHOST_TEventNDOFMotionData* g const float s = U.ndof_sensitivity; - data->tvec[0]= s * ghost->tx; + data->tx = s * ghost->tx; - data->rvec[0]= s * ghost->rx; - data->rvec[1]= s * ghost->ry; - data->rvec[2]= s * ghost->rz; + data->rx = s * ghost->rx; + data->ry = s * ghost->ry; + data->rz = s * ghost->rz; if (U.ndof_flag & NDOF_ZOOM_UPDOWN) { - // rotate so Y is where Z was (maintain handed-ness) - data->tvec[1]= s * ghost->tz; - data->tvec[2]= s * -ghost->ty; + /* rotate so Y is where Z was */ + data->ty = s * ghost->tz; + data->tz = s * ghost->ty; + /* maintain handed-ness? or just do what feels right? */ - // should this affect rotation also? - // initial guess is 'yes', but get user feedback immediately! -#if 0 // after turning this on, my guess becomes 'no' - data->rvec[1]= s * ghost->rz; - data->rvec[2]= s * ghost->ry; + /* should this affect rotation also? + * initial guess is 'yes', but get user feedback immediately! + */ +#if 0 + /* after turning this on, my guess becomes 'no' */ + data->ry = s * ghost->rz; + data->rz = s * ghost->ry; #endif } else { - data->tvec[1]= s * ghost->ty; - data->tvec[2]= s * ghost->tz; + data->ty = s * ghost->ty; + data->tz = s * ghost->tz; } data->dt = ghost->dt; diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 20f9d2237c2..6b3a574b6b6 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -450,7 +450,7 @@ void WM_read_file(bContext *C, const char *filepath, ReportList *reports) /* called on startup, (context entirely filled with NULLs) */ /* or called for 'New File' */ /* op can be NULL */ -int WM_read_homefile(bContext *C, ReportList *reports, short from_memory) +int WM_read_homefile(bContext *C, ReportList *UNUSED(reports), short from_memory) { ListBase wmbase; char tstr[FILE_MAXDIR+FILE_MAXFILE]; @@ -466,7 +466,6 @@ int WM_read_homefile(bContext *C, ReportList *reports, short from_memory) } else { tstr[0] = '\0'; from_memory = 1; - BKE_report(reports, RPT_INFO, "Config directory with "STRINGIFY(BLENDER_STARTUP_FILE)" file not found."); } } diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 6f8b455e835..66adbdaa681 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -128,7 +128,8 @@ void WM_init(bContext *C, int argc, const char **argv) } GHOST_CreateSystemPaths(); wm_operatortype_init(); - + WM_menutype_init(); + set_free_windowmanager_cb(wm_close_and_free); /* library.c */ set_blender_test_break_cb(wm_window_testbreak); /* blender.c */ DAG_editors_update_cb(ED_render_id_flush_update); /* depsgraph.c */ diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 2fb0a1b2ab9..6887aa4c717 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -106,6 +106,9 @@ static int wm_keymap_item_equals_result(wmKeyMapItem *a, wmKeyMapItem *b) (a->ptr && b->ptr && IDP_EqualsProperties(a->ptr->data, b->ptr->data)))) return 0; + if((a->flag & KMI_INACTIVE) != (b->flag & KMI_INACTIVE)) + return 0; + return (a->propvalue == b->propvalue); } @@ -1009,7 +1012,8 @@ void WM_keyconfig_update(wmWindowManager *wm) addonmap= WM_keymap_list_find(&wm->addonconf->keymaps, km->idname, km->spaceid, km->regionid); /* diff */ - wm_keymap_diff_update(&U.user_keymaps, defaultmap, addonmap, km); + if(defaultmap) + wm_keymap_diff_update(&U.user_keymaps, defaultmap, addonmap, km); } } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index cea2d6b3fe5..1beb5b3dda3 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -58,6 +58,7 @@ #include "BLI_math.h" #include "BLI_string.h" #include "BLI_utildefines.h" +#include "BLI_ghash.h" #include "BLO_readfile.h" @@ -100,7 +101,7 @@ #include "wm_subwindow.h" #include "wm_window.h" -static ListBase global_ops= {NULL, NULL}; +static GHash *global_ops_hash= NULL; /* ************ operator API, exported ********** */ @@ -113,7 +114,7 @@ wmOperatorType *WM_operatortype_find(const char *idname, int quiet) WM_operator_bl_idname(idname_bl, idname); if (idname_bl[0]) { - ot= (wmOperatorType *)BLI_findstring_ptr(&global_ops, idname_bl, offsetof(wmOperatorType, idname)); + ot= BLI_ghash_lookup(global_ops_hash, idname_bl); if(ot) { return ot; } @@ -125,9 +126,10 @@ wmOperatorType *WM_operatortype_find(const char *idname, int quiet) return NULL; } -wmOperatorType *WM_operatortype_first(void) +/* caller must free */ +GHashIterator *WM_operatortype_iter(void) { - return global_ops.first; + return BLI_ghashIterator_new(global_ops_hash); } /* all ops in 1 list (for time being... needs evaluation later) */ @@ -147,7 +149,8 @@ void WM_operatortype_append(void (*opfunc)(wmOperatorType*)) RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:"(undocumented operator)"); // XXX All ops should have a description but for now allow them not to. RNA_def_struct_identifier(ot->srna, ot->idname); - BLI_addtail(&global_ops, ot); + + BLI_ghash_insert(global_ops_hash, (void *)ot->idname, ot); } void WM_operatortype_append_ptr(void (*opfunc)(wmOperatorType*, void*), void *userdata) @@ -159,7 +162,8 @@ void WM_operatortype_append_ptr(void (*opfunc)(wmOperatorType*, void*), void *us opfunc(ot, userdata); RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:"(undocumented operator)"); RNA_def_struct_identifier(ot->srna, ot->idname); - BLI_addtail(&global_ops, ot); + + BLI_ghash_insert(global_ops_hash, (void *)ot->idname, ot); } /* ********************* macro operator ******************** */ @@ -351,7 +355,7 @@ wmOperatorType *WM_operatortype_append_macro(const char *idname, const char *nam RNA_def_struct_ui_text(ot->srna, ot->name, ot->description); // XXX All ops should have a description but for now allow them not to. RNA_def_struct_identifier(ot->srna, ot->idname); - BLI_addtail(&global_ops, ot); + BLI_ghash_insert(global_ops_hash, (void *)ot->idname, ot); return ot; } @@ -378,7 +382,7 @@ void WM_operatortype_append_macro_ptr(void (*opfunc)(wmOperatorType*, void*), vo RNA_def_struct_ui_text(ot->srna, ot->name, ot->description); RNA_def_struct_identifier(ot->srna, ot->idname); - BLI_addtail(&global_ops, ot); + BLI_ghash_insert(global_ops_hash, (void *)ot->idname, ot); } wmOperatorTypeMacro *WM_operatortype_macro_define(wmOperatorType *ot, const char *idname) @@ -426,14 +430,14 @@ int WM_operatortype_remove(const char *idname) if (ot==NULL) return 0; - BLI_remlink(&global_ops, ot); RNA_struct_free(&BLENDER_RNA, ot->srna); if(ot->macro.first) wm_operatortype_free_macro(ot); - - MEM_freeN(ot); + BLI_ghash_remove(global_ops_hash, (void *)ot->idname, NULL, NULL); + + MEM_freeN(ot); return 1; } @@ -807,6 +811,9 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, if(flag & WM_FILESEL_FILENAME) RNA_def_string_file_name(ot->srna, "filename", "", FILE_MAX, "File Name", "Name of the file"); + if(flag & WM_FILESEL_FILES) + RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); + if (action == FILE_SAVE) { prop= RNA_def_boolean(ot->srna, "check_existing", 1, "Check Existing", "Check and warn on overwriting existing files"); RNA_def_property_flag(prop, PROP_HIDDEN); @@ -1247,7 +1254,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar col = uiLayoutColumn(split, 0); uiItemL(col, "Links", ICON_NONE); uiItemStringO(col, "Donations", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/blenderorg/blender-foundation/donation-payment/"); - uiItemStringO(col, "Release Log", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/release-logs/blender-258/"); + uiItemStringO(col, "Release Log", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/release-logs/blender-259/"); uiItemStringO(col, "Manual", ICON_URL, "WM_OT_url_open", "url", "http://wiki.blender.org/index.php/Doc:2.5/Manual"); uiItemStringO(col, "Blender Website", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/"); uiItemStringO(col, "User Community", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/community/user-community/"); // @@ -1311,9 +1318,10 @@ static void operator_call_cb(struct bContext *C, void *UNUSED(arg1), void *arg2) static void operator_search_cb(const struct bContext *C, void *UNUSED(arg), const char *str, uiSearchItems *items) { - wmOperatorType *ot = WM_operatortype_first(); - - for(; ot; ot= ot->next) { + GHashIterator *iter= WM_operatortype_iter(); + + for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) { + wmOperatorType *ot= BLI_ghashIterator_getValue(iter); if((ot->flag & OPTYPE_INTERNAL) && (G.f & G_DEBUG) == 0) continue; @@ -1337,6 +1345,7 @@ static void operator_search_cb(const struct bContext *C, void *UNUSED(arg), cons } } } + BLI_ghashIterator_free(iter); } static uiBlock *wm_block_search_menu(bContext *C, ARegion *ar, void *UNUSED(arg_op)) @@ -1742,14 +1751,12 @@ static void WM_OT_link_append(wmOperatorType *ot) ot->flag |= OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_DIRECTORY|WM_FILESEL_FILENAME| WM_FILESEL_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_DIRECTORY|WM_FILESEL_FILENAME| WM_FILESEL_RELPATH|WM_FILESEL_FILES); RNA_def_boolean(ot->srna, "link", 1, "Link", "Link the objects or datablocks rather than appending"); RNA_def_boolean(ot->srna, "autoselect", 1, "Select", "Select the linked objects"); RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer"); RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup"); - - RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); } /* *************** recover last session **************** */ @@ -2003,8 +2010,6 @@ static void WM_OT_save_mainfile(wmOperatorType *ot) static int wm_collada_export_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) { - int selected = 0; - if(!RNA_property_is_set(op->ptr, "filepath")) { char filepath[FILE_MAX]; BLI_strncpy(filepath, G.main->name, sizeof(filepath)); @@ -3457,26 +3462,31 @@ static void WM_OT_ndof_sensitivity_change(wmOperatorType *ot) RNA_def_boolean(ot->srna, "fast", 0, "Fast NDOF sensitivity change", "If true then sensitivity changes 50%, otherwise 10%"); } + +static void operatortype_ghash_free_cb(wmOperatorType *ot) +{ + if(ot->macro.first) + wm_operatortype_free_macro(ot); + + if(ot->ext.srna) /* python operator, allocs own string */ + MEM_freeN((void *)ot->idname); + + MEM_freeN(ot); +} + /* ******************************************************* */ /* called on initialize WM_exit() */ void wm_operatortype_free(void) { - wmOperatorType *ot; - - for(ot= global_ops.first; ot; ot= ot->next) { - if(ot->macro.first) - wm_operatortype_free_macro(ot); - - if(ot->ext.srna) /* python operator, allocs own string */ - MEM_freeN((void *)ot->idname); - } - - BLI_freelistN(&global_ops); + BLI_ghash_free(global_ops_hash, NULL, (GHashValFreeFP)operatortype_ghash_free_cb); + global_ops_hash= NULL; } /* called on initialize WM_init() */ void wm_operatortype_init(void) { + global_ops_hash= BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp, "wm_operatortype_init gh"); + WM_operatortype_append(WM_OT_window_duplicate); WM_operatortype_append(WM_OT_read_homefile); WM_operatortype_append(WM_OT_read_factory_settings); diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c index a87001fb1b4..8ea1f2fdd0a 100644 --- a/source/blender/windowmanager/intern/wm_subwindow.c +++ b/source/blender/windowmanager/intern/wm_subwindow.c @@ -378,7 +378,8 @@ unsigned int index_to_framebuffer(int index) void WM_set_framebuffer_index_color(int index) { - cpack(index_to_framebuffer(index)); + const int col= index_to_framebuffer(index); + cpack(col); } int WM_framebuffer_to_index(unsigned int col) diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index b37f6b0baf2..d8f37aa250c 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -395,7 +395,7 @@ void RE_engine_free(struct RenderEngine *engine) {} /* python */ struct wmOperatorType *WM_operatortype_find(const char *idname, int quiet){return (struct wmOperatorType *) NULL;} -struct wmOperatorType *WM_operatortype_first(){return (struct wmOperatorType *) NULL;} +struct GHashIterator *WM_operatortype_iter(){return (struct GHashIterator *) NULL;} struct wmOperatorType *WM_operatortype_exists(const char *idname){return (struct wmOperatorType *) NULL;} struct wmOperatorTypeMacro *WM_operatortype_macro_define(struct wmOperatorType *ot, const char *idname){return (struct wmOperatorTypeMacro *) NULL;} int WM_operator_call_py(struct bContext *C, struct wmOperatorType *ot, int context, struct PointerRNA *properties, struct ReportList *reports){return 0;} diff --git a/source/gameengine/Ketsji/KX_Light.cpp b/source/gameengine/Ketsji/KX_Light.cpp index 49f00e39110..3f09eee013e 100644 --- a/source/gameengine/Ketsji/KX_Light.cpp +++ b/source/gameengine/Ketsji/KX_Light.cpp @@ -254,8 +254,12 @@ void KX_LightObject::BindShadowBuffer(RAS_IRasterizer *ras, KX_Camera *cam, MT_T cam->NodeUpdateGS(0); /* setup rasterizer transformations */ + /* SetViewMatrix may use stereomode which we temporarily disable here */ + RAS_IRasterizer::StereoMode stereomode = ras->GetStereoMode(); + ras->SetStereoMode(RAS_IRasterizer::RAS_STEREO_NOSTEREO); ras->SetProjectionMatrix(projectionmat); ras->SetViewMatrix(modelviewmat, cam->NodeGetWorldOrientation(), cam->NodeGetWorldPosition(), cam->GetCameraData()->m_perspective); + ras->SetStereoMode(stereomode); } void KX_LightObject::UnbindShadowBuffer(RAS_IRasterizer *ras) diff --git a/source/tests/CMakeLists.txt b/source/tests/CMakeLists.txt index 8fd0d6e7099..3f802642d33 100644 --- a/source/tests/CMakeLists.txt +++ b/source/tests/CMakeLists.txt @@ -111,7 +111,7 @@ add_test(export_obj_all_objects ${TEST_BLENDER_EXE} --run={'FINISHED'}&bpy.ops.export_scene.obj\(filepath='${TEST_OUT_DIR}/export_obj_all_objects.obj',use_selection=False,use_nurbs=True\) --md5_source=${TEST_OUT_DIR}/export_obj_all_objects.obj --md5_source=${TEST_OUT_DIR}/export_obj_all_objects.mtl - --md5=01c123948efadc6a71ab2c09a5925756 --md5_method=FILE + --md5=04b3ed97cede07a19548fc518ce9f8ca --md5_method=FILE ) @@ -196,7 +196,7 @@ add_test(export_x3d_cube ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.x3d\(filepath='${TEST_OUT_DIR}/export_x3d_cube.x3d',use_selection=False\) --md5_source=${TEST_OUT_DIR}/export_x3d_cube.x3d - --md5=5e804c689896116331fa190a9fabbad4 --md5_method=FILE + --md5=2621d8cc2cc1d34f6711c54519907dac --md5_method=FILE ) add_test(export_x3d_nurbs ${TEST_BLENDER_EXE} @@ -204,7 +204,7 @@ add_test(export_x3d_nurbs ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.x3d\(filepath='${TEST_OUT_DIR}/export_x3d_nurbs.x3d',use_selection=False\) --md5_source=${TEST_OUT_DIR}/export_x3d_nurbs.x3d - --md5=2d5bcf43cf7b6fbbef1c8cc566968fe5 --md5_method=FILE + --md5=d56b3736bab063d101d42079bd276f01 --md5_method=FILE ) add_test(export_x3d_all_objects ${TEST_BLENDER_EXE} @@ -212,7 +212,7 @@ add_test(export_x3d_all_objects ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.x3d\(filepath='${TEST_OUT_DIR}/export_x3d_all_objects.x3d',use_selection=False\) --md5_source=${TEST_OUT_DIR}/export_x3d_all_objects.x3d - --md5=2809ec13a4cab55d265ce7525c5db1b7 --md5_method=FILE + --md5=0914c9a7fcdbfc5741c1269497e9068b --md5_method=FILE ) @@ -273,7 +273,7 @@ add_test(export_fbx_cube ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.fbx\(filepath='${TEST_OUT_DIR}/export_fbx_cube.fbx',use_selection=False,use_metadata=False\) --md5_source=${TEST_OUT_DIR}/export_fbx_cube.fbx - --md5=83dca99a0cb338852b8c85951a44c68a --md5_method=FILE + --md5=86da2495dffd7c270e682f599be6b3d1 --md5_method=FILE ) add_test(export_fbx_nurbs ${TEST_BLENDER_EXE} @@ -281,7 +281,7 @@ add_test(export_fbx_nurbs ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.fbx\(filepath='${TEST_OUT_DIR}/export_fbx_nurbs.fbx',use_selection=False,use_metadata=False\) --md5_source=${TEST_OUT_DIR}/export_fbx_nurbs.fbx - --md5=c7d9491ffa6264e820ed1e12df63f871 --md5_method=FILE + --md5=88a263ddb5181e6522dc214debb92ced --md5_method=FILE ) add_test(export_fbx_all_objects ${TEST_BLENDER_EXE} @@ -289,5 +289,5 @@ add_test(export_fbx_all_objects ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.fbx\(filepath='${TEST_OUT_DIR}/export_fbx_all_objects.fbx',use_selection=False,use_metadata=False\) --md5_source=${TEST_OUT_DIR}/export_fbx_all_objects.fbx - --md5=22867f82e1615fd1eae18cfaac8ba035 --md5_method=FILE + --md5=e6f75fe7de9aa366896456e13eafc76a --md5_method=FILE ) diff --git a/source/tests/bl_run_operators.py b/source/tests/bl_run_operators.py index 668b4e69228..b64055df252 100644 --- a/source/tests/bl_run_operators.py +++ b/source/tests/bl_run_operators.py @@ -70,7 +70,7 @@ def run_ops(operators, setup_func=None): setup_func() - for mode in ('EXEC_DEFAULT', 'INVOKE_DEFAULT'): + for mode in {'EXEC_DEFAULT', 'INVOKE_DEFAULT'}: try: op(mode) except: